Python 当解析带有“pandas”的csv文件时,“with open(…)”起什么作用?

Python 当解析带有“pandas”的csv文件时,“with open(…)”起什么作用?,python,pandas,Python,Pandas,我刚找到一个笔记本,它的结构如下: filename = 'data/counts.txt' with open(filename, 'rt') as f: data_table = pd.read_csv(f, index_col=0) # Parse file with pandas 这与简单的data\u table=pd.read\u csv(filename,index\u col=0)有什么不同?可以在第一个参数中接受两种不同的类型。文档上写着filepath\u或\u b

我刚找到一个笔记本,它的结构如下:

filename = 'data/counts.txt'
with open(filename, 'rt') as f:
    data_table = pd.read_csv(f, index_col=0) # Parse file with pandas
这与简单的
data\u table=pd.read\u csv(filename,index\u col=0)
有什么不同?

可以在第一个参数中接受两种不同的类型。文档上写着
filepath\u或\u buffer:str、path对象或类似文件的对象

当您运行
pd.read\u csv(文件名,索引\u col=0)
时,您要求pandas查找并打开该文件进行读取

当你跑的时候

with open(filename, 'rt') as f:
    data_table = pd.read_csv(f, index_col=0) 
您可以预先打开文件并传递一个文件对象/缓冲区以供读取

两者都能完成相同的任务。如果您想要更多地控制文件的打开/读取方式,您可以选择后者。

在第一个参数中可以接受两种不同的类型。文档上写着
filepath\u或\u buffer:str、path对象或类似文件的对象

当您运行
pd.read\u csv(文件名,索引\u col=0)
时,您要求pandas查找并打开该文件进行读取

当你跑的时候

with open(filename, 'rt') as f:
    data_table = pd.read_csv(f, index_col=0) 
您可以预先打开文件并传递一个文件对象/缓冲区以供读取


两者都能完成相同的任务。如果您想更多地控制文件的打开/读取方式,您可以选择后者。

嗯,如果您没有将open(filename,'rt')作为f:的
或其他实际的
open()
调用,如何分配
f
?或者
pd.read\u csv()
也接受字符串,所以您的意思是与
pd.read\u csv(文件名,…)
进行比较?@CharlesDuffy
read\u csv
接受文件名。查看链接,它似乎有一个上下文管理器用于打开bz2压缩文件的示例。。。但是
read\u csv
也可以直接读取:
pd.read\u csv('file.bz2',compression='bz2')
@哦,除非您以附加模式打开文件以更新CSV,否则绝对不需要上下文管理器。都是一样的。@Valentino,嗯?如果您获取OP的代码,删除第二行,并在没有其他更改的情况下删除第三行,它将抛出异常,因为
f
尚未打开或分配,但是
pd.read\u csv()
调用引用了它。我同意您的观点;我只是不喜欢假装OP说了些什么而不是他们真正做了些什么。(最好是鼓励他们在问题的最后一段将
f
改为
filename
,如果这是他们的意图的话)。嗯,如果你没有将open(filename,'rt')作为f:
调用,或者其他实际的
open()
调用,如何分配
f
?或者
pd.read\u csv()
也接受字符串,所以您的意思是与
pd.read\u csv(文件名,…)
进行比较?@CharlesDuffy
read\u csv
接受文件名。查看链接,它似乎有一个上下文管理器用于打开bz2压缩文件的示例。。。但是
read\u csv
也可以直接读取:
pd.read\u csv('file.bz2',compression='bz2')
@哦,除非您以附加模式打开文件以更新CSV,否则绝对不需要上下文管理器。都是一样的。@Valentino,嗯?如果您获取OP的代码,删除第二行,并在没有其他更改的情况下删除第三行,它将抛出异常,因为
f
尚未打开或分配,但是
pd.read\u csv()
调用引用了它。我同意您的观点;我只是不喜欢假装OP说了些什么而不是他们真正做了些什么。(如果这是他们的意图,最好鼓励他们将问题最后一段中的
f
改为
filename
)。例如:你想跳过第一行
n
。但是我相信,
read\u csv
也有一个可选的参数!例如:要跳过第一行
n
。但是我相信,
read\u csv
也有一个可选的参数!