文件操作-获取文件状态-《Python教程》

admin 2025-10-19 17:54:16 编程 来源:ZONE.CI 全球网 0 阅读模式

1. 获取文件的时间状态

在日常的任务中,对于文件的时间状态不怎么关心,因为使用到文件时间状态的场景并不多。但是有时候我们的跑批任务会每天固定去读一个文件(该文件每天会刷新),如果对于文件的创建时间或修改时间不加以检查,就会造成读取的还是当天还未更新的文件,必然所生成的数据也是错误的。

通常文件的时间状态包含修改时间创建时间以及访问时间,我们可以使用os包来获取对应状态,具体所使用到函数如下表:

函数 描述
os.path.getatime 文件的访问时间
os.path.getctime 文件的创建事件
os.path.getmtime 文件的最近修改时间

:::info 🕖 小技巧————————————

  • getatime中的a可以记为 arrive,表示访问
  • getctime中的c可以记为 create,表示创建
  • getmtime中的m可以记为 modify,表示修改 :::

除了使用上述 3 个函数获取对应的时间状态,os库还提供了一个函数os.stat用于获取所有信息

  1. import os
  2. from datetime import datetime
  3. filename = "/home/yumingmin/test.txt"
  4. t = os.stat(filename)
  5. print(t)
  6. # os.stat_result(
  7. # st_mode=33279,
  8. # st_ino=22236523160166459,
  9. # st_dev=39,
  10. # st_nlink=1,
  11. # st_uid=0,
  12. # st_gid=0,
  13. # st_size=379368,
  14. # st_atime=1642464373,
  15. # st_mtime=1642464373,
  16. # st_ctime=1642486008)

这里主要使用到的是st_atimest_ctimest_mtime,分别对应访问时间、创建事件和修改时间。

  1. from datetime import datetime
  2. print("文件最后的访问时间:", datetime.fromtimestamp(t.st_atime))
  3. print("文件创建的时间:", datetime.fromtimestamp(t.st_ctime))
  4. print("文件最后的修改时间:", datetime.fromtimestamp(t.st_mtime))
  5. # 文件最后的访问时间:2022-01-18 08:06:13.202141
  6. # 文件创建的时间:2022-01-18 14:06:48.896838
  7. # 文件最后的修改时间:2022-01-18 08:06:13.202141

1.1 修改时间

使用os.path.getmtime来获取文件的修改时间,输出值是一个浮点数,我们需要借助datetime.datetime.timestamp函数将其进行转换,从而得到一个时间格式的对象。

  1. import os
  2. from datetime import datetime
  3. filename = "/home/yumingmin/test.txt"
  4. t1 = os.path.getmtime(filename)
  5. print(t1) # 1642464373.2021406
  6. t2 = datetime.datetime.fromtimestamp(t1)
  7. print(t2) # 2022-01-18 08:06:13.202141

1.2 创建时间

获取文件的创建时间与修改时间几乎一致,我们使用os.path.getctime函数来完成。

  1. import os
  2. from datetime import datetime
  3. filename = "/home/yumingmin/test.txt"
  4. t1 = os.path.getctime(filename)
  5. print(t1) # 1642486008.8968382
  6. t2 = datetime.datetime.fromtimestamp(t1)
  7. print(t2) # 2022-01-18 14:06:48.896838

1.3 访问时间

获取文件的访问时间与修改时间几乎一致,我们使用os.path.getatime函数来完成。

  1. import os
  2. from datetime import datetime
  3. filename = "/home/yumingmin/test.txt"
  4. t1 = os.path.getctime(filename)
  5. print(t1) # 1642464373.2021406
  6. t2 = datetime.datetime.fromtimestamp(t1)
  7. print(t2) # 2022-01-18 08:06:13.202141
    以太坊cppgolang区别 编程

    以太坊cppgolang区别

    以太坊是一种去中心化的开源平台,它采用智能合约技术,旨在构建和运行不受干扰的分布式应用程序。作为目前最受欢迎的区块链平台之一,以太坊提供了多种编程语言的支持,其
    progolang 编程

    progolang

    Go语言(Golang)是由Google开发的一门静态类型编程语言。作为一名专业的Golang开发者,我深知这门语言的优势和特点。在本文中,我将介绍Golang
    golangn个发送者 编程

    golangn个发送者

    Golang是一种开源的编程语言,由Google团队开发,旨在提高程序的并发性和简化软件开发过程。在Go语言中,有时需要向多个接收者发送信息。本文将介绍如何在G
    golang技能图谱 编程

    golang技能图谱

    从互联网行业的快速发展到人工智能技术的日益成熟,各种编程语言也应运而生。而在这众多的编程语言中,Golang(即Go)作为一门强大且高效的开发语言备受关注。Go
    评论:0   参与:  8