ホームページ  >  記事  >  バックエンド開発  >  Python の chardet ライブラリを使用してファイルのエンコーディングを取得し、エンコーディングを変更します

Python の chardet ライブラリを使用してファイルのエンコーディングを取得し、エンコーディングを変更します

WBOY
WBOYオリジナル
2016-06-16 08:45:341326ブラウズ

まず、chardet ライブラリをインストールする必要があります。私は、sudo pip install chartet という愚かな方法を使用しました。

コードをコピー コードは次のとおりです:

#!/usr/bin/env python
# コーディング: UTF-8
import sys
import os
import chartet


def print_usage():
print ''usage:
change_charset [ファイル|ディレクトリ] [charset] [出力ファイル]n
例:
変更 1.txt utf-8 n1.txt
変更 1.txt utf-8
変更 1。 .txt
'''
def get_charset(s):
return chardet.detect(s)['encoding']


def delete(file_name):
os.remove (file_name)


def change_file_charset(file_name, Output_file_name, charset):
f = open(file_name)
s = f.read()
f.close ()

if file_name == 出力ファイル名 または 出力ファイル名 == "":
Remove(file_name)

old_charset = get_charset(s)
u = s.decode(old_charset)

if Output_file_name == "":
output_file_name = ファイル名
f = open(output_file_name, 'w')
s = u.encode(charset)
f.write( s)
f.close()


def do(file_name, Output_file_name, charset):
if os.path.isdir(file_name):
os 内の項目。 listdir(file_name :
change_file_charset(file_name+"/"+item, "", charset)
OSError を除く、e:
print e
else:
change_file_charset(file_name, Output_file_name, charset)


if __name__ == '__main__':
length = len(sys.argv)

if length == 1:
print_usage()
elif長さ == 2:
do(sys.argv[1], "", "utf-8")
elif 長さ == 3:
do(sys.argv[1], "", sys.argv[2])
elif 長さ == 4:
do(sys.argv[1], sys.argv[3], sys.argv[2])
else:
print_usage()


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。