我有这样的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
答案 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")