具有多种文件类型和协作者的相对路径
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,
所以你的合作者 cwd
是 src
folder() 而你是 workspace_folder
。
当我想访问兄弟文件夹中的 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,
所以你的合作者 cwd
是 src
folder() 而你是 workspace_folder
。