This repository has been archived on 2025-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
SFIS/server/lib.py
2022-04-26 16:53:05 +08:00

130 lines
4.2 KiB
Python

import glob, codecs, os, platform, time, urllib, shutil, tarfile, json # Built-in
import markdown, yaml, requests, fire # Add-on
class File:
def json2dict(src):
return json.loads(src)
def dict2json(src):
return json.dumps(src)
def untar(inputpath, outputpath):
data = tarfile.open(inputpath)
data.extractall(outputpath)
data.close()
def md2html(path):
input_file = codecs.open(path, mode="r", encoding="utf-8")
text = input_file.read()
html = markdown.markdown(text)
return html
def replace(path, old_content, new_content):
content = File.read(path)
content = content.replace(old_content, new_content)
File.rewrite(path, content)
def read(path):
with open(path, encoding='UTF-8') as f:
read_all = f.read()
f.close()
return read_all
def rewrite(path, data):
with open(path, 'w', encoding='UTF-8') as f:
f.write(data)
f.close()
def htmlmin(data): # Compress HTML files by deleting empty lines (seems a little stupid)
data = data.replace('\n','')
data = data.replace('\t','')
data = data.replace('\r','')
return data
class Path:
def mkdir(target):
if os.path.exists(target):
return "Folder Exists"
else:
os.mkdir(target)
def find(command):
list = None
for one in glob.glob(command):
list.append(one)
return list
def rm(target):
if os.path.exists(target):
if os.path.isdir(target):
shutil.rmtree(target)
else:
os.remove(target)
else:
pass
def move(inputpath, target):
shutil.move(inputpath, target)
def copy(inputpath, outputpath):
if os.path.isfile(inputpath):
shutil.copyfile(inputpath, outputpath)
elif os.path.isdir(inputpath):
shutil.copytree(inputpath, outputpath)
def abs(path="."):
return os.path.abspath(path)
def rel(path="."):
return os.path.relpath(path)
def getdirsize(path="."):
size = 0
for root, dirs, files in os.walk(path):
size += sum([os.path.getsize(os.path.join(root, name)) for name in files])
return size # GB: size / 1024 / 1024 / 1024 / 1024
def ls(path=".", mode="all"):
all = os.listdir(path)
filelist = []
folderlist = []
for one in all:
if os.path.isfile(one):
filelist.append(one)
if os.path.isdir(one):
folderlist.append(one)
if mode == "all":
return all
elif mode == "file":
return filelist
elif mode == "folder":
return folderlist
else:
return "unknown"
def getparentfolder(path): # Useless
of = os.getcwd()
os.chdir(path)
os.chdir("..")
pf = os.getcwd()
os.chdir(of)
return pf
def contrast(path1, path2):
return os.path.relpath(path1, path2)
def tree(path=".", mode="all"): # Generate file tree(all)
a = []
b = []
c = []
for root, dirs, files in os.walk(path, topdown=False):
for name in files:
a.append(os.path.join(root, name))
c.append(os.path.join(root, name))
for name in dirs:
a.append(os.path.join(root, name))
b.append(os.path.join(root, name))
if mode == "all":
return a
if mode == "folder":
return b
if mode == "file":
return c
class Net:
def get(target):
data = requests.get(target)
data.encoding = data.apparent_encoding
return data.text
def size(target):
data = urllib.request.urlopen(target)
return data.headers['content-length']
class System:
os_edition = platform.platform()
local_time = time.ctime()
processor_numbers = platform.machine()
python_version = platform.python_version()
year = time.strftime("%Y", time.localtime())
class Data:
config_data = yaml.load(File.read("config.yml"), Loader=yaml.FullLoader)