【问题标题】:Creating Folder/Subfolder/File as specified in a text file, in a specific directory在特定目录中创建文本文件中指定的文件夹/子文件夹/文件
【发布时间】:2021-01-13 20:00:43
【问题描述】:

我正在尝试创建一个文件夹序列,其中包含包含 python 文件的子文件夹。

这些文件夹的名称来自一个文本文件,其中包含一个包含路径的列表,如下所示:

songs\101_TNTOGCD\101_2020_CONTENT_LOOP_TNTOGCD.mov
songs\101_TNTOGCD\101_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 中的运行/调试配置中的错误,代码无法正常工作。选择了错误的脚本路径。

【问题讨论】:

    标签: python python-3.x file directory shutil


    【解决方案1】:

    代码正在运行。问题的发生是因为我在 PyCharm 中的运行/调试配置中的错误。选择了错误的脚本路径。

    【讨论】:

    • 记得也接受它,它向其他人表明您对结果感到满意。干得好!
    • 两天前不让我接受,估计是权限问题吧?我会尽快做到的。感谢您的所有帮助,非常感谢!
    【解决方案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)
    

    【讨论】:

    • 您好,感谢您的回答。出于隐私原因,我用 xxxx 更改了我的实际路径。在我的代码中,有正确的文件夹路径等等。
    • 我只是发布我的目录并用 ... 替换任何需要保密的内容。它可以更好地了解代码的外观。
    • 谢谢你的提示,我会改的。
    • 知道了,感谢您到目前为止的帮助!我会努力让它变得更好。
    • 在问题描述中添加了“无效代码”的解决方法。