Skip to main content
 首页 » 编程设计

python 转换 ls -l 样式日期

2025年05月04日32lyj

我有一些类似于 ls -l 的输出,即

drwxr-x---.   2 root   root     4.0K Nov 10  2014 sudoers.d 
----------.   1 root   root     1.1K Nov 18 15:12 shadow- 
-rw-r--r--.   1 root   root     1.7K Jan 13 21:18 motd 
drwxr-xr-x.   2 root   root     4.0K Feb 13 15:29 snmp 

使用 python 将日期/时间转换为某种可用格式(YYMMDD、纪元等)以进行排序的最佳方法是什么?

不幸的是,我无法更改给出的输出,所以必须使用它。

我确信这个问题之前已经解决了,但我似乎找不到解决方案。如您所见,格式为:

%b %d %H:%M  

除非它早于 6 个月前,在这种情况下

%b %d %Y 

我还没有尝试在代码中解决这个问题,因为我真的希望我在某处遗漏了一些实用函数,因为它是一种有点常见的格式。

请您参考如下方法:

  1. 对于每一行,抓取第四和第七组空格之间的所有文本,这样您就有了一个字符串数组,例如:"Nov 10 2014""Nov 18 15:12" 等。您可以使用正则表达式捕获此文本。

  2. 接下来,测试数组的每个元素是否包含一个:。这将告诉您是使用 "%b %d %H:%M" 还是 "%b %d %Y"

  3. datetime.strptime 与上述条件日期格式一起使用。