zoukankan      html  css  js  c++  java
  • Python之subprocess模块、sys模块

    一、subprocess模块

    # import os
    # os.system('tasklist')       #类似cmd输入系统命令
    
    '''
    subprocess的目的就是启动一个新的进程并且与之通信。
    subprocess模块中只定义了一个类: Popen。可以使用Popen来创建进程,并与进程进行复杂的交互。'''
    import subprocess             #可以替代os.system
    import time
    #stdout命令正确输出结果,PIPE进程与进程之间共享的管道,shell=True代表调用命令解释器
    obj=subprocess.Popen(
        'taskliasdfsadfst',             #可以输入系统命令
        shell=True,
        stdout=subprocess.PIPE,         #如输入tasklist
        stderr=subprocess.PIPE          #如输入taskliasdfsadfst
    
    )
    # print(obj)
    stdout_res=obj.stdout.read()      #从儿子将正确的结果放到管道中,父亲等儿子将正确的结果放入管道,父亲从正确的管道读结果
    print(stdout_res.decode('gbk'))   ##windows默认的是gbk编码的,所以解码也要用gbk
    print(stdout_res)
    
    # stderr_res1=obj.stderr.read()              #
    # stderr_res2=obj.stderr.read()
    # stderr_res3=obj.stderr.read()
    # print(stderr_res1.decode('gbk'))          #windows默认的是gbk编码的,所以解码也要用gbk
    # 打印结果:'taskliasdfsadfst' 不是内部或外部命令,也不是可运行的程序
    # 或批处理文件。
    
    # print(stderr_res1)                          #第一次从管道中取走,后面再取则为空
    # print(stderr_res2)
    # print(stderr_res3)
    
    # import time
    # time.sleep(50)

    二、sys模块

    import sys
    
    # sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
    # sys.argv # 用来接收python解释器执行py文件后跟的参数
    #例如:python cp.py argv1 argv2 arg3
    #sys.argv=['cp.py','argv1','argv2','argv3']
    
    import sys
    print(sys.argv[0])
    print(sys.argv[1])
    
    
    
    
    
    # sys.argv           命令行参数List,第一个元素是程序本身路径
    # sys.exit(n)        退出程序,正常退出时exit(0)
    # sys.version        获取Python解释程序的版本信息
    # sys.maxint         最大的Int值
    # sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
    # sys.platform       返回操作系统平台名称

    sys实现文件的拷贝

    '''执行文件:cp.py'''
    import sys
    print(sys.argv)------------[]
    # src_file=input('请输入源文件路径:')
    src_file=sys.argv[1]           #通过cmd拿到源文件路径
    # dst_file=input('请输入目标文件路径:')
    dst_file=sys.argv[2]           #通过cmd拿到目标件路径
    with open(src_file,'rb') as read_f,
        open(dst_file,'wb') as write_f:
        for line in read_f:
            write_f.write(line)

    cmd运行内容:

  • 相关阅读:
    前端资源分享
    Java的wait(), notify()和notifyAll()使用心得(转)
    Java 理论与实践: 处理 InterruptedException(转)
    关于线程中断的总结
    Python入门(good)
    看着自己有什么样的资源,利用好这些资源就好了。不要看着别人的资源流口水(转)
    android手机SD卡中的android_secure目录
    Android中ExpandableListView控件基本使用
    华为的面试经历
    Flex强制类型转换错误
  • 原文地址:https://www.cnblogs.com/sui776265233/p/9210702.html
Copyright © 2011-2022 走看看