在文件管理器(Linux 和 Windows)中,我可以右键单击文件并查看其属性。我想使用 Python 设置它们。看起来很复杂。使用 os.stat(file) 我可以检索标准文件属性,但无法设置(自定义)属性。似乎有一个解决方案,适用于 C# 检索元数据列 feilds ,以及 VisualBasic 如何使用 VBScript 将自定义属性添加到文件,但我找不到任何适用于 Python 的内容。非常感谢您的帮助。 Python 是多态的,所以我希望 :
setattr(file, property_name, property_value)
但这不起作用。
查看这个答案。
您可以更改一些模块,例如@Claudiu 解决方案的创建时间:
import pywintypes, win32file, win32con
def changeFileCreationTime(fname, newtime):
wintime = pywintypes.Time(newtime)
winfile = win32file.CreateFile(
fname, win32con.GENERIC_WRITE,
win32con.FILE_SHARE_READ | win32con.FILE_SHARE_WRITE | win32con.FILE_SHARE_DELETE,
None, win32con.OPEN_EXISTING,
win32con.FILE_ATTRIBUTE_NORMAL, None)
win32file.SetFileTime(winfile, wintime, None, None)
winfile.close()
pywin32,其中包括 pywintypes 等,可从 here 获取。我不确定是否有 pywin32 的特定文档,但这些类型的模块通常是 MS API 的包装器,例如适用于 VBA 或 C#。因此,通常很容易在例如中找到答案。 MS C# 文档(基于我使用 Office 应用程序的经验)。这可能会帮助您设置任意文件属性。
不要尝试在 Python 中设置文件的元数据。因为即使可能,复制文件也可能会丢失元数据,请参阅 http://docs.python.org/3/library/shutil.html#module-shutil 这意味着使用元数据将导致不可预测的结果。这很糟糕。更好的事情是根本不可能,然后是不可预测的。
解决方法: 我创建了一个附加文本文件 meta.txt 并使用以下方法存档这些文件:
shutil.make_archive
一点也不漂亮。但是可以复制该存档文件,而不会丢失元数据。取消存档后,可以访问文件的所有元数据。