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.