open() 文件读写
写入文件
Python提供内置的函数 open 可以读取和写入文件。
with open('./monkey.log',mode='w',encoding='utf8') as file:file.write("helloworld\n")file.writelines(["hello\n","hi\n"])

open 函数的主要权限
| 字符 | 意义 |
|---|---|
| ‘r’ | 读取(默认) |
| ‘w’ | 写入,并先截断文件 |
| ‘x’ | 排它性创建,如果文件已存在则失败 |
| ‘a’ | 写入,如果文件存在则在末尾追加 |
| ‘b’ | 二进制模式 |
| ‘t’ | 文本模式(默认) |
| ‘+’ | 打开用于更新(读取与写入) |
读取文件
with open('./monkey.log',mode='r',encoding='utf8') as file:# 读取文件的内容,将文件内容给变量 txttxt = file.read()print(txt)
练习
生成 testuser1-testuser100 100个测试用户名,写入到文件testuser.txt
with open("./testuser.txt",mode="w",encoding="utf8") as file:file.write("用户名\n")for i in range(1,101):file.write(f"testuser{i}")
稍微改下
with open("./testuser.csv",mode="w",encoding="utf8") as file:file.write("用户名,密码\n")for i in range(1,100001):file.write(f"testuser{i},123456\n")
os 模块
os.path 路径相关
# 导入os模块import os# 文件的绝对路径 __file__ python内置全局变量, 表示当前文件file = os.path.abspath(__file__) # abspath 文件的绝对路径print(file) # C:\Users\zengy\PycharmProjects\pythonProject28\day3_os.py# 获取文件所在的目录dir = os.path.dirname(file)print(dir) # C:\Users\zengy\PycharmProjects\pythonProject28# 路径拼接logs_dir = os.path.join(dir,"logs")print(logs_dir) # C:\Users\zengy\PycharmProjects\pythonProject28\logs# 如果目录的路径不存在if not os.path.exists(logs_dir):# 创建目录os.mkdir(logs_dir)# 在logs目录创建 monkey1.log文件# 路径拼接for i in range(1,11):monkeyfile = os.path.join(logs_dir,f'monkey{i}.log')print(monkeyfile)# C:\Users\zengy\PycharmProjects\pythonProject28\logs\monkey1.logwith open(monkeyfile,mode='w',encoding='utf8') as file:file.write(f"创建{monkeyfile}文件")
os.system() 执行命令
可以执行命令行中的命令。
import os# 执行monkey命令os.system('adb shell monkey -vv 100 > 01.log')
假设连接3台设备
devices_list = ["127.0.0.1:62001","127.0.0.1:62025","127.0.0.1:62026"]
请编写自动化代码 在这三台设备上执行 monkey 命令
adb -s ? shell monkey -p org.cnodejs.android.md -vv 300
将运行日分别保存到3个对应.log文件。
devices_list = ["127.0.0.1:62001","127.0.0.1:62025","127.0.0.1:62026"]for device in devices_list:import os# 字符串中将 ”:“ 改为其它字符 replace 替换device_log_file = device.replace(":","_")print(device_log_file)os.system(f"adb -s {device} shell monkey --throttle 500 -p org.cnodejs.android.md -vv 300 > {device_log_file}.log")
