Работа с файловой системой. Правильно работать с библиотекой pathlib, а не с os напрямую. Это удобно и безопасно.
Создание директорий
from pathlib import Path
Path("/my/directory").mkdir(parents=True, exist_ok=True)
Write/Read file
from pathlib import Path
with Path("/my/directory").open(mode="w") as out_stream: # default: mode='r'
out_stream.write("test")
Работа с временными файлами и временной директорией
import tempfile
from pathlib import Path
with tempfile.TemporaryDirectory() as tmpdir:
path = Path(tmpdir, 'test.txt')
# ...
Список всех файлов в подкаталогах
from pathlib import Path
path = Path('/some/path')
if path.is_dir():
p = path.glob('**/*')
files = [x for x in p if x.is_file()]
for f in files:
print(f)
io
Пакет io - работа со стримами. Это способ писать логи в переменные, а не в файлы или вывод.
Пример
import io
output = io.StringIO()
output.write('First line.\n')
print('Second line.', file=output)
# Retrieve file contents -- this will be
# 'First line.\nSecond line.\n'
contents = output.getvalue()
# Close object and discard memory buffer --
# .getvalue() will now raise an exception.
output.close()
Именованный буфер
from io import StringIO
class NamedStringIO(StringIO):
def __init__(self, name, content):
self.name = name
super().__init__(content)
named_stream = NamedStringIO("test_stream", "init content")