鱼C论坛

 找回密码
 立即注册
查看: 1627|回复: 3

[已解决]使用pathlib模块统计当前目录最后被修改的文件

[复制链接]
发表于 2023-3-5 17:18:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题起因:在复习Python新版课程的第54讲的内容时,其中有一道题是这样的:利用pathlib模块找出当前目录中最后被修改的内容
我先利用小甲鱼老师的代码试了一下,结果却显示最后被修改的文件是源代码文件,这显然不是我想要的结果,于是我模仿
了下一节课的方法:使用__file__获取相应源代码的路径,但还是没有得到理想的结果,请问一下问题到底出在哪里,该怎么解决咧?
最佳答案
2023-3-5 18:14:00
本帖最后由 hrpzcf 于 2023-3-5 18:15 编辑

用 each 和 __file__ 对比是不成的,因为 each 是 Path 对象,__file__ 是 str 对象。就算两者都是 str 类型也不应该用 == 判断是否同一文件,因为路径大小写等格式不同,有可能实际同一个文件有不同路径写法。
应该是这样:each.samefile(__file__) 判断是否同一文件
屏幕截图 2023-03-05 170727.png
屏幕截图 2023-03-05 170827.png
屏幕截图 2023-03-05 165233.png
屏幕截图 2023-03-05 165902.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-5 17:56:24 | 显示全部楼层
贴一下代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 18:14:00 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hrpzcf 于 2023-3-5 18:15 编辑

用 each 和 __file__ 对比是不成的,因为 each 是 Path 对象,__file__ 是 str 对象。就算两者都是 str 类型也不应该用 == 判断是否同一文件,因为路径大小写等格式不同,有可能实际同一个文件有不同路径写法。
应该是这样:each.samefile(__file__) 判断是否同一文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-5 20:58:01 | 显示全部楼层
  1. from pathlib import Path
  2. import os

  3. os.chdir('D:/pyTest')
  4. p = Path.cwd()
  5. files = [f for f in p.iterdir() if f.is_file()]

  6. # lookup the latest modified file
  7. latest_m_file = max(files, key=lambda f: f.stat().st_mtime)
  8. print(latest_m_file)  # 注意它是Path构造出来的一个实例对象

  9. # except this script file itself
  10. print(__file__)   # __file__只是该文件路径的字符串,且分隔符在不同系统下有所不同
  11. this_file = Path(__file__)  
  12. print(this_file)

  13. print(this_file == latest_m_file)  # 都是Path的实例就可以这样比较判断了

  14. # so, like this
  15. files = [f for f in p.iterdir() if f.is_file() and f != this_file]
  16. latest_i_wanted = max(files, key=lambda f: f.stat().st_mtime)
  17. print(latest_i_wanted)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 18:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表