在Python中设置文件属性
在Filemanager(Linux和Windows)中,我可以右键单击文件并查看其属性。我想使用Python设置它们。这似乎很复杂。使用os.stat(文件),我可以检索标准文件属性,但不能设置(自定义)属性。对于C#和VisualBasic,似乎有一个解决方案,但对于Python,我找不到任何解决方案。非常感谢你的帮助。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) 但这不起作用。请检查 通过几个模块,您可以
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会创建不需要的、不可预测的依赖项,这些依赖项很难维护。