假设我在目录A中有一个符号链接,指向目录B中的python文件。当我执行符号链接时,目录B中的python文件成功执行(它还在其目录中使用其他python文件)。但是,在操作系统方面使用符号链接存在很多问题,因此我想使用普通的python来模拟它。
这是我到目前为止所拥有的。
目录A中的文件:
import os
import sys
sys.path.append("DirectoryB") # File_B is importable now
os.chdir("DirectoryB") # Change dir so File_B's imports work
import File_B # Run File_B
现在,当目录A文件运行时 - 文件B将成功运行,就像目录A中的文件是符号链接一样。
这种方法有什么不对吗?有没有办法做得更好?
答案 0 :(得分:0)
您的问题非常类似于从Run a python script from another python script, passing in args和What is the best way to call a Python script from another Python script?中已有两个答案的另一个问题调用python脚本
您的片段没问题,但可能与符号链接存在一些差异。例如。如果File_B使用经典成语if __name__ == '__main__':
,则导入时'if'将不为True,您应该直接调用该部分中的代码。
要调用File_B,您可以使用ececfile("/path_to/File_B")
来维护相同的参数,如果需要更改参数,可以使用os.system("/path_to/File_B %s" % ' '.join(arglist))
。
如果您希望避免使用操作系统并将其保存在Python中,请检查是否必须在导入后调用函数或添加一些代码(例如,如果File_B具有if __name__ == '__main__':
)。在https://stackoverflow.com/a/3781960/3547046中,有一些建议可以保留这些论点。