Files

31 lines
756 B
Python

import aiofiles.os
import aiofiles
import os
import inspect
async def read_file(path: str, callback=None):
if not await aiofiles.os.path.exists(path):
return None
async with aiofiles.open(path, "r") as f:
if callback:
result = callback(f)
if inspect.isawaitable(result):
return await result
return result
return await f.read()
async def save_file(path: str, data, callback=None, *args, **kwargs):
dir_path = os.path.dirname(path)
if dir_path:
await aiofiles.os.makedirs(dir_path, exist_ok=True)
async with aiofiles.open(path, "w") as f:
if callback:
result = callback(data, f, *args, **kwargs)
if inspect.isawaitable(result):
await result
else:
await f.write(data)