2012-07-10 50 views
0

我在文件夾中保存了很多文件。 現在我想閱讀所有這些。 他們是在不同的格式和不同的編碼。 使用listdir/glob.glob我能找到的名單,但 如何open/read或處理他們不同的編碼?在Python上打開多個文件不同的編碼

如果有人可以幫助我。我在Windows上使用Python3.2。

問候, Subhabrata班納吉。

+1

http://whathaveyoutried.com/ – Marcin 2012-07-10 17:05:01

+1

@Marcin:他說,他試圖使用listdir同時。 – 2012-07-10 17:06:54

+0

@DavidRobinson我可以說我寫了世界上功能最全的應用程序。沒有理由不顯示代碼 - 它使問題更加具體。 http://sscce.org/ – Marcin 2012-07-10 17:09:59

回答

2

假設你知道哪些文件是在編碼,使用codecs.open()。它幾乎和普通的open()一樣工作,但是接受一個可選的編碼參數。

如果您不知道哪些文件是在編碼那麼它更加困難。你可以嘗試像chardet或其他答案this question

+1

和'更難'你的意思是'不可能'在一般情況下。 Python 3上的'open()'支持'encoding'參數 – jfs 2012-07-10 18:05:56

0

至於Jeremiah wrote(對),codecs.open()確實爲Python 2什麼現代化open()確實爲Python 3. encoding論點說什麼編碼文件內使用。

然而,重要區別是,如果使用codecs.open(),然後讀取線是Unicode字符串(和將要寫入線預計將Unicode字符串),而不是普通的舊字符串(即字節序列)。在Python 3中它更自然,但它也可以通過Python 2以這種方式完成。

我建議閱讀Mark Pilgrim的Dive Into Python 3,Chapter 4. Strings

Chapter 15. Case Study: Porting chardet to Python 3解釋中提到chardet模塊是如何工作的。