python基础练习题

时间:2023-02-23 00:07:49
# 利用pip, 安装第三方模块requests, 描述你用什么方法来确认安装是成功的。
print('进入python环境,导入requests模块,导入成功.')

# 把2.918 转化为整形
a = 2.918
print(int(a))

# 把10 进制数 18 转化为2进制数
print(bin(18))

# 用java 替换字符串:”Python is popular” 里面的Python,并 把java 变换成JAVA
print('Python is popular'.replace('Python','java'.upper()))

# 把列表 [1, 2, 3,4 5,6,7,8]里面的2, 4, 6,8 打印出来
list = [1, 2, 3,4,5,6,7,8]
print([x for x in list if x%2==0])

# 创建一个字典,字典的key分别是name, sex, province , 修改原始province 的值 为新值”江苏”
dicts = {'name':'zhangsan', 'sex':'man', 'province':'shanghai'}
dicts['province'] = 'jiangsu'
print(dicts)

Test_str="Python was created in 1989, Python is using in AI, big data, IOT."
#按下列要求对上面文字做出处理。
# • 把上面文字中的所有大写转化为小写
print(Test_str.lower())

# • 把这段话每个单词放到列表里面,不能包含空格。
new_str = Test_str.replace(',','').replace(' ','|')
print(new_str.split('|'))

# • 把列表最中间的一个单词打印出来。
print(new_str[int(len(new_str)/2)])

# 2.List1=[“python”, 5,6, 8], list2=[“python”,”5”, 6, 8,10], 对list1和list2做出如下处理:
# • 把上面2个list的内容合并成一个
List1=["python",5,6,8]
List2=["python","5",6,8,10]
print(List1+List2)

# • 利用set里面的方法,对合并后的list, 去除重复元素。最 后输出是还是list =“python”, 5,6, 8,”5”,10
set1=set(List1+List2).difference()
print(str(set1))

# 实现一个函数,要求对一个列表里面所有数字求和,如果里 面含有非数字的元素。直接跳过。比如[1,2,3] 输出是5, 如果 是[1,2,4,”a”] 输出是7。 并在另外一个包(目录)里面调用这个 函数
def fo(*args):
sum = 0
if len(args)>=1:
for arg in args:
if type(arg) == int:
sum = sum+arg
else:
continue
else:
print("无参数")
print(sum)

fo(1,2,3,'qwe')

# 实现一个不定长参数的函数def flexible(aa, *args, **kwargs):,
# 把传入的参数和值打印出来。比如传入参数是
def flexible(*args, **kwargs):
print(args,kwargs)
flexible(2, 3, x = 4, y = 5, *[1, 2, 3], **{'a':1,'b': 2})
# 输出结果:(2, 3, 1, 2, 3),{'a': 1, 'y': 5, 'b': 2, 'x': 4}

# 面试题:*args, **kwargs 有什么作用
print('*args, **kwargs主要用于将不定长参数传递给函数。*args将传递的参数打包成元组形式, **kwargs将传递的参数打包成字典形式')
 

通过当前时间和函数名生成测试报告名称,随机字符串(大小写字母和数字)生成测试数据

 
import random
import time
import string

def generate_report_name(ext='.html'):
now_time = time.strftime("%Y%m%d_%H%M%S", time.localtime())
method_name = generate_report_name.__name__
report_name = "%s_%s%s" % (method_name, now_time, ext)
return report_name

def generate_random_data(num=6):
base_data = string.ascii_uppercase + string.ascii_lowercase + string.digits
random_data = ''.join(random.SystemRandom().choice(base_data) for _ in range(num))
return random_data

print(generate_report_name())
print(generate_random_data())

----------------------------

 

使用logger设置日志,将日志保存到文件。

 

import os, logging
current_path = os.path.abspath(os.path.dirname(file))
file_path = os.path.join(current_path, "TestLog.txt")
file_name = os.path.basename(file).split('.')[0]

 

time_format = logging.Formatter('[%(asctime)s %(name)s_%(levelname)s] %(message)s')
log_file = logging.FileHandler(file_path)
log_file.setFormatter(time_format)

 

logger = logging.getLogger(str(file_name))
logger.setLevel(logging.INFO)
logger.addHandler(log_file)

 

logger.info("=== info")
logger.error("=== error")
logger.warning("=== warning")

 

----------------------------

 

3、查找/tomcat/log/ 目录下的log文件,如果文件最后修改时间是在1小时之前,把次文件打包压缩,备份到

 

/home/back/log 目录下

 

import os
import datetime
import zipfile

 

def zip_log_file(src, dest):
if not os.path.exists(src) and not os.path.isdir(src):
print("源路径不存在 或 源路径不是目录")
return

 

if not os.path.exists(dest):
os.makedirs(dest)

 

files = list(filter(lambda f: os.path.isfile(f) and f.endswith(".log"), os.listdir(src)))
if not files:
print("%s 目录下无 .log 文件" % src)

 

for file in files:
file_full_path = os.path.join(src, file)
delay_time = datetime.timedelta(hours=1)
now_time = datetime.datetime.now()
modify_time = datetime.datetime.fromtimestamp(os.path.getmtime(file_full_path))
zip_file_full_path = os.path.join(dest, file + ".zip")
if modify_time < (now_time - delay_time):
z = zipfile.ZipFile(zip_file_full_path, 'w', zipfile.ZIP_DEFLATED)
z.write(file)
z.close()

 

zip_log_file("/tomcat/log/", "/tomcat/back/log")

 

----------------------------

 

在Linux下每隔1分钟检查一下tomcat进程是不是在运行,如果tomcat进程退出了,立即启动tomcat进程

 

搜索目录/home/tools/下所有已test开头,py结尾的文件(包括子目录的), 把文件全路径输出到一个列表里面打印出来

 

import os

 

files_list = []

 

def find_files(src):
if not os.path.exists(src) and not os.path.isdir(src):
print("源路径不存在 或 源路径不是目录")
return

 

for f in os.listdir(src):
if os.path.isfile(f) and f.startswith('test') and f.endswith('.py'):
full_path = os.path.join(src, f)
files_list.append(full_path)
elif os.path.isdir(f):
son_src = os.path.join(src, f)
find_files(son_src)

 

find_files("/home/tools/")
print(files_list)

 

快速添加数据的小技巧:

 
ls = [1,2,3,4]
list1=[i for i in ls if i>2]
tuple1=(2,4,6)
dict1= {x: x**2 for x in tuple1}
dict2= {x: 'item'+str(x**2) for x in tuple1}
set1 = {x for x in 'hello world' if x not in 'low level'}
 

实战分析:
写一个函数,接受一个参数,如果是文件,就执行这个文件,如果是文件夹,就执行这个文件夹下所有的py文件

 
def func(path):
# 先判断这个path是文件还是文件夹,isdir isfile
# 如果是文件,.py结尾的
if os.path.isfile(path) and path.endswith('.py'):
# 执行这个文件 :
os.system('python %s'%path) # 模拟了在cmd中执行代码的过程
# 如果是文件夹
elif os.path.isdir(path):
# 查看这个文件夹下的所有内容 listdir
for name in os.listdir(path):
abs_path = os.path.join(path,name)
# 如果是文件 .py结尾的
if abs_path.endswith('.py'):
# 执行这个文件 : os.system('python %s'%abs_path)
os.system('python %s' % abs_path)