在Python中设置文件属性

在Python中设置文件属性,python,linux,file,polymorphism,Python,Linux,File,Polymorphism,在Filemanager(Linux和Windows)中,我可以右键单击文件并查看其属性。我想使用Python设置它们。这似乎很复杂。使用os.stat(文件),我可以检索标准文件属性,但不能设置(自定义)属性。对于C#和VisualBasic,似乎有一个解决方案,但对于Python,我找不到任何解决方案。非常感谢你的帮助。Python是多形的,因此我希望: setattr(file, property_name, property_value) 但这不起作用。请检查 通过几个模块,您可以

在Filemanager(Linux和Windows)中,我可以右键单击文件并查看其属性。我想使用Python设置它们。这似乎很复杂。使用os.stat(文件),我可以检索标准文件属性,但不能设置(自定义)属性。对于C#和VisualBasic,似乎有一个解决方案,但对于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等,可从中获得。我不确定是否有pywin32的特定文档,但这些类型的模块通常是围绕MS API的包装,例如VBA或C#。因此,通常很容易在MS C#docs(基于我在office应用程序方面的经验)中找到答案。这可能有助于设置任意文件属性。

不要尝试为Python中的文件设置元数据。因为即使有可能,复制文件也可能会丢失元数据,请看这意味着使用元数据将导致不可预知的结果。这很糟糕。更好的事情是根本不可能的,然后是不可预测的

解决办法: 我创建了一个额外的文本文件meta.txt,并使用以下方式存档了这些文件:

shutil.make_archive

一点也不漂亮。但是可以复制此归档文件,而不会丢失元数据。取消归档后,可以访问文件的所有元数据。

能否提供要设置的非标准文件属性的示例?说明、版本、有效性等。我正在进行健全性检查,以检查是否满足特定程序所需的所有资源。它是一种日志文件,但结果可以在程序中再次读取,并且可以比较差异。文件量可能与日志文件量一样大。数据文件(pickle)必须具有描述性信息,以便用户知道他拥有用于特定类型的健全性检查的正确文件。不要将相关信息放在注释中。你的问题是,你需要访问你自己不创建的属性吗?这将是有用的,不是必需的。谢谢,但我需要它用于所有操作系统。如果只有一个特定的操作系统是可能的,那么我需要Linux。我看到我错误地添加了一个windows标记。我刚刚删除了windows标签。不用担心。我不经常使用Linux,但我相信它有很多命令行工具,可以做你想做的事情。例如,“触摸”更改最后访问的日期。您可以从Python运行这个,maybeIt已经运行过了,我尝试过查看,但没有成功。最重要的是,我想限制依赖关系。使用OLE对象仅调用attr会创建不需要的、不可预测的依赖项,这些依赖项很难维护。