一纸水与青 发表于 2023-3-5 17:18:06

使用pathlib模块统计当前目录最后被修改的文件

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

suchocolate 发表于 2023-3-5 17:56:24

贴一下代码

hrpzcf 发表于 2023-3-5 18:14:00

本帖最后由 hrpzcf 于 2023-3-5 18:15 编辑

用 each 和 __file__ 对比是不成的,因为 each 是 Path 对象,__file__ 是 str 对象。就算两者都是 str 类型也不应该用 == 判断是否同一文件,因为路径大小写等格式不同,有可能实际同一个文件有不同路径写法。
应该是这样:each.samefile(__file__) 判断是否同一文件

阿奇_o 发表于 2023-3-5 20:58:01

from pathlib import Path
import os

os.chdir('D:/pyTest')
p = Path.cwd()
files =

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

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

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

# so, like this
files =
latest_i_wanted = max(files, key=lambda f: f.stat().st_mtime)
print(latest_i_wanted)
页: [1]
查看完整版本: 使用pathlib模块统计当前目录最后被修改的文件