在Filemanager(Linux和Windows)中,我可以右键单击文件并查看其属性。我想用Python设置它们。这似乎很复杂。使用os.stat(文件)我可以检索标准文件属性,但我无法设置(自定义)属性。对于C#Retrieve metadata column feilds和VisualBasic How do I add a custom property to a file using VBScript似乎有一个解决方案,但我找不到Python的任何内容。非常感谢您的帮助。 Python是多态的,所以我希望:
setattr(file, property_name, property_value)
但这不起作用。
答案 0 :(得分:1)
查看this answer。
使用几个模块,您可以更改,例如@ 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#docs(基于我对办公应用程序的经验)。这可能有助于您设置任意文件属性。
答案 1 :(得分:0)
不要尝试在Python中设置文件的元数据。因为即使可能,复制文件可能会丢失元数据,请参阅http://docs.python.org/3/library/shutil.html#module-shutil这意味着使用元数据将导致不可预测的结果。这很糟糕。更好的东西是不可能的,然后是不可预测的。
解决方法: 我创建了一个附加文本文件meta.txt并使用以下文件存档这些文件:
shutil.make_archive
根本不漂亮。但是可以复制此归档文件,而无需更改丢失元数据。未归档时,可以访问文件的所有元数据。