【问题标题】:How to create a folder to store files generated in a loop?如何创建一个文件夹来存储循环生成的文件?
【发布时间】:2019-08-20 07:08:11
【问题描述】:

我需要在我的程序中执行以下操作:

a) 要求用户输入要在我的目录中创建的文件夹的名称 b) 创建文件夹 c) 生成文件夹内的文件

要生成的文件是使用 REGEX 从书中提取的不同文本。我希望程序循环遍历 REGEX 匹配项并自动将每个匹配项放入一个文件中(每个文本都匹配到一个文件中)。这些文本文件需要存储在用户命名的这个新创建的文件夹中。

我的程序创建了文件夹,但只有第一个文本被写入了这个新文件夹内的文件。似乎错误在循环中。警告信息是:

Chapter1.txt Traceback(最近一次调用最后一次):文件 "/Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py", 第 375 行,在 菜单()文件“/Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py”, 第 365 行,在菜单中 单独的章节()文件“/Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py”, 第 224 行,在单独的章节中 os.makedirs(文件夹)文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py”, 第 221 行,在 makedirs 中 mkdir(name, mode) FileExistsError: [Errno 17] 文件存在:'/Users/nataliaresende/Dropbox/PYTHON/folder'

有人知道发生了什么吗?也许是身份?

us=input('\n\nEnter the name of the book or file: ')

    pat = re.compile(r'(?<=\[@CHAPST@\]).+?(?=\[@CHAPFN@\])')
    my_chapters=[]


    with open(us, 'r', encoding="utf-8") as file:
        for i in pat.findall(file.read()):
            my_chapters.append(i)

    print('\n\nThis book contains',len(my_chapters), 'chapters')

    user2=input('\n\nWrite chapters to a file? | Y/N: ')


    if user2 =='Y':
    folder_name=input("Name your folder. E.g. 'Texts': ")
    folder=os.path.join('/Users/nataliaresende/Dropbox/PYTHON/', folder_name)
    os.makedirs(folder)

    for j in range(len(my_chapters)):
        chap='Chapter'+str(j+1) +'.txt'.format(folder_name)
        file = os.path.join(folder, chap)

        with open(file, "w") as f:
            for item in my_chapters[j]:
                f.write("%s" % str(item))
        print('\n\n', chap)

print('\n\nChapters 1 -',len(my_chapters), 'written to a file separately. Check your folder named "Chapters" in your directory')

【问题讨论】:

  • os.makedirs(folder) 您尝试多次创建同一个文件夹。将其移出循环并使用exist_ok 参数。
  • @JohnnyMopp,好的!我移动了 os.makedirs(folder) 并且还更新了代码。你能告诉我exist_ok参数吗?也许更新我的代码?
  • os.makedirs(folder, exist_ok=True) 另请注意,如果 user2 != 'Y'folderfolder_name 变量将是未定义的。
  • 我还要添加什么:继续循环?

标签: python loops directory


【解决方案1】:

您需要检查该文件夹是否存在,如果存在则跳过创建它:

if not os.path.exists(folder):
    os.makedirs(folder)

【讨论】:

  • 用我的代码替换你代码中的os.makedirs(folder)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 2021-04-02
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多