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(文件名,…)
进行比较?@CharlesDuffyread\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(文件名,…)
进行比较?@CharlesDuffyread\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
也有一个可选的参数!