In Python, is it possible to add custom property/metadata to a file? For example, I need to add "FileInfo" as a new property of the file. I need a method that works on various file formats
1 Answer
Heads up: this answer only works on Linux
You can make use of extended file attributes which is a filesystem feature that do just what you want: store custom metadata along files.
In Python, this is implemented by the os module through setxattr() and getxattr() functions.
import os
os.setxattr('foo.txt', 'user.bar', b'baz')
os.getxattr('foo.txt', 'user.bar') # => b'baz'
Note that you must prepend the xattr value with "user." otherwise this may raise an OSError.
3 Comments
hpaknia
Note that the attribute is not copied if the file is copied to a new place. But moving will keep the attribute, even moving between volumes.
Lewis Morris
Sucks it doesn't stay when copying files.
Delgan
@LewisMorris You should use
shutil.copy2() or cp -a which will try to preserve extended attributes.
fileobject or to the file itself ?