嘿,我正在为我的计算机架构类编写脚本以进行基准测试。我不知道代码有什么问题。我是python中的新手,也是编写脚本的。
THnks
#!/usr/bin/python2
# Lab 4 script
import subprocess
subprocess.call("cd adpcm")
subprocess.call("gcc -O0 -o adpcm-O0 adpcm.c")
subprocess.call("time ./adpcm-O0; 2>>out")
subprocess.call("time ./adpcm-O0; 2>>out")
subprocess.call("time ./adpcm-O0; 2>>out")
subprocess.call("time ./adpcm-O0; 2>>out")
subprocess.call("time ./adpcm-O0; 2>>out")
subprocess.call("rpistat ./adpcm-O0")
答案 0 :(得分:4)
错误的调用ls cd
,当然:你启动一个shell,改变它的工作目录,然后退出它,因为没有更多的命令可以执行。是的,每个subprocess.call
都是一个单独的shell调用。
此外,cd
无效,因为它是内置的shell,而不是您可以运行的二进制文件。
我看到的本质上是一个shell脚本。为什么不把它写成shell脚本呢?
如果您想定时调用单独的命令,time
是您的朋友。
答案 1 :(得分:2)
在子进程中运行cd
时,它只会更改其他进程的工作目录 - 它对当前进程的工作目录没有任何影响。您需要更改自己的工作目录,以使其对其他子进程产生影响,例如:使用os.chdir()
:
os.chdir("adpcm")
subprocess.call(...)
...
如果您正在运行需要shell帮助的命令(例如使用>>
运算符的文件重定向),那么您还需要确保将shell=True
关键字参数传递给{{3 }}:
subprocess.call(..., shell=True)