1. 程式人生 > >使用python實現批量轉換檔案編碼格式

使用python實現批量轉換檔案編碼格式

最近在學習redis的原始碼,從網上下載了一份大神註釋好的程式碼,但是檔案編碼格式是utf-8的使用sourcesight開啟會出現亂碼,sourceinsight不支援utf-8格式,網上找了一下,說需要安裝外掛解決,今天主要目的不是整sourceinsight,主要最近在學python,想練練手

因為是python新手,記錄一下主要用到的模組和函式,加深印象

使用模組:os ,sys,codec,chardet

使用函式

sys.argv:用來獲取命令列引數,sys.argv[0]標識程式碼本身路徑

os.path :實現了操作路徑的常用函式

os.path.isfile:判斷是否為檔案

os.path.isdir:判斷是否為目錄

os.walk:遍歷目錄樹,返回一個三元組(root,dirs,files)

        root 所指的是當前正在遍歷的這個資料夾的本身的地址

        dirs 是一個list,內容是該資料夾中所有的目錄的名字(不包括子目錄)

        files 同樣是list,內容是該資料夾中的所有檔案(不包括子目錄)

        這個函式感覺有點不好理解,發現了一個大神的文章,寫的特別詳細,貼上鍊接:

os.path.join:合併了多個路徑並返回

codecs.open:開啟檔案時將檔案轉換成Unicode編碼,杜絕亂碼,返回檔案控制代碼

檔案控制代碼.read:讀取檔案內容,檔案內容從返回值返回

檔案控制代碼.write:寫檔案

chardet.detect:識別檔案的編碼格式,返回一個字典

          confidence:返回的編碼格式的可能性

          encoding:編碼格式  

OK,貼程式碼

# -*- coding: utf-8 -*-

'''
This file is order to covert file code format batch process
'''
import os
import sys
import codecs
import chardet

def GetFileExtension(file):
    (filepath, filename) = os.path.split(file)
    (shortname, extension) = os.path.splitext(filename)
    return extension

def GetFileEncodingFormat(file):
    fileHandle  = open(file, 'r', errors = 'ignore')
    fileContext = fileHandle.read()
    return chardet.detect(fileContext.encode())["encoding"]

def CovertFileCodeFormat(file, out_encode):
    try:
        encoding = GetFileEncodingFormat(file)
        extension = GetFileExtension(file)
        if (encoding != out_encode and (extension == '.c' or extension == '.h')):
            fileHandle  = codecs.open(file, 'r', encoding, errors = 'ignore')
            fileContext =  fileHandle.read()
            codecs.open(file, 'w', out_encode,  errors = 'ignore').write(fileContext)
            print ("convert:" + file + " sucess")
    except IOError as err:
        print ("I/O error: {0}".format(err))

def ProcessDir(dir):
    for root, dirs, files in os.walk(dir):
        for file in files:
            filePath = os.path.join(root, file)
            CovertFileCodeFormat(filePath, sys.argv[2])
    
def main():
    path = sys.argv[1]
    if (os.path.isfile(path)):
        CovertFileCodeFormat(path, sys.argv[2])
    elif (os.path.isdir(path)):
        ProcessDir(path)
    
if __name__ == '__main__':
    main()

相關推薦

使用python實現批量轉換檔案編碼格式

最近在學習redis的原始碼,從網上下載了一份大神註釋好的程式碼,但是檔案編碼格式是utf-8的使用sourcesight開啟會出現亂碼,sourceinsight不支援utf-8格式,網上找了一下,說需要安裝外掛解決,今天主要目的不是整sourceinsight,主要最近在

利用nodepad++中的python script外掛批量轉換檔案編碼為utf-8

兩個部落格寫的都很好。 但是沒有講到最重要的怎麼執行這個python指令碼 這裡直接使用了上述文章的文字描述 選擇Plugins->Plugin Manager->Show Plugin Manager 安裝 Python Script。

python實現中文轉換url編碼的方法

pos true clas url編碼 python 10.10 前端 美的 http 本文實例講述了python實現中文轉換url編碼的方法。分享給大家供大家參考,具體如下: 之前做上傳圖片編輯的時候,文件路勁中出現中文,會變成以下這種格式: http://192

使用windows命令和iconv.exe批量轉換檔案編碼

 iconv是知名的開源跨平臺編碼轉換庫,iconv.exe是iconv庫在windows下的命令列工具,iconv.exe的一般用法:iconv.exe -f gbk -t utf-8 gbk.txt > utf-8.txt。其中 -f gbk 指明轉換前的檔案編碼是gbk,-t utf-8

Python實現批量處理檔案的縮排和轉碼問題

最近把很久前的C程式碼傳到Github上的時候,發現全部上百個原始檔的程式碼縮排都變成了8格,而且裡面的中文都出現了亂碼,所以決定寫個程式來批量處理所有檔案的格式。這段關於轉碼的程式碼可以適用於很

