首先import os,sys

import 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()