我试图在Python中获取usb驱动器的最后修改日期。 我知道os.path.getmtime()和os.stat(),但这些只适用于文件夹和文件。当我在usb驱动器的根路径上运行os.path.getmtime()时,我得到" Mon Dec 31 23:00:00 1979" (在Windows 7上)或1970年的某个日期(在Linux上)。
循环浏览内容并找到最近修改过的文件不会有帮助,因为我可以通过添加和删除文件来修改驱动器的内容,而无需实际更改其上次修改日期。
我需要这个,因为我正在编写一个脚本,要求将usb驱动器上的文件和文件夹编入数据库索引。如果有很多项目,这可能需要一些时间,所以我只想重新索引内容,如果它自上次使用该驱动器以来已经发生了变化。
编辑:脚本播放音频文件(来自USB驱动器或其他地方),这些文件很可能无法更改。真正重要的是检查驱动器的内容是否已更改(如果添加或删除了音频文件和文件夹)。内容由脚本编制索引,因为它需要每个文件(在USB驱动器上或不在USB驱动器上)的唯一ID来制作播放列表。
提前感谢您的帮助。
答案 0 :(得分:0)
你可以使用hashlib和glob库来循环遍历文件并为每个文件计算一个哈希并将其存储在某个文件中。然后检查当前被调用的哈希与前一个哈希,如果它们不同则执行数据库更新
答案 1 :(得分:0)
找到最后一个"事件"而不是找到最后修改过的文件。使用max(os.lstat(file)[-3:])
:
import datetime
import os
volume = 'F:/'
#simply yelds all files in all subdirs of the volume
def all_files(volume):
for root, dirnames, filenames in os.walk(volume):
for filename in filenames:
yield os.path.join(root, filename)
print datetime.datetime.fromtimestamp(max((max(os.lstat(file)[-3:]) for file in all_files(volume))))
在我的系统(WinXP)中工作,我试图在卷中修改创建o复制/粘贴文件。
不适用于文件备份。