檔案/資料夾下檔案編碼轉換【轉碼】
阿新 • • 發佈:2021-07-01
#!/usr/bin/python # -*- coding: UTF-8 -*- # @auther gaocan [email protected] import sys import os import re import codecs ''' Codec: See Python`s Standard Encodings ''' # 檔案轉碼 def trans_file(filename, dc, ec): contents = '' with codecs.open(filename, 'r', dc) as f: contents = f.read() with codecs.open(filename,'w', ec) as f: f.write(contents) # 資料夾下,指定檔案型別的檔案轉碼 def trans_folder(folder, dc, ec, filters): for root, dirs, files in os.walk(folder): # root 表示當前正在訪問的資料夾路徑 # dirs 表示該資料夾下的子目錄名list # files 表示該資料夾下的檔案list # 遍歷檔案 for f in files: filename= os.path.join(root, f) for filter in filters: if re.match(filter, filename, re.I): trans_file(filename, dc, ec) break # 遍歷所有的資料夾 for d in dirs: trans_folder(os.path.join(root, d), dc, ec, filters) # argv[1]:目標檔案/資料夾# argv[2]:目標檔案的原始編碼 # argv[3]:轉換後的檔案編碼 # argv[4:n]:如果指定的目標為資料夾,則需寫出過濾選項,比如*.*、*.cpp、*.h,空格分隔每個過濾選項 def main(): # 至少四個引數 if len(sys.argv) < 4: return dst = sys.argv[1] dc = sys.argv[2] ec = sys.argv[3] if os.path.isdir(dst): # 資料夾 # 至少5個引數 if len(sys.argv) < 5: return filters = sys.argv[4:len(sys.argv) - 1] trans_folder(dst, dc, ec, filters) elif os.path.isfile(dst): # 檔案 trans_file(dst, dc, ec) else: return if __name__ == '__main__': main()