通过多个文件夹连接多个文件

时间:2014-10-29 16:58:26

标签: python file-io

我试图用多个文件夹创建一个文件,我有多个文件夹。这是我的连接代码。仅当程序文件放在每个文件夹中时才有效:

        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

然而,当我运行此文件时,我在文件夹的第一个文件中收到错误消息,说明没有这样的文件。我似乎可以理解为什么,特别是因为它命名的文件不是“硬编码”。任何帮助将不胜感激。

如果代码看起来很难看,你可以随意提出更好的方法。

1 个答案:

答案 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