最近看在《HTML5与CSS3权威指南》,在华章网上将其配套源代码下了下来,悲剧的是文件夹,文件名均为乱码。估计作者是在windows下写的该代码,windows下的默认编码是gbk,而我的是ubuntu,默认编码是utf-8,因此中文全是乱码就不足为奇了。该图显示了改变之前的情况:
前面的是乱码部分,现在我想将前面的乱码部分去掉,比如将第一个文件夹重命名为"18-2"。这里用到了python的三个模块os、os.path以及re。os除了能够对进程及进程运行环境进行管理外,还负责大部分的文件系统操作,比如进入某文件目录,打开某文件等;os.path主要负责路径方面的,比如某文件的基路径,文件名等;而re则负责正则表达式。下面为代码:
import os
import os.path
import re
def modify( path ):
os.chdir( path )
for dir_or_file in os.listdir( path ):
if os.path.isdir( dir_or_file ):
modify( os.getcwd() + '/' + dir_or_file )
os.chdir( '..' )
dir_name = re.search( '[0-9]{1,2}-[0-9]{1,2}' , dir_or_file )
if dir_name is not None:
os.rename( dir_or_file , dir_name.group() )
else:
new_name = re.search( '[0-9]{1,2}-[0-9]{1,2}.html' , dir_or_file )
if new_name is not None:
os.rename( dir_or_file , new_name.group() )
if __name__ == '__main__':
modify( '/home/shiyanhui/Downloads/HTML5CSS3' )
对代码做一下说明,首先for循环遍历每一个文件(夹),如果是文件夹,则递归调用modify()函数;如果是文件则直接通过正则表达式匹配来修改文件的名称。当遍历完一个文件夹的所有内容时,进入到该文件夹的上一层目录,然后根据正则表达式来修改该文件夹的名称。最终效果是总文件中的所有文件及文件夹的名称均改变了。
终端执行:
python modify_file_name.py
最终效果为:
仅以此文记录一下。