Создание папки / вложенной папки / файла, как указано в текстовом файле, в определенном каталоге

#python #python-3.x #file #directory #shutil

#python #python-3.x #файл #каталог #shutil

Вопрос:

Я пытаюсь создать последовательность папок, которая содержит вложенные папки, содержащие файлы с помощью python.

Имена этих папок берутся из текстового файла, в котором есть список с путями внутри, например:

 songs101_TNTOGCD101_2020_CONTENT_LOOP_TNTOGCD.mov
songs101_TNTOGCD101_TNTOGCD_CONTENT_TC_A B_CBLDESIGN2.mov
  

Количество вложенных папок не всегда одинаково, иногда это могут быть две вложенные папки и файл, иногда только одна папка и файл.

Все это должно быть создано в указанной папке по моему выбору.

Это то, что я делал до сих пор:

 import os
import shutil
import os.path

with open("C:\Users\Desktop\folder1\folder2\folder3\textfile.txt", "r") as g:
    lines = g.readlines()

base_path = "C:\Users\Desktop\folder1\folder2\folder3"
mov_origin = "C:\Users\Desktop\folder1\folder2\folder3\folder4\file_000.mov"
for line in lines:
    target = base_path
    path = line.split("\")
    for i in range(len(path) - 1):
        target  = path[i]
        if not os.path.exists(target):
            os.makedirs(target)
        else:
            pass
        target  = "\"
    target  = path[-1].replace("n", "")
    print(target)
    shutil.copyfile(mov_origin, target)
  

Но в основном, когда я запускаю его, ничего не происходит.
Я не получил никакой ошибки, но ничего не создано.
Что я делаю не так?

Заранее спасибо за вашу помощь!

ОБНОВЛЕНИЕ: код не работал из-за моей ошибки в конфигурации запуска / отладки в PyCharm. Был выбран неправильный путь скрипта.

Ответ №1:

Код работал. Проблема возникла из-за моей ошибки в конфигурации запуска / отладки в PyCharm. Был выбран неправильный путь скрипта.

Комментарии:

1. Не забудьте также принять это, это покажет другим, что вы довольны результатом. Хорошая работа!

2. Это не позволяет мне принять его раньше, чем за два дня, я думаю, это вопрос привилегий? Я сделаю это обязательно, как только смогу. Спасибо за всю вашу помощь, высоко ценится!

Ответ №2:

Я думаю, вам нужно дать ему что-то для открытия. Строка

 with open("C:\Users\xxxx\xxxx\xxxx\xxxx\xxxx.txt", "r") as g:
  

невозможно ничего сделать, если у вас нет папок, которые на самом деле называются XXXX … и т.д.
Что он делает, когда у вас есть правильный путь к файлу там?

Когда я попробовал это, он напечатал строки, которые находятся в этом текстовом файле. Я бы широко использовал операторы печати, пока вы не увидите, в чем проблема.

 import os
import shutil
import os.path
#lines = []
with open("/Users/.../Desktop/OPW_DATA/comments.txt", "r") as g:
    lines = g.readlines()

base_path = "/Users/.../Desktop/"
#mov_origin = "C:\Users\xxxx\xxxx\xxxx\xxxx\xxxx\file_000.mov"
for line in lines:
    print('line:', line)
    target = base_path
    print('target:',target)
    path = line.split("\")
    for i in range(len(path) - 1):
        target  = path[i]
        if not os.path.exists(target):
            os.makedirs(target)
        else:
            pass
        target  = "\"
    target  = path[-1].replace("n", "")
    print(target)
    #shutil.copyfile(mov_origin, target)
  

Комментарии:

1. Привет, спасибо за ваш ответ. Я изменил свой фактический путь на xxxx только по соображениям конфиденциальности. В моем коде есть правильный путь к папкам и так далее.

2. Я просто публикую свой каталог и заменяю a … для всего, что должно быть закрытым. Это дает лучшее представление о том, как должен выглядеть код.

3. Спасибо за ваш совет, я его изменю.

4. Понял, спасибо за вашу помощь до сих пор! Я постараюсь сделать это лучше.

5. Добавлено разрешение для «нерабочего кода» в описании проблемы.