• 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('
    %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)

  • 相关阅读:
    结构体和枚举
    [转载]玩转Asp.net MVC 的八个扩展点
    SQLServer处理亿万级别的数据的优化措施
    Lambda表达式
    匿名类型
    单例模式——懒汉式和饿汉式详解
    Cglib动态代理实现原理
    集合的子集
    深入剖析ThreadLocal
    java注解的自定义和使用
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111953.html
Copyright © 2020-2023  润新知