Python 3.6:循环遍历 os.listdir() 中的文件并将其中一些写入文本文档

Python 3.6: Looping through files in os.listdir() and writing some of them to a text document

我正在尝试遍历一些文件并将 .txt 文件的文件名写入另一个 .txt

这段代码在找到并写入一个文件的名称后停止。

我怎么让它写下其余的名字?

import os

os.chdir('/users/user/desktop/directory/sub_directory')

for f in os.listdir():
    file_name, file_ext = os.path.splitext(f)
    if file_ext == '.txt':
        with open('file_test.txt', 'r+') as ft:
            ft.write(file_name)

您需要在"append"模式下打开目标文件

import os

os.chdir('/users/user/desktop/directory/sub_directory')

for f in os.listdir():
    file_name, file_ext = os.path.splitext(f)
    if file_ext == '.txt':
        with open('file_test.txt', 'a+') as ft:
            ft.write(file_name)

只需将 "a+" 作为开放函数的第二个参数(其中 "a" 用于 "append",“+”用于 "create if not exists")。 我建议您在写入函数中添加一个分隔符(如“\n”)以获得更易读的结果

在循环之前只打开文件一次会更有效率。最好将您的路径传递给 os.listdir() 而不是更改目录:

import os

with open('file_test.txt', 'w') as ft:
    for f in os.listdir('/users/user/desktop/directory/sub_directory'):
        file_name, file_ext = os.path.splitext(f)
        if file_ext == '.txt':
            ft.write(file_name)

最后,如果您想要目录中的所有“.txt”文件,glob.glob is your friend...

如果您在 windows 上,则必须在指定目录路径时使用 \\。并以附加模式写入文件。