python - 如何在 python 2.x 交互模式下将参数传递给模块

标签 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."

我可以从命令行做这样的事情:

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/

相关文章:

python - 统计一个单词中不同字符的个数

Java 字符串与命令行参数

command-line - Windows 批处理错误 : "' ping' is not recognized as an internal or external command operable program or batch file."

python - cv2.error : OpenCV(4. 5.2) 👎 错误: (-5:Bad argument) 在函数 'cvtColor' 中

python - 有没有一种简单的方法来计算数据框中两个不同索引的交集?

java - 尝试从命令行调用 Java 程序时出现 "Unrecognized as command"消息

c# - 在命令行参数中传递新行?

windows - 在 FileZilla 中下载文件的命令行选项

python - 在 Numpy 中定义计算 IQR 的函数

python - 为数据框中的每个组查找不同的百分位数