我需要将使用Popen执行的一个命令的输出提供给pandas的read_csv函数。
p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
pandas.read_csv(stdout,index_col=0)
但是显然stdout是一个字符串,它被解释为路径。在API文档中,它说“任何具有read()方法的对象(例如文件句柄或StringIO)”都可以作为read_csv函数的输入。我如何从Popen命令中获取这样的对象?最终目标是不写入磁盘。
当我将stdout的内容写入磁盘时,我可以看到csv每行都有双引号。
alvarobrandon$ head csvfile.csv
"1507109453,<,java,12447,a3e9c495869d,docker,9.0.4.130,9.0.2.131,9.0.2.131,9.0.4.130,56182,9092,9092,56182,tcp"
"1507109453,<,java,1244,a3e9c495869d,docker,9.0.4.130,9.0.2.131,9.0.2.131,9.0.4.130,56182,9092,9092,56182,tcp"
"1507109453,<,java,12447,a3e9c495869d,docker,9.0.4.130,9.0.2.131,9.0.2.131,9.0.4.130,56182,9092,9092,56182,tcp"
read_csv
的sep
参数。 - Bart Van Loon