具有多种文件类型和协作者的相对路径

Relative paths with multiple file types and collaborators

当我想访问兄弟文件夹中的 pickle 数据文件时,我不能使用相同的(相对)路径。因为我与多个协作者一起工作,所以这导致必须在每个 git push/pull 之后更改 file_path 变量(参见下面的片段),这很烦人,而且可能是不必要的。

文件结构如下所示:

workspace_folder
    -data
        -.raw
            -.-data.pickle
    -src
        -.data_analyis.py
        -.rapid_experimentation.ipynb

我的合作者在 data_analysis.py 中编写了以下可在他的电脑上运行的代码:

# '..' to access sibling folder
file_path = r"../data/raw/data.pickle"

# read file
with open(file_path, 'rb') as f:
    data = pickle.load(f)

这给我一个找不到文件的错误,因为 VSCode 假设根文件夹是 workspace_folder,而不是 data_analysis.py 的位置。所以我必须使用:

# start from work_space folder, so no '..'
file_path = "data/raw/2022-03-13 conservative submissions"

# read file
with open(file_path, 'rb') as f:
    data = pickle.load(f)

但是,当我使用 Jupyter notebook 时,first 代码片段对我有用。因此:VSCode 中同一 src 文件夹中的 .py 和 .ipynb 文件在加载具有相对路径的文件时不使用相同的根文件夹。

我想要一个对我的合作者和我自己都适用的单一解决方案,这样我们就可以 运行 .py 文件而不会出错,也不必更改路径在每个 git push/pull 之前和之后。 有人可以解释一下我的误解吗?

您和您的合作者有不同的 cwd 集合。看起来你的合作者已经重置了 cwd,比如在 settings.json 文件中添加:

"python.terminal.executeInFileDir": true,

所以你的合作者 cwdsrc folder() 而你是 workspace_folder