[英]Python: Loop through a folder and save data from first tab of each file and save to new file on separate tabs
[英]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.