Python: Как получить полный путь к файлу, чтобы переместить его? - PullRequest
0 голосов
/ 05 октября 2018

У меня были файлы, которые были в zips.Я разархивировал их с помощью 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), "."))

Я знаю, что это что-то простое, но я просто не могу понять это.Спасибо!

Ответы [ 2 ]

0 голосов
/ 05 октября 2018
 for root, dirs, files in os.walk(".")
     for d in dirs:
             continue
     for f in files:
             print(os.path.abspath(f))

Вы можете использовать os.path.abspath (), чтобы получить путь к полному файлу. Вам также необходимо выполнить фильтрацию для определенных типов файлов.

0 голосов
/ 05 октября 2018

Вы должны объединить имя файла с путем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...