我试图用多个文件夹创建一个文件,我有多个文件夹。这是我的连接代码。仅当程序文件放在每个文件夹中时才有效:
import os
file_list = [each for each in cur_folder if each.endswith(".txt")]
print file_list
align_file = open("all_the_files.txt","w")
seq_list = []
for each_file in file_list:
f_o = open(file_path,"r")
seq = (f_o.read().replace("\n",""))
lnth = len(seq)
wholeseq = ">"+each_file+" | "+str(lnth)+" nt\n"+seq+"\n"
align_file.write(wholeseq)
print "done"
现在我尝试编辑以确保它自动运行整个Data
文件夹,然后进入子目录并连接所有文件,而不必将程序文件粘贴到每个文件夹中。这是编辑。
import os
dir_folder = os.listdir("C:\Users\GAMER\Desktop\Data")
for each in dir_folder:
cur_folder = os.listdir("C:\\Users\\GAMER\\Desktop\\Data\\"+each)
file_list = []
file_list = [each for each in cur_folder if each.endswith(".txt")]
print file_list
align_file = open("all_the_files.txt","w")
seq_list = []
for each_file in file_list:
f_o = open(file_path,"r")
seq = (f_o.read().replace("\n",""))
lnth = len(seq)
wholeseq = ">"+each_file+" | "+str(lnth)+" nt\n"+seq+"\n"
align_file.write(wholeseq)
print "done" , cur_folder
然而,当我运行此文件时,我在文件夹的第一个文件中收到错误消息,说明没有这样的文件。我似乎可以理解为什么,特别是因为它命名的文件不是“硬编码”。任何帮助将不胜感激。
如果代码看起来很难看,你可以随意提出更好的方法。
答案 0 :(得分:2)
Jamie是正确的 - os.walk很可能是你需要的功能。
基于您的用例的示例:
for root, dirs, files in os.walk(r"C:\Users\GAMER\Desktop\Data"):
for f in files:
if f.endswith('.txt'):
print(f)
这将打印os.walk中传递的根目录中每个文件夹中每个文件的名称,只要文件名以.txt结尾。
Python的文档在这里:https://docs.python.org/2/library/os.html#os.walk