编写脚本UNIX的问题

时间:2014-04-26 01:03:30

标签: python bash unix

嘿,我正在为我的计算机架构类编写脚本以进行基准测试。我不知道代码有什么问题。我是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")

2 个答案:

答案 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)