Python實現批量圖片格式轉換

    深度學習過程中總是繞不開資料集的製作,有時候實際圖片格式或大小可能與需要關心的圖片資訊不一致,那麼我們只能手動做好資料預處理,再進行training dataset.現在將介紹最簡單的格式轉換問題。可以支援批量圖片任意格式轉換。   直接上程式碼:# 將jpg格式轉位

FilesCodingConvert--批量檔案編碼格式轉換工具

FilesCodingConvert–批量檔案編碼格式轉換工具 簡介 最近開始學習使用Android Studio,因為它的方便易用,我打算以後就不在使用ADT的方式編寫Android專案了。當從Eclipse專案向AS專案遷移時遇到了一個問題,就是檔案

Linux 檔案編碼格式轉換

如果需要在Linux 中操作windows下的檔案,那麼經常遇到檔案編碼轉換的問題。 Windows中預設的檔案格式是GBK(gb2312),而Linux一般都是UTF-8。 檢視檔案編碼 在vim 中可以直接檢視檔案編碼 輸入命令 :set fileencoding 即可顯示檔案編碼格式。 檔案

Linux下檔案編碼格式轉換

常常在Linux中操作Windows下的檔案時,會遇到亂碼的情形。常見的比如在Visual Studio 中寫的C\C++程式需要放到Linux主機上編譯,而程式的中文註釋則顯示為亂碼,比較嚴重的是由於編碼原因,Linux上的編譯器報錯。 這是由於Windows中預設的檔案格式是GBK(gb2312),而L

python批量轉換圖片格式tif--png

###1.配置wand windows 下實現圖片格式轉換,需要安裝一個exe,在此下載 其中安裝的時候要注意: 一定選擇Install development headers and libraries for C and C++ ###2.程式碼實現 我在這裡實現的是tif轉為pn

CAD圖紙檔案如何批量轉換成PDF格式

CAD圖紙檔案如何批量轉換成PDF格式?從事CAD相關工作的小夥伴們相信都不會對於CAD轉換有陌生的,因為他們會時常接觸,那麼如果我們想將CAD圖紙批量轉換成PDF格式應該如何進行操作呢?如何將多張CAD圖紙檔案批量轉換成PDF格式,今天小編就要來教教大家解決這個辦法的全部操作步驟,希望大家能夠進行採

如何將CAD圖紙檔案批量轉換成TIFF格式

如何將CAD圖紙檔案批量轉換成TIFF格式?通常在我們繪製一張CAD圖紙檔案會需要將其轉換成一些圖片的格式,TIFF格式就是圖片格式中的一種格式,如果我們需要將CAD圖紙檔案批量轉換成TIFF格式的時候,我們應該如何進行此項操作呢,今天小編就來教教大家如何將CAD圖紙檔案批量轉換成TIFF格式的全部操

Notepadpp批量轉換檔案格式

<在網上下載一些開原始碼後,在Eclipse中、在SourceInsight中開啟,都是亂碼。——因為這些程式碼是utf-8編碼格式,而si不支援。所以需要對檔案格式進行轉換。 Notepad++可以自動轉換,比如開啟一個檔案,選單“轉換為ANSI編碼格

python實現批量刪除某個路徑下所有的某種檔案

引言:下面是以前寫的批量刪除某資料夾及其子資料夾下的.pyc檔案,可參照下實現批量刪除別的型別的檔案。用的是python2.7 #coding=utf-8 import os def r

eclipse實現批量修改檔案編碼方式

    在eclipse+MyEclipse環境下,開啟一個jsp檔案,經常發現漢字無法顯示,右鍵點選檢視這個檔案屬性,發現檔案的字元編碼屬性為ISO-8859-1。    目前的解決方法有: 1. 手工把檔案屬性改成GBK,每個檔案都要做設定,很麻煩。 2. 不要在Ecl

linux 下的檔案編碼格式轉換

使用場景: 在 linux 平臺上對檔案格式進行轉換,比如將GBK格式的檔案轉換為UTF8格式 轉換方法 1. 使用 iconv 使用 man 檢視 iconv 的幫助命令,比較簡單 NAME iconv - Convert en

Python實現批量執行同目錄下的py檔案

Python版本:3.5 網上找了好多資料都沒有直觀的寫出怎麼批量執行,so,整理了一個小程式。最初是為了用Python進行單元測試,同目錄下有兩個unittest檔案, AllTest.py的目的是批量執行mytest.py、mytest2.py。程式碼如下: #批

檔案編碼格式轉換

package com.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; impo

linux下如何檢視檔案編碼格式轉換檔案編碼

常常在Linux中操作windows下的檔案時,會遇到亂碼的情形。常見的比如在Visual Studio 中寫的C\C++程式需要放到Linux主機上編譯,而程式的中文註釋則顯示為亂碼,比較嚴重的是由於編碼原因,linux上的編譯器報錯。 這是由於Windows中預設的檔案

Python 改變檔案編碼格式

#-*- coding:UTF-8 -*- import sys import os import codecs def ReadFile(filePath,encoding): with codecs.open(filePath,'r',encoding) as