我使用的是 Python 2.7,我有以下简单的脚本,它需要一个命令行参数:
#!/usr/bin/env python
import sys
if (len(sys.argv) == 2):
print "Thanks for passing ", sys.argv[1]
else:
print "Oops."
我可以从命令行做这样的事情:
My-Box:~/$ ./useArg.py asdfkjlasdjfdsa
Thanks for passing asdfkjlasdjfdsa
或者这个:
My-Box:~/$ ./useArg.py
Oops.
我想在交互式编辑器中做类似的事情:
>>> import useArg asdfasdf
File "<stdin>", line 1
import useArg asdfasdf
^
SyntaxError: invalid syntax
但是我不知道怎么办。如何传递参数以在交互式编辑器中导入/重新加载?
最佳答案
你不能。将您的代码包装在函数中
#!/usr/bin/env python
import sys
def main(args):
if (len(args) == 2):
print "Thanks for passing ", args[1]
else:
print "Oops."
if __name__ == '__main__':
main(sys.argv)
如果你从命令行执行你的脚本,你可以像以前那样做,如果你想从解释器中使用它:
import useArg
useArg.main(['foo', 'bar'])
在这种情况下,您必须在列表的第一个位置使用一些虚拟值,所以大多数时候更好的解决方案是使用 argparse library .您还可以在调用主函数之前检查命令行参数的数量:
import sys
def main(arg):
print(arg)
if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv[1])
else:
main('Oops')
您可以在执行 if __name__ == '__main__':
时找到很好的解释:What does if __name__ == "__main__": do?
关于python - 如何在 python 2.x 交互模式下将参数传递给模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18853363/