66 lines
1.4 KiB
Python
66 lines
1.4 KiB
Python
|
|
import sys
|
|||
|
|
from typing import Optional, Callable, Tuple, Union
|
|||
|
|
|
|||
|
|
if "/www/server/panel/class" not in sys.path:
|
|||
|
|
sys.path.insert(0, "/www/server/panel/class")
|
|||
|
|
|
|||
|
|
import public
|
|||
|
|
|
|||
|
|
ExecShell: Callable = public.ExecShell
|
|||
|
|
write_log: Callable[[str, str, Tuple], Union[int, str, type(None)]] = public.WriteLog
|
|||
|
|
|
|||
|
|
|
|||
|
|
def write_file(filename: str, s_body: str, mode='w+') -> bool:
|
|||
|
|
"""
|
|||
|
|
写入文件内容
|
|||
|
|
@filename 文件名
|
|||
|
|
@s_body 欲写入的内容
|
|||
|
|
return bool 若文件不存在则尝试自动创建
|
|||
|
|
"""
|
|||
|
|
try:
|
|||
|
|
fp = open(filename, mode=mode)
|
|||
|
|
fp.write(s_body)
|
|||
|
|
fp.close()
|
|||
|
|
return True
|
|||
|
|
except:
|
|||
|
|
try:
|
|||
|
|
fp = open(filename, mode=mode, encoding="utf-8")
|
|||
|
|
fp.write(s_body)
|
|||
|
|
fp.close()
|
|||
|
|
return True
|
|||
|
|
except:
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
|
|||
|
|
def read_file(filename, mode='r') -> Optional[str]:
|
|||
|
|
"""
|
|||
|
|
读取文件内容
|
|||
|
|
@filename 文件名
|
|||
|
|
return string(bin) 若文件不存在,则返回None
|
|||
|
|
"""
|
|||
|
|
import os
|
|||
|
|
if not os.path.exists(filename):
|
|||
|
|
return None
|
|||
|
|
fp = None
|
|||
|
|
try:
|
|||
|
|
fp = open(filename, mode=mode)
|
|||
|
|
f_body = fp.read()
|
|||
|
|
except:
|
|||
|
|
return None
|
|||
|
|
finally:
|
|||
|
|
if fp and not fp.closed:
|
|||
|
|
fp.close()
|
|||
|
|
return f_body
|
|||
|
|
|
|||
|
|
|
|||
|
|
class _DB:
|
|||
|
|
|
|||
|
|
def __call__(self, table: str):
|
|||
|
|
import db
|
|||
|
|
with db.Sql() as t:
|
|||
|
|
t.table(table)
|
|||
|
|
return t
|
|||
|
|
|
|||
|
|
|
|||
|
|
DB = _DB()
|