Amp*_*4nd 6 python command-line-arguments
我正在使用Python 2.7,我有以下简单的脚本,它需要一个命令行参数:
#!/usr/bin/env python
import sys
if (len(sys.argv) == 2):
print "Thanks for passing ", sys.argv[1]
else:
print "Oops."
Run Code Online (Sandbox Code Playgroud)
我可以从命令行执行以下操作:
My-Box:~/$ ./useArg.py asdfkjlasdjfdsa
Thanks for passing asdfkjlasdjfdsa
Run Code Online (Sandbox Code Playgroud)
或这个:
My-Box:~/$ ./useArg.py
Oops.
Run Code Online (Sandbox Code Playgroud)
我想通过交互式编辑器做类似的事情:
>>> import useArg asdfasdf
File "<stdin>", line 1
import useArg asdfasdf
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么做.如何在交互式编辑器中传递参数以导入/重新加载?
你不能.将代码包装在函数中
#!/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)
Run Code Online (Sandbox Code Playgroud)
如果您从命令行执行脚本,则可以像以前一样执行此操作,如果您想从解释器中使用它:
import useArg
useArg.main(['foo', 'bar'])
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您必须在列表的第一个位置使用一些虚拟值,因此大多数时候更好的解决方案是使用argparse库.您还可以在调用main函数之前检查命令行参数的数量:
import sys
def main(arg):
print(arg)
if __name__ == '__main__':
if len(sys.argv) == 2:
main(sys.argv[1])
else:
main('Oops')
Run Code Online (Sandbox Code Playgroud)
您可以在if __name__ == '__main__':
此处执行时找到正确的解释: 如果__name__ =="__ main__":怎么办?
归档时间: |
|
查看次数: |
10354 次 |
最近记录: |