按日期对目录中的多个csv文件进行排序python

若昂

在名为Original的同一目录中多个 .csv文件,我想按日期对所有这些文件进行排序,降序(最旧的第一个)-第二列。每个文件都应该排序并覆盖原始文件。有可能吗?如果没有,则保存在另一个名为Sorted 的目录中有人可以帮助我吗?

原始 csv

ORA.PA,13/04/2021,10.35,10.35,10.14,10.21,4299528
ORA.PA,27/02/2019,13.36,13.48,13.29,13.3,6929606
ORA.PA,26/02/2019,13.46,13.52,13.35,13.4,6031759
ORA.PA,05/11/2018,13.94,14.21,13.9,14.16,7692439
ORA.PA,02/11/2018,14.1,14.1,13.9,13.96,6867565
ORA.PA,15/04/2011,7.84,7.89,7.7,7.75,8277622
ORA.PA,14/08/2001,20.22,20.22,19.74,19.85,9221300

所需的输出

ORA.PA,14/08/2001,20.22,20.22,19.74,19.85,9221300
ORA.PA,15/04/2011,7.84,7.89,7.7,7.75,8277622
ORA.PA,02/11/2018,14.1,14.1,13.9,13.96,6867565
ORA.PA,05/11/2018,13.94,14.21,13.9,14.16,7692439
ORA.PA,26/02/2019,13.46,13.52,13.35,13.4,6031759
ORA.PA,27/02/2019,13.36,13.48,13.29,13.3,6929606
ORA.PA,13/04/2021,10.35,10.35,10.14,10.21,4299528

这是我使用的代码但不起作用,我什么也没得到

import csv
import operator
import glob

data = dict() 

path="/Original/*.csv"
files=glob.glob(path)

for filename in files:
    with open(filename, 'r') as f:
        lists = [row for row in csv.reader(f, delimiter=',')]
        data[filename] = sorted(lists, operator.itemgetter(1), reverse=True)

谢谢!

猫头鹰苏罗吉特

您的代码存在多个问题。主要是你只是从文件中读取;不写它。您需要使用 'r+' 选项打开文件,以便能够写入文件和读取文件。此外,排序不会以这种方式工作,因为日期的格式为 dd/mm/yyyy。为了排序,它们应该颠倒,所以 yyyy-mm-dd。我还将从您的代码中读取的内联数据更改为实际的 for 循环,因为内联解决方案不起作用,尽管我不知道为什么会这样......

总而言之,以下代码应该可以解决您的问题,请让我知道它是否有效...

import csv
import operator
import glob

path="./Original/*.csv"
files=glob.glob(path)

for filename in files:
    with open(filename, "r+", newline='') as f:
        reader = csv.reader(f, delimiter=',')
        lists = []
        for row in reader:
            lists.append(row)

        # Reverses the date for sorting, so that they are sorted correctly        
        lists.sort(key=lambda a:'-'.join(a[1].split('/')[::-1]))

        # deletes content of the file
        f.truncate(0)
        f.seek(0)

        # writes the new data to the file
        writer = csv.writer(f)
        writer.writerows(lists)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按日期对csv文件的输出进行排序python

按日期对目录进行排序Python

在 Python 中对多个目录中的文件进行排序

按创建日期(出生日期)对目录中的文件进行排序

按升序对每个目录中的目录和文件进行排序,然后将数据导出到csv

如何在Java中按日期对目录中的文件进行排序?

如何根据Windows OS中目录的最新更新文件或子目录按日期对目录进行排序

如何在python中按创建日期对目录列表进行排序?

按名称中的日期对文件数组进行排序

用于对目录中多个文件的内容进行排序的脚本

在csv文件中对整数进行排序-python

按名称对文件进行数字排序,然后按BASH中的父目录排序

按日期对csv列进行排序

按名称中的日期对JAVA中的文件数组进行排序(不按修改日期)

用python对多个json文件的日期进行排序

按日期对Python列表中的元素进行排序

如何在Python中按日期对DataFrame进行排序?

如何在python中按日期时间对列表进行排序?

在Python 3.4中按日期对字典列表进行排序

目录进入数组,然后按创建日期对文件进行排序

按名称相同的包含文件的最后修改日期/时间对目录进行排序

按值对python中的多个字典进行排序

从python中的目录中读取文件并对其进行排序

按JSON中的值对python中的JSON文件进行排序

在python中按日期时间排序文件

按列对csv文件进行排序

Python:按日期对嵌套字典进行排序

Python,按日期对象对列表进行排序

按日期对列表的python字典进行排序