open() 文件读写

写入文件

Python提供内置的函数 open 可以读取和写入文件。

  1. with open('./monkey.log',mode='w',encoding='utf8') as file:
  2. file.write("helloworld\n")
  3. file.writelines(["hello\n","hi\n"])

image.png
open 函数的主要权限

字符 意义
‘r’ 读取(默认)
‘w’ 写入,并先截断文件
‘x’ 排它性创建,如果文件已存在则失败
‘a’ 写入,如果文件存在则在末尾追加
‘b’ 二进制模式
‘t’ 文本模式(默认)
‘+’ 打开用于更新(读取与写入)

读取文件

  1. with open('./monkey.log',mode='r',encoding='utf8') as file:
  2. # 读取文件的内容,将文件内容给变量 txt
  3. txt = file.read()
  4. print(txt)

练习

生成 testuser1-testuser100 100个测试用户名,写入到文件testuser.txt

  1. with open("./testuser.txt",mode="w",encoding="utf8") as file:
  2. file.write("用户名\n")
  3. for i in range(1,101):
  4. file.write(f"testuser{i}")

稍微改下

  1. with open("./testuser.csv",mode="w",encoding="utf8") as file:
  2. file.write("用户名,密码\n")
  3. for i in range(1,100001):
  4. file.write(f"testuser{i},123456\n")

os 模块

os.path 路径相关

  1. # 导入os模块
  2. import os
  3. # 文件的绝对路径 __file__ python内置全局变量, 表示当前文件
  4. file = os.path.abspath(__file__) # abspath 文件的绝对路径
  5. print(file) # C:\Users\zengy\PycharmProjects\pythonProject28\day3_os.py
  6. # 获取文件所在的目录
  7. dir = os.path.dirname(file)
  8. print(dir) # C:\Users\zengy\PycharmProjects\pythonProject28
  9. # 路径拼接
  10. logs_dir = os.path.join(dir,"logs")
  11. print(logs_dir) # C:\Users\zengy\PycharmProjects\pythonProject28\logs
  12. # 如果目录的路径不存在
  13. if not os.path.exists(logs_dir):
  14. # 创建目录
  15. os.mkdir(logs_dir)
  16. # 在logs目录创建 monkey1.log文件
  17. # 路径拼接
  18. for i in range(1,11):
  19. monkeyfile = os.path.join(logs_dir,f'monkey{i}.log')
  20. print(monkeyfile)# C:\Users\zengy\PycharmProjects\pythonProject28\logs\monkey1.log
  21. with open(monkeyfile,mode='w',encoding='utf8') as file:
  22. file.write(f"创建{monkeyfile}文件")

os.system() 执行命令

可以执行命令行中的命令。

  1. import os
  2. # 执行monkey命令
  3. os.system('adb shell monkey -vv 100 > 01.log')

假设连接3台设备

  1. devices_list = ["127.0.0.1:62001","127.0.0.1:62025","127.0.0.1:62026"]

请编写自动化代码 在这三台设备上执行 monkey 命令

  1. adb -s ? shell monkey -p org.cnodejs.android.md -vv 300

将运行日分别保存到3个对应.log文件。

  1. devices_list = ["127.0.0.1:62001","127.0.0.1:62025","127.0.0.1:62026"]
  2. for device in devices_list:
  3. import os
  4. # 字符串中将 ”:“ 改为其它字符 replace 替换
  5. device_log_file = device.replace(":","_")
  6. print(device_log_file)
  7. os.system(f"adb -s {device} shell monkey --throttle 500 -p org.cnodejs.android.md -vv 300 > {device_log_file}.log")