Search code examples
pythonloopsfile-manipulation

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


I'm trying to loop through some files and write the file names of the .txt ones to another .txt

the piece of code stops after finding and writing the name of one file.

how would I get it to write the names of the rest?

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)

Solution

  • You need to open the destination file in "append" mode

    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)
    

    Just put "a+" as second argument of your open function (where "a" stays for "append" and "+" for "create if not exists"). I suggest you to add a separator (like a "\n") in your write function to have more readable results