【发布时间】:2020-11-23 12:33:34
【问题描述】:
我有一个包含多个子目录和子子目录的目录。 我的目标是读取所有 csv 文件并将它们附加到每个子目录一个大 csv 文件中(PS 不是每个子子目录一个大 csv 文件,而是每个子目录一个文件)。
以下是我用来将所有 csv 文件附加到 1 个大 csv 文件中的代码,但此代码的唯一问题是 最终的 csv 文件大约为 ~890 MB,这使得它当您尝试在 Microsoft Excel 中打开文件时无法读取,因为它遇到“内存问题”。
dirName = 'FTP_Data/2019/'
allFilesList = list()
print('[info.] looking for .csv files.')
for (dirpath, dirnames, filenames) in os.walk(dirName):
for file in filenames:
if file.endswith('.csv'):
allFilesList += [os.path.join(dirpath, file).replace('\\','/')]
print('[info.] combining all the .csv files.')
combined_csv = pd.concat([pd.read_csv(file, sort=True) for file in allFilesList])
print('[info.] exporitng to one final output file.')
combined_csv.to_csv('FinalOutputFrom2019.csv', index=False, encoding='utf-8')
以上代码生成一个名为“FinalOutputFrom2019.csv”的大 csv 文件。
现在如果目录结构如下,我希望它每月生成 12 个文件 - 2019-01.csv,2019-02.csv,2019-03.csv,2019-04.csv,2019-05.csv,2019-06.csv,@987654328 @,2019-08.csv,2019-09.csv,2019-10.csv,2019-11.csv,2019-12.csv
FTP_data
|-- 2019
|-- 2019-01
|-- 2019-01-01
|-- foo.csv
|-- bar.csv
|-- foobar.xml
|-- 2019-01-03
|-- foobar.csv
|-- ...
|-- 2019-02
|-- 2019-02-02
|-- ...
|-- 2019-02-03
|-- ...
|-- 2019-02-05
|-- ...
|-- ...
【问题讨论】:
-
你在循环
2019-01到2019-12时遇到了什么困难? -
@BillHuang 没有任何困难。创建的最终文件非常大,以至于在 Microsoft Excel 中打开它变得不切实际。它遇到“内存问题”,因为最终文件的大小约为 800+ MB