这是我的程序(test.py):
#!/usr/bin/python
import sys, getopt
def main(argv):
inputfile = ''
outputfile = ''
try:
opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
except getopt.GetoptError:
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print 'test.py -i <inputfile> -o <outputfile>'
sys.exit()
elif opt in ("-i", "--ifile"):
inputfile = arg
elif opt in ("-o", "--ofile"):
outputfile = arg
print 'Input file is "', inputfile
print 'Output file is "', outputfile
if __name__ == "__main__":
main(sys.argv[1:])
使用msdos命令行我可以传递-h选项(在test.py中定义),如下所示:
python test.py -h
msdos命令行将输出以下内容:
test.py -i <inputfile> -o <outputfile>
但是我如何在python interactive中传递-h选项 使用msdos命令行完成的模式?
答案 0 :(得分:1)
可能你可以尝试使用自定义sys.argv
来破解某些东西,但这太过于苛刻了,请改用:
>>> from subprocess import call
>>> call(['./test.py', option1, option2, ...])
答案 1 :(得分:0)
if __name__ == "__main__":
行的整个想法是该文件既可以用作程序,也可以用作模块。
这样做:
>>> import test
>>> test.main(['-h'])
如果您的模块没有进行__name__
检查,则只需分配到sys.argv
:
>>> import sys
>>> sys.argv = ['-h']
>>> import test
但自然这只会在第一次加载模块时起作用。对于下一次运行,您需要运行:
>>> reload(test)
注意:在Python2中reload
是内置的,但在Python3中它位于模块imp
中。