gpt4 book ai didi

python - 按日期将文件合并为一个文件

转载 作者:行者123 更新时间:2023-12-01 06:30:05 26 4
gpt4 key购买 nike

我正在使用一个每天都会放入大量文件的目录。我想知道如何将所有每日文件合并为一个每日文件。例如,文件路径包含以下文件:

Name    Date Modified
a.csv 01/01/2020 9:00 AM
b.csv 01/01/2020 10:00 AM
c.csv 01/01/2020 12:00 AM
d.csv 01/03/2020 8:00 AM
e.csv 01/03/2020 11:00 AM
f.csv 01/04/2020 9:00 AM

所需的文件输出:

Name    
combined_01012020.csv
combined_01032020.csv
combined_01042020.csv

只需将 1 月 1 日的每个文件合并为一个文件,依此类推。到目前为止我已经做到了这一点,但这不是我想要的:

import os
import glob
import time
from datetime import timedelta,datetime
import pandas as pd

file_path = 'C:\csv_files'
files = glob.glob(os.path.join(path,"*.csv")

new_csv = list()
for f in files:
new_csv.append(f)

time = time.strftime("%Y%m%d")
new_csv.to_csv(r'C:\daily_csv_files\combined' + str(time)+'.csv', index=False)

这一切所做的就是将我拥有的所有文件合并到一个文件中。我一直在尝试计算我想要的日期部分,但没有任何运气,只是将所有内容合并到一个大文件中。任何帮助,将不胜感激。

最佳答案

使用pathlib和defaultdict

我们可以迭代地搜索您的目录中的 csv,然后我们可以创建一个以文件为键、值为日期时间的字典,然后我们可以对该字典进行反向工程,以创建一个以日期时间为键、以日期时间为值的字典。文件作为文件列表。 (我确信这可以一步完成,但我对字典很讨厌)

注意 - 请确保复制文件。

设置写入文件的目标路径。

要获取最新的修改时间,我们可以利用 stat属性为我们提供了有关文件的一些信息。我们感兴趣的是文件最后一次修改的时间。

我们使用f.stat().st_mtime在您的Pathlib上对象将其转换为日期时间,然后格式化日期以匹配您指定的格式 %m_%d_%y

from pathlib import Path
from collections import defaultdict
from datetime import datetime

my_path = 'your_dir'

files = [f for f in Path(my_path).glob('*.csv')]
# create a dictionary with file as key and time as value.
file_dict = dict(
zip(
files,
[datetime.fromtimestamp(f.stat().st_mtime).strftime("%m_%d_%y") for f in files],
)
)

#reverse engineer the list so it has a list appended by the date.

file_merger_list = defaultdict(list)

for k,v in file_dict.items():
file_merger_list[v].append(k)

# make folder to write to.
target_path = Path(your_path).joinpath('mergedfiles').mkdir(parents=True,exists_ok=False)


for date,file in file_merger_list.items():
df = pd.concat([pd.read_csv(f) for f in file])
df.to_csv(target_path.joinpath(f"combined_{date}.csv"))

输出

 ['combined_01_02_20.csv',
'combined_01_28_20.csv',
'combined_12_02_19.csv',
'combined_12_09_19.csv']

关于python - 按日期将文件合并为一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952559/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com