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)

posted @ 2018-06-24 11:21  Marcki  阅读(181)  评论(0编辑  收藏  举报