没有使用python,所以还在学习。基本上,我有一个与特定工作相关的ID列表。目前我只想传递列表中的第一个ID(使用a [0])并将请求的输出打印到hello.txt。所以整个命令本身看起来像bjobs -l 000001> hello.txt的。完成后,我可以循环遍历整个ID文件,为每个命令输出创建一个单独的文件。
#! /usr/bin/python
import subprocess
a = [ln.rstrip() for ln in open('file1')]
subprocess.call(["bjobs -l ", a[0], "> hello.txt"], shell=True)
任何帮助将不胜感激!如果我还没有弄清楚某些事情,那么请问我,我会尝试解释。
答案 0 :(得分:3)
如果您只想要第一个ID,请执行:
with open('file1') as f:
first_id = next(f).strip()
with
语句将打开该文件,并确保将其关闭。
然后你可以得到bjobs
输出,例如:
output = subprocess.check_output(["bjobs", "-l", first_id], shell=True)
写下:
with open('hello.txt', 'wb') as f:
f.write(output)
我建议将bjobs
输出的提取和写入分开,因为你可能想对它做一些事情,或者你可能会用Python编写bjobs
所以......好吧这个将事情分开。
如果你想循环所有id,你可以这样做:
with open('file1') as f:
for line in f:
line = line.strip()
# ...
如果您需要行号,请使用enumerate
:
with open('file1') as f:
for i, line in enumerate(f):
line = line.strip()
# ...
我知道我比你问的要早一点,但似乎你开始构建一些东西,所以我觉得它可能有用。
答案 1 :(得分:1)
此文件如何命名为spam.py
:
with open('file1') as f:
for line in f:
subprocess.call([ 'bjobs', '-l', line.rstrip() ])
然后使用python spam.py > hello.txt
调用它。