python - 如何在笔记本中使用子进程?
问题描述
我想subprocess
在 kaggle notebook 中使用,kaggle notebook 与 jupyter notebook 非常相似。
当我使用以下代码时,我得到了 0。
import subprocess
subprocess.call("ls")
我想要的是当前文件夹中的文件列表。
请问你能帮帮我吗?
解决方案
您可以使用此代码。我无法解释它,因为我对子进程库一无所知,但是当我尝试它时,它可以在我的 jupyter 笔记本上运行。我从这个stackoverflow 线程中弄清楚了。但是,当我执行“ls -a”之类的操作时,我无法让它工作。
import subprocess
process = subprocess.Popen('ls',
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT)
with process.stdout:
for line in iter(process.stdout.readline, b''):
print(line.decode().strip())
如果 Kaggle 笔记本具有与 Jupyter 笔记本相同的功能,这是一个更好的选择。
在 Jupyter 笔记本中,您可以通过!
在 jupyter 笔记本单元格中的命令之前添加命令来执行命令。例如,您可以使用此命令从单元格中克隆 github 存储库!git clone https_repo_here
。在上面的子流程示例中,我无法开始ls -a
工作,但我可以通过!ls -a
在 Jupyter 笔记本单元中使用它来使其工作。
Jupyter notebook 中另一个有用的提示是%
. 我不知道这个东西的所有功能(我认为它被称为魔术符号),但我知道你可以,例如,通过编写%cd different_directory_here
. 我不知道为什么,但如果你写了!cd different_directory_here
,它不会永久改变你的 Jupyter 笔记本的工作目录。