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 var
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
.
The easy way to do this is to simply add your new attribute to the file object instance. Eg,
with open('qdata') as f:
f.fileinfo = {'description': 'this file contains stuff...'}
print(f.fileinfo)
output
{'description': 'this file contains stuff...'}
Alternatively, create your own file object by deriving from one of the classes defined in the io module.