python之sys模块和subprocess模块
# sys.path # 可以把文件路径加入到环境变量
返回模块的搜索路径
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
# sys.argv # 用来接收python解释器执行py文件后跟的参数
#例如:python cp.py argv1 argv2 arg3 # python解释器运行
#sys.argv=['cp.py','argv1','argv2','argv3'] #专门接受python解释器脚本后面的参数
直接调用就可以
import sys
# print(sys.argv)
# src_file=input('请输入源文件路径:')
src_file=sys.argv[1]
# dst_file=input('请输入目标文件路径:')
dst_file=sys.argv[2]
with open(src_file,'rb') as read_f,\
open(dst_file,'wb') as write_f:
for line in read_f:
write_f.write(line)
进度条的打印:
#=========实现打印进度条函数==========
import sys
import time
def progress(percent,width=50):
if percent >= 1:
percent=1
show_str=('[%%-%ds]' %width) %(int(width*percent)*'#')
print('\r%s %d%%' %(show_str,int(100*percent)),file=sys.stdout,flush=True,end='')
#=========应用==========
data_size=1025
recv_size=0
while recv_size < data_size:
time.sleep(0.1) #模拟数据的传输延迟
recv_size+=1024 #每次收1024
percent=recv_size/data_size #接收的比例
progress(percent,width=70) #进度条的宽度70
# import os
# os.system('tasklist')
import subprocess #用于执行系统命令,并拿到结果
import time
格式:
obj=subprocess.Popen(
'taskliasdfsadfst', 命令
shell=True, #必须
stdout=subprocess.PIPE, 管道,执行成功通过管道传输出去
stderr=subprocess.PIPE 管道,错误信息通过管道传输
)
# print(obj)
# stdout_res=obj.stdout.read()
# print(stdout_res.decode('gbk')) 命令的结果是二进制的,需要通过解码显示
# print(stdout_res)
stderr_res1=obj.stderr.read() 结果取完一次就没有了
stderr_res2=obj.stderr.read()
stderr_res3=obj.stderr.read()
# print(stderr_res1.decode('gbk'))
print(stderr_res1)
print(stderr_res2)
print(stderr_res3)
# import time
# time.sleep(50)