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
Asked
Active
Viewed 1.8k times
8
-
4When you say "to a file", are you referring to the Python `file` object or to the file itself ? – bruno desthuilliers Dec 16 '16 at 12:24
1 Answers
10
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
.

technoplato
- 3,293
- 21
- 33

Delgan
- 18,571
- 11
- 90
- 141
-
1Note 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. – hpaknia Jun 11 '20 at 17:33
-
-
6@LewisMorris You should use `shutil.copy2()` or `cp -a` which will try to preserve extended attributes. – Delgan Dec 31 '20 at 15:41