For循环不在目录中的文件上迭代

2024-04-19 01:16:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让for fn in dirs:下面的第一个for循环遍历目录中的文件列表,并合并具有相似文件名的文件。循环似乎只执行一次,而不是对dirs = os.listdir(path)中列出的所有文件执行一次。我试过其他帖子中提到的几件事,但都没用。在

迭代循环对我有什么帮助?在

import pandas as pd
import os
import glob 

path = r"C:\Users\St\Documents\House\m2"
dirs = os.listdir(path)  #list of .csv files

for fn in dirs:
    for fn in glob.glob(os.path.join(path, '*2.csv')):
        W = fn      
        if len(W) == 48:   # some filenames are one character shorter
            root2 = W[:43]
        else:
            root2 = W[:42]
    for fn in glob.glob(os.path.join(path, '*J.csv')):
        J = fn
        if len(J) == 48:
            jroot = J[:43]
        else:
            jroot = J[:42]
    for fn in glob.glob(os.path.join(path, '*T.csv')):
        T = fn      
        if len(T) == 48:
            troot = T[:43]
        else:
            troot = T[:42]         
    for fn in glob.glob(os.path.join(path, '*S.csv')):
        S = fn      
        if len(S) == 48:
            sroot = S[:43]
        else:
            sroot = S[:42]              
    for fn in glob.glob(os.path.join(path, '*D.csv')):
        D = fn     
        if len(D) == 48:
            droot = D[:43]
        else:
            droot = D[:42] 
    for fn in glob.glob(os.path.join(path, '*R.csv')):
        R = fn       
        if len(R) == 48:               
            rroot = R[:43]
        else:
            rroot = R[:42]       

    WW = pd.read_csv(W) #read csv so I can use pd.merge
    JJ = pd.read_csv(J)   
    TT = pd.read_csv(T)
    SS = pd.read_csv(S) 
    DD = pd.read_csv(D)
    RR = pd.read_csv(R)

    if jroot == root2:  #merge files with names that start with same characters
        JW = pd.merge(WW, JJ, on="JN")
    if jroot == troot:
        TW = pd.merge(JW, TT, on="TN")
    if jroot == sroot:
        SW = pd.merge(TW, SS, on="SN")   
    if jroot == droot:
        DW = pd.merge(SW, DD, on="DN")
    if jroot == rroot:
        RW = pd.merge(RR, DW, on="HN")
        data = RW
        data.to_csv(jroot + "x.csv")  #export final merged dataframe to .csv

一个正确合并的数据帧返回文件夹。我预计会有几百人。在


Tags: csvpathinforreadlenifos