pathlib.Path.cwd()返回的值取决于我使用的计算机(两台Windows PC-一台在工作,一台在家里)。
项目结构(请参见https://github.com/jonathanchukinas/file_read_exercise.git)
main.py和read_excel_file.py都包含:
from pathlib import Path
print(Path.cwd())
在工作中,每个python文件都会返回到顶级目录的绝对路径。
在家里,每个python文件都会返回到其自己目录的绝对路径。
我已经阅读了文档,并且搜索并搜索了堆栈溢出,但找不到以下问题的答案:
cwd()如何工作,以便我可以更好地预测其结果?
答案 0 :(得分:2)
它返回当前的工作目录,即运行脚本的目录。
示例:
stradivari:~/Desktop/file_read_exercise$ python main.py
应返回~/Desktop/file_read_exercise
的路径:
cwd, when called from main, returns: /home/stradivari/Desktop/file_read_exercise
stradivari:~/Desktop$ python ./file_read_exercise/main.py
应将路径返回到我的桌面:
cwd, when called from main, returns: /home/stradivari/Desktop
答案 1 :(得分:0)
您可以使用此功能建立路径,而无需对其进行硬编码:
import pathlib
def find_path_to_file(file_name):
globa_path = pathlib.Path.home()
for path in sorted(globa_path.rglob('*')):
if str(file_name) in str(path):
return str(path)
如果您将此函数放在与搜索文件相同的文件夹中,也可以在cwd()上替换home(),或尝试使用父参数:
def find_path_to_file(file_name):
global_path = pathlib.Path.cwd()
for path in sorted(global_path.rglob('*')):
if str(file_name) in str(path):
return str(path)
else:
for path in sorted(global_path.parent.parent.rglob('*')):
if str(file_name) in str(path):
return str(path)