pathlib.Path.cwd()返回什么?

时间:2019-06-17 23:19:00

标签: python directory-structure pathlib

pathlib.Path.cwd()返回的值取决于我使用的计算机(两台Windows PC-一台在工作,一台在家里)。

项目结构(请参见https://github.com/jonathanchukinas/file_read_exercise.git

  • file_read_exercise /
    • bin /
      • 初始化 .py
      • read_excel_file.py
    • 数据/
      • 初始化。y
      • my_data.xlsx
    • 初始化 .py
    • main.py

main.py和read_excel_file.py都包含: from pathlib import Path print(Path.cwd()) 在工作中,每个python文件都会返回到顶级目录的绝对路径。 在家里,每个python文件都会返回到其自己目录的绝对路径。

我已经阅读了文档,并且搜索并搜索了堆栈溢出,但找不到以下问题的答案:

cwd()如何工作,以便我可以更好地预测其结果?

2 个答案:

答案 0 :(得分:2)

它返回当前的工作目录,即运行脚本的目录。

示例:

  1. stradivari:~/Desktop/file_read_exercise$ python main.py

    应返回~/Desktop/file_read_exercise的路径:

    cwd, when called from main, returns: /home/stradivari/Desktop/file_read_exercise
    
  2. 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)