0

我在一个文件夹中保存了很多文件。现在我想阅读所有这些。它们有不同的格式和不同的编码。使用listdir/glob.glob我可以找到列表,但是如何open/read为不同的编码处理或处理它们?

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

问候, Subhabrata Banerjee。

4

3 回答 3

2

假设您知道哪些文件采用哪些编码,请使用codecs.open()。它的工作方式几乎与常规的 open() 完全相同,但需要一个可选的编码参数。

如果您不知道哪些文件采用哪些编码,那就更难了。您可以尝试类似chardet或此问题的其他答案

于 2012-07-10T17:21:56.157 回答
1

open(fp)是在 python 中打开文件的标准方法,请参见:http ://docs.python.org/library/functions.html#open

一旦打开,您可以按照http://docs.python.org/library/stdtypes.html#bltin-file-objects.read()的指定读取文件

编码将更加棘手,并且将基于您如何知道每个文件使用什么编码

于 2012-07-10T17:16:36.807 回答
0

正如Jeremiah 所写的 (for ),codecs.open()对于 Python 2 的作用与现代化open()对 Python 3 的作用相同。encoding参数说明了文件内部使用的编码。

但是,重要的区别是如果codecs.open()使用,则读取的行是 unicode 字符串(并且要写入的行应该是 unicode 字符串),而不是普通的旧字符串(即字节序列)。在 Python 3 中感觉更自然一些,但在 Python 2 中也可以这样做。

我建议阅读 Mark Pilgrim 的Dive Into Python 3第 4 章。字符串

他的第 15 章案例研究:将 chardet 移植到 Python 3解释了上述chardet模块的工作原理。

于 2012-07-10T21:24:14.677 回答