主要用于工具篇——使用ABOBOO学美剧(强推)python脚本的优化和扩展
主要功能:
- 原只能生成一张卡片,现在可以生成三张,即
音
>英汉
,英
>音汉
,汉
>音英
,音即是音频的意思。 - 自动移动到anki目录
- 自动清理文件夹
下面是我写程序时遇到的问题
如何判断一个变量是否是空字符?
#encoding=utf-8
str="\n\t"
if str.strip()=="":
print("str is null")
if not str.strip():
print("str is null")
关于文件夹操作
#文件、文件夹的移动、复制、删除、重命名
#导入shutil模块和os模块
import shutil,os
#复制单个文件
shutil.copy("C:\\a\\1.txt","C:\\b")
#复制并重命名新文件
shutil.copy("C:\\a\\2.txt","C:\\b\\121.txt")
#复制整个目录(备份)
shutil.copytree("C:\\a","C:\\b\\new_a")
#删除文件
os.unlink("C:\\b\\1.txt")
os.unlink("C:\\b\\121.txt")
#删除空文件夹
try:
os.rmdir("C:\\b\\new_a")
except Exception as ex:
print("错误信息:"+str(ex))#提示:错误信息,目录不是空的
#删除文件夹及内容
shutil.rmtree("C:\\b\\new_a")
#移动文件
shutil.move("C:\\a\\1.txt","C:\\b")
#移动文件夹
shutil.move("C:\\a\\c","C:\\b")
#重命名文件
shutil.move("C:\\a\\2.txt","C:\\a\\new2.txt")
#重命名文件夹
shutil.move("C:\\a\\d","C:\\a\\new_d")
文件编码问题
import os
import sys
import codecs
import chardet
# from subFunc_tools import *
def list_folders_files(path):
"""
返回 "文件夹" 和 "文件" 名字
:param path: "文件夹"和"文件"所在的路径
:return: (list_folders, list_files)
:list_folders: 文件夹
:list_files: 文件
"""
list_folders = []
list_files = []
for file in os.listdir(path):
file_path = os.path.join(path, file)
if os.path.isdir(file_path):
list_folders.append(file)
else:
list_files.append(file)
return (list_folders, list_files)
def convert(file, in_enc="GBK", out_enc="UTF-8"):
"""
该程序用于将目录下的文件从指定格式转换到指定格式,默认的是GBK转到utf-8
:param file: 文件路径
:param in_enc: 输入文件格式
:param out_enc: 输出文件格式
:return:
"""
in_enc = in_enc.upper()
out_enc = out_enc.upper()
try:
print("convert [ " + file.split('\\')[-1] + " ].....From " + in_enc + " --> " + out_enc )
f = codecs.open(file, 'r', in_enc)
new_content = f.read()
codecs.open(file, 'w', out_enc).write(new_content)
# print (f.read())
except IOError as err:
print("I/O error: {0}".format(err))
#将路径下面的所有文件,从原来的格式变为UTF-8的格式
if __name__ == "__main__":
path = r'G:\Temp'
(list_folders, list_files) = list_folders_files(path)
print("Path: " + path)
for fileName in list_files:
filePath = path + '\\' + fileName
with open(filePath, "rb") as f:
data = f.read()
codeType = chardet.detect(data)['encoding']
convert(filePath, codeType, 'UTF-8')
文件转码小脚本
https://www.jianshu.com/p/1c7dc6669311
csv写入
下面是主程序
#-*-coding:utf-8-*-
import re
import os
import sys
import csv
import glob
import time
import chardet
import codecs
import pandas as pd
import shutil
output = "Cenvert.csv"
def Main():
lrcfiles = os.getcwd() + "//*.lrc"
flist = glob.glob(lrcfiles)
writerfile = csv.writer(open(output,'w+'))
writerfile
pattern1 = re.compile(r'00]([\s\S]*)\t')
pattern2 = re.compile(r'\t([\s\S]*)')
i = 0
for f in flist:
i = i + 1
fh = open(f,'r')
content = fh.read()
english = pattern1.findall(content)[0]
chinese = pattern2.findall(content)[0]
print(english)
print(chinese)
mp3file = f[:-3] + "mp3"
newname = str(time.time()) + str(i) + ".mp3"
print(mp3file)
print(newname)
os.rename(mp3file,newname)
ankisound = "[sound:" + newname + "]"
ankisound.encode()
if chinese.strip() == '':
answer = [
(ankisound,(english+chinese)),
(english,(ankisound+chinese))
]
else:
answer = [
(ankisound,(english+chinese)),
(english,(ankisound+chinese)),
(chinese,(ankisound+english))
]
writerfile.writerows(answer)
fh.close()
del writerfile
def convert(file,out_enc):
with open(file, "rb") as f:
data = f.read()
codeType = chardet.detect(data)['encoding']
in_enc= codeType.upper()
out_enc = out_enc.upper()
f = codecs.open(file, 'r', in_enc)
new_content = f.read()
codecs.open(file, 'w', out_enc).write(new_content)
def remove():
oldfile = os.getcwd() + "//*.mp3"
oldfiles = glob.glob(oldfile)
newfile = 'C:\\Users\\name\AppData\\Roaming\\Anki2\\用户1\\collection.media\\'
for i in oldfiles:
try:
shutil.move(i,newfile)
except :
os.unlink(i)
def del_lrc():
old_lrc = os.getcwd() + "//*.lrc"
old_lrcs = glob.glob(old_lrc)
for i in old_lrcs:
os.unlink(i)
if __name__ == "__main__":
Main()
convert(os.getcwd()+"\\\\" + output,'UTF-8')
remove()
del_lrc()