首先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()