如何为通过命令行传递的文件提供路径

How to give path for file passed through command line

我在这里得到了如何将文件作为参数传递的答案

但我是分开问的,因为不想把两个混在一起。 我能够以 __import__(sys.argv[1]) 的形式访问传递文件中的变量并调用 python test.py config。但是我可以通过给 pythonpath 来调用 config.py 文件吗? e/g/python test.py ~/Desktop/config 还是 PYTHONPATH='~/Desktop/' python test.py config?因为如果我这样做,我会得到 no module error.

您正在尝试使用 __import__ 调用导入 python 模块。它只接受模块名称。如果需要添加目录到PYTHONPATH,可以添加到sys.path,然后导入模块:

#File: ~/Projects/py/main.py

import sys

python_path = sys.argv[1]
module_name = sys.argv[2]

sys.path.insert(1, python_path)

print "Importing {} from {}".format(module_name, python_path)
__import__(module_name)

现在我在 ~/Desktop 上创建了另一个名为 masnun.py 的文件:

# File: ~/Desktop/masnun.py

print "Thanks for importing masnun.py"

现在我尝试 运行 main.py 像这样:

python main.py ~/Desktop masnun

所以我将 Python 路径作为 argv[1] 传递,将模块名称作为 argv[2] 传递。现在可以了。我得到这个输出: