The FileSystem class provides the base logic for directory management and file naming. It automatically creates the outdir if it does not exist. To implement a custom format, you must subclass FileSystem and implement the extension() and write(self, output, article) methods.
Key behaviors:
- Directory Creation: Uses
os.makedirs(outdir, exist_ok=True) during initialization. - Filename Generation: The filename is constructed as
{article.uid()}.{extension()}. If article.source() is present, it is prefixed: {source_stem}-{uid}.{extension()}.
from paperetl.filesystem import FileSystem
class MyFormat(FileSystem):
def extension(self):
return "txt"
def write(self, output, article):
output.write(article.build())
fs = MyFormat(outdir="./my_files")
fs.save(article)