在Python中设置文件属性

问题描述 投票:0回答:2

在文件管理器(Linux 和 Windows)中,我可以右键单击文件并查看其属性。我想使用 Python 设置它们。看起来很复杂。使用 os.stat(file) 我可以检索标准文件属性,但无法设置(自定义)属性。似乎有一个解决方案,适用于 C# 检索元数据列 feilds ,以及 VisualBasic 如何使用 VBScript 将自定义属性添加到文件,但我找不到任何适用于 Python 的内容。非常感谢您的帮助。 Python 是多态的,所以我希望 :

 setattr(file, property_name, property_value) 

但这不起作用。

python linux file polymorphism
2个回答
0
投票

查看这个答案

您可以更改一些模块,例如@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 应用程序的经验)。这可能会帮助您设置任意文件属性。


-2
投票

不要尝试在 Python 中设置文件的元数据。因为即使可能,复制文件也可能会丢失元数据,请参阅 http://docs.python.org/3/library/shutil.html#module-shutil 这意味着使用元数据将导致不可预测的结果。这很糟糕。更好的事情是根本不可能,然后是不可预测的。

解决方法: 我创建了一个附加文本文件 meta.txt 并使用以下方法存档这些文件:

shutil.make_archive

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

© www.soinside.com 2019 - 2024. All rights reserved.