将不同目录的粘贴文件复制到一个文件夹

copy paste files from different directories to one folder

我又卡住了! 我的故事是:

我需要找到一个目录中不同文件夹中名为 "tv.sas7bdat" 的文件,并将找到的所有文件的内容保存到桌面上的单个 excel 文件中。使用我的实际代码,我可以获得该文件的所有路径并将其内容传输到数据框。但是,我无法将所有数据帧附加到一个 Excel 文件中。

在我的 excel 中,我只找到最后一个数据帧!!

这是我的代码,

import pandas as pd
from sas7bdat import SAS7BDAT
import os

path = "\"
newpath = "\"

files = []
# r=root, d=directories, f = files
for r, d, f in os.walk(path):
    for file in f:
        if 'tv.sas7bdat' in file:
            files.append(os.path.join(r,  file))

lenf = range(len(files))
for f in files:
    print(f)

for df in lenf:

    with SAS7BDAT(f) as file:
        df = file.to_data_frame()
        print(df)

    group =pd.concat([df], axis=0, sort=True, ignore_index = True)
    df.to_excel(newpath + 'dataframes_tv.xlsx',index=False)

您可能需要使用 shutil 模块,它允许您使用 copytree 功能复制目录和其中的文件。示例:

import shutil
shutil.copytree('/path/to/source', 'path/to/destination')

如果不想更改您的代码,您可以 enumerate 您的文件列表以通过从列表中获取第一个文件来将初始数据框分配为一侧的占位符来拆分流程,然后列表中的剩余文件将所有其余数据帧附加到初始数据帧

编辑 enumeratefiles 列表

的代码片段
    # save the first dataframe from 1st list element
    df = SAS7BDAT(files[0]).to_data_frame()

    # enumerate the list to access greater elements
    for k, f in enumerate(files):
        # from 2nd element onward
        if k > 0:
            with SAS7BDAT(f[k]) as file:
                # append all elements to the 1st
                df = df.append(file.to_data_frame())

    group = pd.concat([df], axis=0, sort=True, ignore_index=True)
    df.to_excel('dataframes_tv.xlsx', index=False)