在python中查找文件当前目录的最佳方法

在python中查找文件当前目录的最佳方法,python,pathlib,Python,Pathlib,我在找一个替代品 import os package_dir = os.path.dirname(os.path.abspath(__file__)) file_path = os.path.join(package_dir,'foo.csv') 我的工作路径不是文件的路径。因此,当我想加载一个文件时,我需要一种方法来生成与我的工作目录相比较的相对路径 我想更新到pathlib(或者其他任何东西)。但是,做同样事情的最好方法是什么呢 我发现了,但我不认为这个解决方案比我目前的方式更好 备注:

我在找一个替代品

import os
package_dir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(package_dir,'foo.csv')
我的工作路径不是文件的路径。因此,当我想加载一个文件时,我需要一种方法来生成与我的工作目录相比较的相对路径

我想更新到pathlib(或者其他任何东西)。但是,做同样事情的最好方法是什么呢

我发现了,但我不认为这个解决方案比我目前的方式更好

备注: 这不是重复的,因为我明确地问过最好的方法。另一篇文章中的大多数解决方案看起来都不好看,或者在我的问题中已经提到了。解决方案

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

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

如果你想用同样的方法来解决这个问题,它可能会是这样的:

from pathlib import Path

package_dir = Path(__file__).parent.absolute()
file_path = package_dir.joinpath("foo.csv")
除非您正在更改当前工作目录,否则您可能并不真正需要/想要使用
.absolute()

如果您实际上不需要知道什么是
package\u dir
,您也可以直接获取
文件路径

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

这将为您提供新的
路径
来替换文件名。

您的第一行在我看来非常好。我认为您不需要它的os.path.abspath部分。至于pathlib,一旦你有了路径,它就会发挥作用。这只是处理文件路径的一种更聪明的方法。所以它使第二行更容易写,但对第一行没有多大作用。你为什么要改变?您当前的解决方案在哪些方面做得不好?当前的os版本。它相对比较老。Pathlib的发明是为了取代大多数操作系统。功能。这就是为什么我在寻找一种新方法来对Pathlib进行同样的操作。也许有一个解决方案比当前的解决方案更舒适。太棒了:)这个解决方案看起来非常简洁易懂。我必须承认,我非常喜欢
pathlib
,而且我认为它确实可以显著清理整个文件处理。我对您的单行解决方案和子文件夹有问题。我改用了这个:
Path(\uuu file\uuu).parent.joinpath(“output/foo.csv”)
@subword您能否更具体地描述一下问题的本质?我们可以尝试找到解决方案和/或相应地改进答案。我尝试使用Path(file).with_name(“../folder/foo.csv”),这会导致错误消息。