文章内容

2022/4/26 15:15:01,作 者: 黄兵

利用 Python 对文件排序

最近需要两个服务器之间同步文件, 需要对最近修改的文件进行同步,使用 Python 脚本 + Linux 服务的方式来不间断运行程序。

Python 通过以下代码获得当前文件夹下的文件列表:

import os

file_list = os.listdir(“./”)

上面获取的是当前文件夹下的文件名列表,其排列顺序可能与我们想要的不大相同,所以我们需要对文件进行排序,文件按照数字大小来命名,那么我们可以使用列表的 sort() 方法来对其进行排序,但默认它是按 string 的排序方法排序的。

  • 如果我们想要让它按数字大小来排序,那么我们可以使用 sort() 的 key 参数,key 参数是一个函数,具体操作如下:
import os

file_list = os.listdir(“./”)

file_list.sort(key= lambda x: int(x[:-4]))

-4 是索引到文件名的倒数第四个字符,也就是’.’符号, 所以 int(x[:-4]) 实际上是把 ’.’ 前边的字符串转化为了数字,然后根据数字大小进行排序。

  • 当然,如果想利用字母进行排序,可以这样做:
import os

file_list = os.listdir(“./”)

file_list.sort(key = str.lower)
  • 如果想根据文件名长度排序,可以这么做:
import os

file_list = os.listdir(“./”)

file_list.sort(key=len)
如果我们需要按照最后创建或者修改时间来排序,示例代码如下:
@staticmethod
def get_file_list(file_path):
dir_list = os.listdir(file_path)
if not dir_list:
return
else:
# 注意,这里使用lambda表达式,将文件按照最后修改时间顺序升序排列
# os.path.getmtime() 函数是获取文件最后修改时间
# os.path.getctime() 函数是获取文件最后创建时间
dir_list = sorted(dir_list, key=lambda x: os.path.getmtime(os.path.join(file_path, x)))
# print(dir_list)
return dir_list

分享到:

发表评论

评论列表