Can';在Python中无法获取绝对路径

Can';在Python中无法获取绝对路径,python,filepath,os.path,pathlib,Python,Filepath,Os.path,Pathlib,我尝试使用os.path.abspath(file)以及path.absolute(file)来获取我正在处理的.png文件的路径,这些文件位于代码所在项目文件夹的单独驱动器上。下面脚本的结果是“Project Folder for The code/filename.png”,而显然我需要的是.png所在文件夹的路径 对于os.walk(newpath)中的根目录、目录和文件: 对于文件中的文件: 如果不是file.startswith(“.”): 如果文件.endswith(“.png”):

我尝试使用
os.path.abspath(file)
以及
path.absolute(file)
来获取我正在处理的
.png
文件的路径,这些文件位于代码所在项目文件夹的单独驱动器上。下面脚本的结果是“Project Folder for The code/filename.png”,而显然我需要的是
.png
所在文件夹的路径

对于os.walk(newpath)中的根目录、目录和文件:
对于文件中的文件:
如果不是file.startswith(“.”):
如果文件.endswith(“.png”):
数字,扫描大小,字母=文件。拆分(“-”)
filepath=os.path.abspath(文件)
#替换奇怪的反斜杠效果
correctedpath=filepath.replace(os.sep,“/”)
newentry=[编号、文件、更正路径]
纹理。附加(新条目)

我在这里阅读了其他答案,这些答案似乎表明代码的项目文件不能与正在处理的文件夹位于同一目录中。但事实并非如此。有人能指出我没有得到什么吗?我需要绝对路径,因为程序的目的是将文件的路径写入文本文件。

我最近刚刚写了一些类似于您正在查找的内容

此代码依赖于您的文件是路径末端的假设。 不适合查找目录或类似的内容

不需要嵌套循环


DIR=“您的/full/path/to/direcetory/containing/desired/files”
def get_文件路径(名称、模板):
"""
@:param template:文件的模板(txt、html…)
@return:指定文件的路径。
@rtype:str
"""
substring=f'{name}.{template}'
对于os.listdir(DIR)中的路径:
完整路径=os.path.join(DIR,path)
如果路径是完整的,则为endswith(子字符串):
返回完整路径
来自

for root, dirs, files in os.walk(newpath):
文件只包含文件名,没有目录路径仅使用文件名意味着python默认使用项目文件夹作为这些文件名的目录。在您的情况下,文件位于newpath中。您可以使用os.path.join向找到的文件名添加目录路径

filepath = os.path.join(newpath, file)
如果要在子目录中查找png文件,最简单的方法是使用glob:

import glob

newpath = r'D:\Images'


file_paths = glob.glob(newpath + "/**/*.png", recursive=True)

for file_path in file_paths:
    print(file_path)
您可以使用此处递归获取所有PNG:

作为一个列表:

从pathlib导入路径
search_dir=“/path/to/search/dir”
#这将创建一个具有'number'和解析路径的元组列表
路径=[(p.name.split(“-”[0],p.resolve())表示路径(search_dir.rglob(“*.png”)]
或者,您可以在循环中处理它们:

路径=[]
对于路径中的p(search_dir).rglob(“*.png”):
数字,扫描尺寸,字母=p.name.split(“-”)
#更多处理。。。
append([number,p.resolve()]))

不清楚您想要实现什么目标。在您的示例中,
Project Folder/filename.png
是否只需要
Project Folder
/full/path/to/Project Folder/
?不,它会为代码提供项目文件夹-就像代码所在的位置一样。png位于单独的驱动器中。因此,它返回的是人工的——就好像png和代码在同一个文件夹中,但它们不是。我只想要每个png的真实路径。嘿,Yovel,如果png在DIR的子目录中,这会给它带来问题吗?现在它返回'None',那么,你的绝对路径是DIR/pics_DIR,不是DIR,这很接近于一个解决方案,但是png位于newpath的子目录中。如何找出它们所在的子目录,以便同时将其连接到文件路径?使用glob查找子目录中的文件最简单。比如Alex的例子或者我的做法。见我答案的补充。