python命令行传参以及字符串格式化的问题

 临沂李晓楠 发布于 2022-10-31 11:27
def main():
    process1 = subprocess.Popen("111.exe C:\Python27\test\文本.txt -t 20 字符串1 字符串2", shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

    while True:
        line = process1.stdout.readline()
        aaa = open("success.txt", "a+")
        if not line:
            break
        print line
        aaa.write(line)
        aaa.close()
        hanshu(line)

def hanshu(line):
    if line.startswith('[字符串2]'):
        执行一系列操作,此处略...

    #print 'copeleted'



if __name__ == '__main__':
    main()

目前程序执行,需要在代码里改动字符串1 字符串2的值来执行,现在想改成命令行传参的格式,比如
111.py 字符串1 字符串2来执行

这种的,不知道怎么改。。 大牛求教育

3 个回答
  • 最简单的就是使用sys模块

    #test.py
    
    import sys
    str1 = sys.argv[1]
    str2 = sys.argv[2]
    python test.py 字符串1 字符串2

    还可以使用optparse、argparse等模块

    #test.py
    
    import optparse
    
    
    def main():
        p = optparse.OptionParser()
        p.add_option('--name', '-n', default="xiaoming")
        p.add_option('--age', '-a', default="15")
        options, args = p.parse_args()
        print "name: %s " % options.name
        print "age: %s" % options.age
        
    if __name__ == '__main__":
        main()
    python test.py -n 字符串1 -a 字符串2

    另外这里还有一些其他的命令行模块:Python最佳实践指南

    2022-10-31 23:06 回答
  • argparse

    2022-10-31 23:06 回答
  • sys模块可以直接调用参数

    # 终端执行 python arg1 arg2
    import sys
    sys.argv[0] # ./path/python
    sys.argv[1] # 参数1 arg1
    sys.argv[2] # 参数2 arg2
    2022-10-31 23:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有