记录一些简单的python脚本,为了简单化,尽可能使用标准库。也许以后ChatGPT可以做到一切,但至少我曾经手写过。
查缺补漏
为了整理莱莎的MOD,需要给没有.gz文件的MOD补全原版游戏对应的.gz文件。因为有些MOD自带.gz用来删除替换模型,如果之后用没有.gz的MOD做二次替换,就会造成部位缺失
import os
import re
import shutil
path = r"C:\Users\megumism\Desktop\ryza-MOD"
mod_path = r"Data\x64\character"
backup_path = r"Data_备份\x64\character"
for f in os.listdir(path):
f_dir = os.path.join(path, f)
# 找到MOD目录下面的各类MOD文件夹
if os.path.isdir(f_dir) and re.match(r"pc0", f):
mod_file_dir = os.path.join(path, f, mod_path)
mod_num = os.listdir(mod_file_dir)[0]
mod_file_dir = os.path.join(mod_file_dir, mod_num)
gz_flag = False
# 看看MOD文件夹下面有没有.gz文件
for mod in os.listdir(mod_file_dir):
if os.path.splitext(mod)[1] == ".gz":
gz_flag = True
# 没有的话去备份文件夹里面贴一个过来
if not gz_flag:
backup_file_dir = os.path.join(path, backup_path, mod_num)
for backup in os.listdir(backup_file_dir):
if os.path.splitext(backup)[1] == ".gz":
backup_file = os.path.join(backup_file_dir,backup)
lack_file = os.path.join(mod_file_dir,backup)
shutil.copyfile(backup_file,lack_file)
遍历并统计文件夹
这个脚本旨在统计Onedrive文件夹及其子文件夹当中的文件总数,因为文件太多了Onedrive同步相当的折磨人,找出文件数多而不常用的将他打包起来,降低文件总数。
os.walk
太暴力了,关键是他全部列出来,很难区分层次。也可能是我还没有用明白吧,listdir
作为温和一点的策略如下:
import os
onedrive_path = "E:\OneDrive - sjtu.edu.cn"
def countfile(path, show_depth=0):
filenum = 0
for dir in os.listdir(path):
subpath = os.path.join(path, dir)
if os.path.isdir(subpath):
filenum += countfile(subpath, show_depth - 1)
else:
filenum += 1
if show_depth >= 0:
print(f"{path}:{filenum}")
return filenum
countfile(onedrive_path, show_depth=1)
批量改名
这个脚本旨在适应绿联云的剧集命名系统,将话数挪到文件名的最后,方便绿联云识别排列剧集。
import os
import re
movie_path = "E:\Downloads\BitCometDownload\[DMG] 冴えない彼女の育てかた♭ [BDRip][720P][CHS][MP4]"
for f in os.listdir(movie_path):
n = re.findall(r"「.*」",f)[0]
s = re.findall(r"(?<=第)\d*(?=話)",f)[0]
newname = n +" - "+ s + ".mp4"
os.rename(os.path.join(movie_path,f),os.path.join(movie_path,newname))
print(newname)