在Python中使用win32com.shell.shell获取指定文件的修改时间
发布时间:2024-01-14 10:42:00
在Python中,可以使用win32com.shell.shell模块来获取指定文件的修改时间。
首先,需要安装pywin32库。可以使用以下命令安装:
pip install pywin32
下面是一个获取指定文件的修改时间的示例代码:
import win32com.shell.shell as shell
import pythoncom
# 初始化COM组件
pythoncom.CoInitialize()
# 指定文件的路径
file_path = r'C:\path\to\file.txt'
# 创建Shell对象
shell_obj = shell.Shell()
# 获取文件的修改时间
file_info = shell_obj.NameSpace(file_path).GetDetailsOf(shell_obj.NameSpace(file_path).Items().Item(), 3)
# 打印修改时间
print('修改时间:', file_info)
# 释放资源
shell_obj = None
pythoncom.CoUninitialize()
以上代码中,我们首先导入了win32com.shell.shell模块和pythoncom模块。然后,通过pythoncom.CoInitialize()初始化COM组件。
接下来,我们指定了要获取修改时间的文件的路径file_path。
然后,我们创建了Shell对象shell_obj。
使用shell_obj.NameSpace(file_path)可以获取文件的命名空间,然后使用GetDetailsOf方法并传入文件的项(shell_obj.NameSpace(file_path).Items().Item())和要获取的属性的索引(在本例中,3表示修改时间)来获取文件属性。最后,我们通过打印file_info来输出修改时间。
最后,我们通过shell_obj = None和pythoncom.CoUninitialize()来释放资源。
需要注意的是,在使用win32com.shell.shell模块时,需要在每个线程中显式地调用pythoncom.CoInitialize()和pythoncom.CoUninitialize()来初始化和释放COM组件。在本例中,我们只有一个主线程,所以只需要在程序的开始和结束时调用一次即可。如果在多线程环境中使用该模块,需要在每个线程中都调用CoInitialize和CoUninitialize来初始化和释放COM组件。
