簡體   English   中英

如何遍歷文件夾中的每個文件,對文件進行一些操作以及將輸出保存到另一個文件夾中的文件Python

[英]How to loop through each file in a folder, do some action to the file and save output to a file in another folder Python

我有一個包含多個文件的文件夾,如下所示:

1980

1981年

1982年

在每個文件中都有一些文本。 我想遍歷每個文件,並對每個文件進行一些操作,然后將編輯后的文件保存到另一個文件夾,然后移至下一個文件,依此類推。 結果將是我有原始文件夾,然后是另一個文件夾,其中每個文件的編輯版本如下:

1980_過濾

1981_filtered

1982_filtered

是否有可能做到這一點?

目前,我有一些代碼可以遍歷文件夾中的文件,對每個文件進行一些過濾,然后將每個文件的所有編輯保存到一個大文件中。 這是我的代碼:

import os
input_location = 'C:/Users/User/Desktop/mini_mouse'
output_location = 'C:/Users/User/Desktop/filter_mini_mouse/mouse'
for root, dir, files in os.walk(input_location):
    for file in files:
        os.chdir(input_location)
        with open(file, 'r') as f, open('NLTK-stop-word-list', 'r') as f2:
            mouse_file = f.read().split()  # reads file and splits it into a list
            stopwords = f2.read().split()
            x = (' '.join(i for i in mouse_file if i.lower() not in (x.lower() for x in stopwords)))
            with open(output_location, 'a') as output_file:
                output_file.write(x)

任何幫助將不勝感激!

您需要指定每個新文件的名稱。 為此,Python有一些不錯的字符串格式化方法。 幸運的是,您可以輕松地循環執行新的所需文件名

import os
input_location = 'C:/Users/User/Desktop/mini_mouse'
output_location = 'C:/Users/User/Desktop/filter_mini_mouse/mouse'
for root, dir, files in os.walk(input_location):
    for file in files:
        new_file = "{}_filtered.txt".format(file)
        os.chdir(input_location)
        with open(file, 'r') as f, open('NLTK-stop-word-list', 'r') as f2:
            mouse_file = f.read().split()  
            stopwords = f2.read().split()
            x = (' '.join(i for i in mouse_file if i.lower() not in (x.lower() for x in stopwords)))
            with open(output_location+'/'+new_file, 'w') as output_file: # Changed 'append' to 'write'
                output_file.write(x)

如果您使用的是Python 3.7,則可以

new_file = f"{file}_filtered.txt"

with open(f"{output_location}/{new_file}", 'w') as output_file:
    output_file.write(x)

首先,您應該只打開一次NLTK-stop-word-list ,所以我將其移出了循環。 其次, os.chdir()是多余的,您可以使用os.path.join()來獲取當前文件路徑(並構造新文件路徑):

import os
input_location = 'C:/Users/User/Desktop/mini_mouse'
output_location = 'C:/Users/User/Desktop/filter_mini_mouse/'
stop_words_path = 'C:/Users/User/Desktop/NLTK-stop-word-list.txt'
with open(stop_words_path, 'r') as stop_words:
    for root, dirs, files in os.walk(input_location):
        for name in files:
            file_path = os.path.join(root, name)
            with open(file_path, 'r') as f:
                mouse_file = f.read().split()  # reads file and splits it into a list
                stopwords = stop_words.read().split()
                x = (' '.join(i for i in mouse_file if i.lower() not in (x.lower() for x in stopwords)))
                new_file_path = os.path.join(output_location, name) + '_filtered'
                with open(new_file_path, 'a') as output_file:
                    output_file.write(x)

PS:我可以自由更改某些變量名,因為它們是python內置單詞(“文件”和“目錄”)的一部分。 如果您要運行__builtins__.__dict__.keys() ,則會在其中看到它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM