Python:我有文本文件,需要按升序日期时间数据进行排序

时间:2019-03-25 09:11:56

标签: python-3.x

我有这样的Python代码(3.x)。该代码从数据库中读取数据,并将其写入文件夹名称和最后修改日期的文本文件(file2.text)。我需要按升序对最后修改日期的数据进行排序。

我已经尝试过有关排序的代码,但是它不起作用。

` 我的文本文件包含此信息

Foldername:     last modified: 
AR112           2018-06-21 11:42:45 
AR231           2018-07-06 14:25:10 
AR234           2018-06-28 15:10:54 
AR784           2018-07-06 14:25:40 
AR142           2018-04-26 10:35:59 
AR147           2018-06-21 11:56:26 
OTHER           2018-12-10 13:18:21 
*** Last folder created by MC1 at *** :Fri Mar 15 10:41:26 2019   

,我想在下面获得此信息(日期/时间升序排列)并写回到文本文件中

Foldername:     last modified:
AR142           2018-04-26 10:35:59  
AR112           2018-06-21 11:42:45
AR147           2018-06-21 11:56:26  
AR234           2018-06-28 15:10:54
AR231           2018-07-06 14:25:10  
AR784           2018-07-06 14:25:40 
OTHER           2018-12-10 13:18:21 
*** Last folder created by MC1 at *** :Fri Mar 15 10:41:26 2019`


Here is my code.

---测试工作

#print("Folder is : ",time.ctime(max(os.stat(r).st_mtime for r, d, _ in os.walk(thisdir))))

all_subdirs = (d for d in os.listdir(thisdir) if os.path.isdir(d))
latest_subdir = max(all_subdirs, key=os.path.getmtime, _ )
#latest_subdir = max((os.path.getmtime(f), f) for f in all_subdirs)[1]
print("XXXX=",latest_subdir)
# --- End working

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:读取所有行,按日期对其进行排序,然后将其写回到文件中。为了避免跳到第一行和最后一行,我分别进行了处理,但是您也可以从之前的行中删除它们。

from datetime import datetime
with open("my_file") as f:
    lines = f.readlines()

def sort_key(line):
    if line.startswith("Folder"):
        return 0  # put this at the beginning
    elif line.startswith("***"):
        return float("inf")  # infinity; put this at the end
    date_str = line.strip().split(maxsplit=1)[1]
    date = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
    return date.toordinal()

lines.sort(key=sort_key)
with open("new_file", "w") as f:
    for line in lines:
        f.write(line)
        f.write("\n")