Python 从外壳到jupyter笔记本电池的管道

Python 从外壳到jupyter笔记本电池的管道,python,pandas,jupyter-notebook,csvkit,Python,Pandas,Jupyter Notebook,Csvkit,有人知道如何将shell命令的输出(一系列csvkit工具调用)流式传输到jupyter笔记本单元中,特别是数据帧中吗。从单元格的内容来看,它看起来像这样: output = !find /path -name "*.csv" | csvstack ... | csvgrep ... df = DataFrame.read_csv(output) 只是上面这些都不起作用。shell的输出是非常大的数百万行,Pandas可以很好地处理这些行,但我不希望将输出作为字符串整体加载到内存中 我正

有人知道如何将shell命令的输出(一系列csvkit工具调用)流式传输到jupyter笔记本单元中,特别是数据帧中吗。从单元格的内容来看,它看起来像这样:

 output = !find /path -name "*.csv" | csvstack ... | csvgrep ... 
 df = DataFrame.read_csv(output)
只是上面这些都不起作用。shell的输出是非常大的数百万行,Pandas可以很好地处理这些行,但我不希望将输出作为字符串整体加载到内存中


我正在寻找一种管道/流式解决方案,允许Pandas在输出时读取输出。

IIUC您可以通过让Pandas从标准输入读取:

Python脚本:

import sys
import pandas as pd
df = pd.read_csv(sys.stdin)
print(df)
Shell命令行:

!find /path -name "*.csv" | csvstack ... | csvgrep ... | python our_pyscript.py
请注意最后一部分:
| python-our_-pyscript.py


您可能还需要检查IIUC,您可以通过让pandas从STDIN读取:

Python脚本:

import sys
import pandas as pd
df = pd.read_csv(sys.stdin)
print(df)
Shell命令行:

!find /path -name "*.csv" | csvstack ... | csvgrep ... | python our_pyscript.py
请注意最后一部分:
| python-our_-pyscript.py

您可能还需要检查

也许“命名管道”在您的案例中会很有用

在壳牌:

mkfifo MYFIFO
head myfile.txt > MYFIFO
在笔记本中:

with open('MYFIFO', 'rt') as f:
    print(f.readline())
一些好的internet搜索应该会为您提供安全有效地使用命名管道所需的信息。祝你好运

也许“命名管道”在您的情况下会很有用

在壳牌:

mkfifo MYFIFO
head myfile.txt > MYFIFO
在笔记本中:

with open('MYFIFO', 'rt') as f:
    print(f.readline())

一些好的internet搜索应该会为您提供安全有效地使用命名管道所需的信息。祝你好运

我想出了一个解决办法。虽然实际上不是管道,但它节省了一些磁盘I/O费用:

import io
import pandas as pd
output = !(your Unix command)
df = pd.read_table(io.StringIO(output.n))

我想出了一个解决办法。虽然实际上不是管道,但它节省了一些磁盘I/O费用:

import io
import pandas as pd
output = !(your Unix command)
df = pd.read_table(io.StringIO(output.n))

@Dmitry将csv读入剪贴板,然后进行pd。阅读剪贴板?据我们所知,熊猫不处理流…@Dmitry将csv读入剪贴板,然后是pd。阅读剪贴板?据我们所知,pandas不处理流。对于那些需要区分stdout和stderr的人来说,
%%capture
cell magics提供了一个不错的选择。见和。使用
%%bash
cell magics看起来与oLas的答案类似,但提供了另一种途径。对于需要区分stdout和stderr的用户,
%%capture
cell magics提供了一个不错的选择。见和。使用
%%bash
cell magics,看起来与oLas的答案类似,但提供了另一种途径。