Python: 如何获取文件的完整路径以便移动它?

Python: How to get the full path of a file in order to move it?

我有压缩文件。我用 Zip-7 解压缩它们,所以它们位于具有 zip 文件名的文件夹中。

这些文件夹中的每一个都有我想要的 .otf 或 .ttf(有些两者都有)并移动到另一个文件夹。

我尝试了几种获取文件完整路径的方法,但每一种方法都遗漏了文件实际所在的文件夹。

这是我最近的尝试:

import os
import shutil
from pathlib import Path

result = []

for root, dirs, files in os.walk("."):
    for d in dirs:
       continue
    for f in files:
        if f.endswith(".otf"):
            print(f)
            p = Path(f).absolute()
            parent_dir = p.parents[1]
            p.rename(parent_dir / p.name)
        elif f.endswith(".ttf"):
            print(f)
            p = Path(f).absolute()
            parent_dir = p.parents[1]
            p.rename(parent_dir / p.name)      
        else:
            continue

其他尝试:

# parent_dir = Path(f).parents[1]
# shutil.move(f, parent_dir)

#print("OTF: " + f)
    #     fn = f
    #     f = f[:-4]
    #     f += '\'
    #     f += fn
    #     result.append(os.path.realpath(f))

#os.path.relpath(os.path.join(root, f), "."))

我知道这很简单,但我就是想不通。谢谢!

你应该加入文件名和路径名root:

for root, dirs, files in os.walk("."):
    for d in dirs:
       continue
    for f in files:
        if f.endswith(".otf"):
            p = Path(os.path.join(root, f)).absolute()
            parent_dir = p.parents[1]
            p.rename(parent_dir / p.name)
        elif f.endswith(".ttf"):
            p = Path(os.path.join(root, f)).absolute()
            parent_dir = p.parents[1]
            p.rename(parent_dir / p.name)      
        else:
            continue
 for root, dirs, files in os.walk(".")
     for d in dirs:
             continue
     for f in files:
             print(os.path.abspath(f))

您可以使用 os.path.abspath() 获取完整文件的路径 您还需要过滤某些文件类型。