当打开()将文件作为utf-8时,"需要一个整数"吗?

Jim*_*Jim 6 python utf-8

我有一个文件,我试图在python中打开以下行:

f = open("C:/data/lastfm-dataset-360k/test_data.tsv", "r", "utf-8")
Run Code Online (Sandbox Code Playgroud)

调用这个给了我错误

TypeError:需要一个整数

除了那一行,我删除了所有其他代码,但仍然收到错误.我做错了什么,如何才能正确打开?

Kri*_*ass 11

从以下文档open():

open(name[, mode[, buffering]])

[...]

可选的缓冲参数指定文件所需的缓冲区大小:0表示无缓冲,1表示行缓冲,任何其他正值表示使用(大约)该大小的缓冲区.负缓冲意味着使用系统默认值,通常为tty设备进行行缓冲,并为其他文件进行完全缓冲.如果省略,则使用系统默认值.

您似乎试图将open()描述文件编码的字符串作为第三个参数传递.不要那样做.

  • 射击.你是对的.我的意思是使用codecs.open.谢谢! (3认同)

Gli*_*der 8

你正在使用错误的开放.

>>> help(open)
Help on built-in function open in module __builtin__:

open(...)
    open(name[, mode[, buffering]]) -> file object

    Open a file using the file() type, returns a file object.  This is the
    preferred way to open a file.  See file.__doc__ for further information.
Run Code Online (Sandbox Code Playgroud)

如您所见,它期望缓冲参数是一个整数.

你可能想要的是codecs.open:

open(filename, mode='rb', encoding=None, errors='strict', buffering=1)
Run Code Online (Sandbox Code Playgroud)