如何为通过命令行传递的文件提供路径
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]
传递。现在可以了。我得到这个输出:
我在这里得到了如何将文件作为参数传递的答案
但我是分开问的,因为不想把两个混在一起。
我能够以 __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]
传递。现在可以了。我得到这个输出: