使用 python 中不同文件的命令行参数

Using command line args from different files in python

我最近发现(令我惊讶的是)您可以在文件中调用命令行参数,而不是在您输入时明确调用的文件中。

因此,您可以在命令行中 运行 python file1.py abc,并使用 sys.argv[1] 从 file2.py 中获取字符串 'abc' 或file3.py.

我仍然觉得这不应该起作用,但我很高兴它起作用了,因为它为我省去了很多麻烦。

但现在我真的很感激关于 why/how 这有效的答案。我原以为 sys.argv[1] 对每个文件都是本地的。

至于how/why,sys只导入一次(当python启动时)。导入 sys 时,它的 argv 成员会填充命令行参数。随后的 import 语句 return 相同的 sys 模块对象,因此无论您 import sys 来自哪里,您将始终获得相同的对象,因此 sys.argv 将始终无论您在应用程序中的何处引用它,都是相同的列表。


您是否应该在多个地方进行命令行解析是另一个问题。一般来说,我的回答是 "NO" 除非你只是为了在接下来的 2 或 3 天内编写一个脚本。任何你期望持续的东西都应该预先解析它(可能使用像 argparse 这样的强大的参数解析器)并从它的入口点将各种 functions/classes 所需的数据传递给它们。