我使用的第三方程序被设计成作为命令行程序运行,它输出文件,我以后需要在我的代码中使用。我在Jupyter实验室工作,想把函数调用集成到我的代码中。执行此操作的典型方法是:
python create_files.py -a input_a -b input_b -c -d
然后我想在我的笔记本里打电话给他。我已经能够通过使用
!
使其工作,即:! python create_files.py -a input_a -b input_b -c -d
问题是,当我想使用变量指定
input_a
或input_b
时,这不起作用,因为可以说!
需要一个文本字符串。有没有一种更干净的方法可以在不改变这个程序的源代码的情况下做到这一点(我已经尝试过这样做了,并且代码的编写使得没有一种简单的方法可以调用它的主函数)
最佳答案
在Jupyter笔记本上,使用subprocess
运行命令行脚本如下:
简单命令行版本:
dir *.txt /s /b
在Jupyter笔记本上:
import subprocess
sp = subprocess.Popen(['dir', '*.txt', '/s', '/b'], \
stderr=subprocess.PIPE, \
stdout=subprocess.PIPE, \
shell=True)
(std_out, std_err) = sp.communicate() # returns (stdout, stderr)
打印错误信息,以防万一:
print('std_err: ', std_err)
打印回显消息:
print('std_out: ', std_out)
我认为这个例子很清楚,你可以根据自己的需要来调整它。希望有帮助。