在不使用符号链接的情况下模拟Python脚本的符号链接

时间:2018-05-28 02:37:50

标签: python symlink

假设我在目录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中的文件是符号链接一样。

这种方法有什么不对吗?有没有办法做得更好?

1 个答案:

答案 0 :(得分:0)

您的问题非常类似于从Run a python script from another python script, passing in argsWhat 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中,有一些建议可以保留这些论点。