我在一个文件夹中保存了很多文件。现在我想阅读所有这些。它们有不同的格式和不同的编码。使用listdir/glob.glob
我可以找到列表,但是如何open/read
为不同的编码处理或处理它们?
如果有人可以帮助我。我在 Windows 上使用 Python3.2。
问候, Subhabrata Banerjee。
我在一个文件夹中保存了很多文件。现在我想阅读所有这些。它们有不同的格式和不同的编码。使用listdir/glob.glob
我可以找到列表,但是如何open/read
为不同的编码处理或处理它们?
如果有人可以帮助我。我在 Windows 上使用 Python3.2。
问候, Subhabrata Banerjee。
假设您知道哪些文件采用哪些编码,请使用codecs.open()。它的工作方式几乎与常规的 open() 完全相同,但需要一个可选的编码参数。
open(fp)
是在 python 中打开文件的标准方法,请参见:http ://docs.python.org/library/functions.html#open
一旦打开,您可以按照http://docs.python.org/library/stdtypes.html#bltin-file-objects.read()
的指定读取文件
编码将更加棘手,并且将基于您如何知道每个文件使用什么编码
正如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
模块的工作原理。