我在文件夾中保存了很多文件。 現在我想閱讀所有這些。 他們是在不同的格式和不同的編碼。 使用listdir/glob.glob
我能找到的名單,但 如何open/read
或處理他們不同的編碼?在Python上打開多個文件不同的編碼
如果有人可以幫助我。我在Windows上使用Python3.2。
問候, Subhabrata班納吉。
我在文件夾中保存了很多文件。 現在我想閱讀所有這些。 他們是在不同的格式和不同的編碼。 使用listdir/glob.glob
我能找到的名單,但 如何open/read
或處理他們不同的編碼?在Python上打開多個文件不同的編碼
如果有人可以幫助我。我在Windows上使用Python3.2。
問候, Subhabrata班納吉。
open(fp)
是蟒蛇請參見打開文件的標準方式:http://docs.python.org/library/functions.html#open
一旦打開,你可以通過.read()
由http://docs.python.org/library/stdtypes.html#bltin-file-objects
的編碼將是更棘手的指定閱讀的文件,將根據你怎麼知道是做什麼用的編碼爲每個文件
假設你知道哪些文件是在編碼,使用codecs.open()。它幾乎和普通的open()一樣工作,但是接受一個可選的編碼參數。
如果您不知道哪些文件是在編碼那麼它更加困難。你可以嘗試像chardet或其他答案this question
和'更難'你的意思是'不可能'在一般情況下。 Python 3上的'open()'支持'encoding'參數 – jfs 2012-07-10 18:05:56
至於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
模塊是如何工作的。
http://whathaveyoutried.com/ – Marcin 2012-07-10 17:05:01
@Marcin:他說,他試圖使用listdir同時。 – 2012-07-10 17:06:54
@DavidRobinson我可以說我寫了世界上功能最全的應用程序。沒有理由不顯示代碼 - 它使問題更加具體。 http://sscce.org/ – Marcin 2012-07-10 17:09:59