首页 > 解决方案 > 在python中查找文件当前目录的最佳方法

问题描述

我正在寻找替代品

import os
package_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(package_dir,'foo.csv')

我的工作路径不是文件的路径。所以当我想加载一个文件时,我需要一种方法来生成与我的工作目录相比的相对路径。

我想更新到 pathlib(或其他任何东西)。但是最好的方法是什么?

我找到了https://stackoverflow.com/a/44188489,但我认为这个解决方案并不比我目前的方式更好。

评论:

这不是如何正确确定当前脚本目录的副本?,因为我明确询问了最好的方法。另一篇文章中的大多数解决方案看起来都不好看,或者在我的问题中已经提到过。解决方案

Path(__file__).with_name("foo.csv")

这里给出的解决方案比另一个问题中给出的解决方案要好得多,因为它很容易理解,而且是一种真正的 Pythonic 方式来解决它。如果这个问题是重复的,那么在另一篇文章中也会有同样好的答案。

标签: pythonpathlib

解决方案


如果你想对 做同样的事情pathlib,它可能看起来像这样:

from pathlib import Path

package_dir = Path(__file__).parent.absolute()
file_path = package_dir.joinpath("foo.csv")

除非您更改当前工作目录,否则您可能并不真正需要/不想使用.absolute().

如果您实际上不需要知道package_dir会是什么,您也可以file_path直接获取:

file_path = Path(__file__).with_name("foo.csv").absolute()

这为您提供了新Path的替换文件名。


推荐阅读