我有以下内容:
application/3rdPArtyApp/file.py
application/3rdPArtyApp/directory/someFile
application/MyApp/file.py
我想从MyApp访问3rdPArtyApp中的文件,所以我在MyApp / file.py中执行以下操作
sys.path.append('../3rdPArtyApp')
这很好用,现在我可以通过导入来访问文件和功能。
但是,3rdPartyApp中有一个文件试图访问文件夹 directory / someFile 中的文件。
它使用以下命令检查其文件是否从MyApp调用时失败,但是从3rdPartyApp单独调用时不会失败。
os.path.isfile(file)
我假设从MyApp调用时是否失败,因为它希望它位于MyApp路径下。
我该如何解决这个问题?
答案 0 :(得分:1)
如果您无法更改库代码,那么我认为您必须在每次调用之前更改工作目录。
因此,我实现了这种类似于函数的助手类change_cwd
。只需使用with change_cwd('../3rdPArtyApp'):
将每个函数调用包装到外部库中即可。
import os
class change_cwd:
def __init__(self, path):
self.path = os.path.abspath(path)
def __enter__(self):
self.old_cwd = os.getcwd()
os.chdir(self.path)
def __exit__(self, exc_type, exc_value, traceback):
os.chdir(self.old_cwd)
print(os.getcwd())
with change_cwd('Downloads'):
print(os.getcwd())
print(os.getcwd())
/home/<user>
/home/<user>/Downloads
/home/<user>