我在一个公共的父文件夹中有多个文件夹,说“工作”。在其中,我有多个子文件夹,分别名为“ sub01”,“ sub02”等。所有文件夹内部都有相同的文件,例如mean.txt,sd.txt。
我必须将所有“ mean.txt”的内容添加到一个文件中。我被困住了,如何一一打开子文件夹。谢谢。
getting all files as a list
g = open("new_file", "a+")
for files in list:
f = open(files, 'r')
g.write(f.read())
f.close()
g.close()
我没有得到如何获得子文件夹中所有文件的列表的方法,
************编辑*********************
找到了解决方案 os.walk()有帮助,但是有一个问题,它是随机的(它没有按字母顺序进行迭代) 必须使用排序使它顺序排列
import os
p = r"/Users/xxxxx/desktop/bianca_test/" # main_folder
list1 = []
for root, dirs, files in os.walk(p):
if root[-12:] == 'native_space': #this was the sub_folder common in all parent folders
for file in files:
if file == "perfusion_calib_gm_mean.txt":
list1.append(os.path.join(root, file))
list1.sort() # os.walk() iterated folders randomly; this is to overcome that
f = open("gm_mean.txt", 'a+')
for item in list1:
g = open(item, 'r')
f.write(g.read())
print("writing", item)
g.close()
f.close()
感谢所有提供帮助的人。
答案 0 :(得分:0)
据我了解,您希望将所有“ mean.txt”文件整理为一个文件。这应该可以完成工作,但是请注意,没有顺序将文件放到哪里。还请注意,由于字符串在Python中是不可变的,因此我正在使用StringIO()缓冲所有数据。
import os
from io import StringIO
def main():
buffer = StringIO()
for dirpath, dirnames, filenames in os.walk('.'):
if 'mean.txt' in filenames:
fp = os.path.join(dirpath, 'mean.txt')
with open(fp) as f:
buffer.write(f.read())
all_file_contents = buffer.getvalue()
print(all_file_contents)
if __name__ == '__main__':
main()
答案 1 :(得分:-1)
这是一个伪代码,可帮助您入门。尝试搜索,阅读和理解解决方案,以使自己成为一名程序员变得更好:
open mean_combined.txt to write mean.txt contents
open sd_combined.txt to write sd.txt contents
for every subdir inside my_dir:
for every file inside subdir:
if file.name is 'mean.txt':
content = read mean.txt
write content into mean_combined.txt
if file.name is 'sd.txt':
content = read sd.txt
write content into sd_combined.txt
close mean_combined.txt
close sd_combined.txt
您需要查看如何:
open
)pathlib
)