最近下载了一个小说包,里面的小说是按照 (“数字编号”__"小说名字" )来排列的。
这样就出现了一个问题:有的时候同一部小说不同章节分别保存在数个文件里面,而他们的编号又不是连续的。
所以引出了一个需求:如何把文件名的数字编号和下划线去掉 于是我发挥面向百度编程的特长,拼凑了这一堆代码
文件名的重复我实在想不出好办法解决,只能用最愚蠢的累加法。不知道有没有大神可以解决一下这个问题
import os, sys
a=0
def is_number(s):
try:
float(s)
return True
except ValueError:
pass
try:
import unicodedata
unicodedata.numeric(s)
return True
except (TypeError, ValueError):
pass
return False
for root,dirs,files in os.walk(r"D:\小说\新建文件夹"):
for file in files:
print(file)
str1 = file
print( str1.replace( ' ' , '' ) )
if is_number(str1[0]):
os.chdir(root)
print('is number')
print (str1.find('_'))
print(len(str1))
newname=str1[str1.find('_')+2:len(str1)]
try:
os.rename(str1,str1[str1.find('_')+2:len(str1)])
except Exception as e:
if e.args[0] ==17:
fname,fename = os.path.splitext(newname)
try:
os.rename(str1, fname+"-1"+fename)
except Exception as e:
if e.args[0] ==17:
print(newname)
fname,fename = os.path.splitext(newname)
a=a+1
os.rename(str1, fname+"-"+str(int(a)+1)+fename)