首先import os,sysimport os,sys 11
定义一个函数def convert( filename, in_enc = "UTF8", out_enc="GBK" ):`11
第一个参数是需要装换的文件名,第二个是源文件的原编码,第三个是需要转为目标编码。第二个、第三个参数都有默认值。def convert( filename, in_enc = "UTF8", out_enc="GBK" ):
try:
print "convert " + filename,
#读取文件内容
content = open(filename).read()
#将原文件内容进行编码得到新文件内容
new_content = content.decode(in_enc).encode(out_enc)
#打开文件将新文件内容写进去
open(filename, 'w').write(new_content)
print " done"
except:
print " error"123456789101112123456789101112
以上这个方法针对的文件名,但如果只输入了目录,又要查找目录下的所有文件,所以就再定义一个方法。def explore(dir): #遍历目录的所有文件 并将根目录 存在变量root中,目录名存于dirs中,文件名存于files中
for root, dirs, files in os.walk(dir):
#再次遍历所有文件名files
for file in files:
#将文件名与根目录进行拼接 形成绝对路径
path = os.path.join(root, file)
#调用上面编码转换函数
convert(path)123456789123456789
最后在main函数中判断是否输入的是文件名还是目录def main():#获取命令行的第一个参数
for path in sys.argv[1:]:
#如果是文件 则调用单个文件编码转换
if os.path.isfile(path):
convert(path)
#否则就调用 explore方法
elif os.path.isdir(path):
explore(path)123456789123456789
完整源码如下:
import os,sys
def convert( filename, in_enc = "UTF8", out_enc="GBK" ):
try:
print "convert " + filename,
content = open(filename).read()
new_content = content.decode(in_enc).encode(out_enc)
open(filename, 'w').write(new_content)
print " done"
except:
print " error" def explore(dir):
for root, dirs, files in os.walk(dir):
for file in files:
path = os.path.join(root, file)
convert(path)
def main():
for path in sys.argv[1:]:
if os.path.isfile(path):
convert(path)
elif os.path.isdir(path):
explore(path)
if __name__ == "__main__":
main()