130 lines
4.2 KiB
Python
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)
|