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来执行
这种的,不知道怎么改。。 大牛求教育
最简单的就是使用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最佳实践指南
argparse
sys模块可以直接调用参数
# 终端执行 python arg1 arg2
import sys
sys.argv[0] # ./path/python
sys.argv[1] # 参数1 arg1
sys.argv[2] # 参数2 arg2