Python 如何在子流程模块中使用列表中的索引?

Python 如何在子流程模块中使用列表中的索引?,python,linux,subprocess,Python,Linux,Subprocess,没有太多使用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')] subproc

没有太多使用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)

任何帮助都将不胜感激!如果我对某些事情没有说清楚,请询问,我会尽力解释。

这个名为
spam.py的文件怎么样

with open('file1') as f:
  for line in f:
    subprocess.call([ 'bjobs', '-l', line.rstrip() ])

然后使用
python spam.py>hello.txt调用它

如果只需要第一个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()
        # ...
或者,如果需要行号,请使用:

with open('file1') as f:
    for i, line in enumerate(f):
        line = line.strip()
        # ...

我知道我比你要求的提前了一点,但看起来你正在开始构建一些东西,所以我认为它可能有用。

BJOB应该做什么?也不需要重定向输出,您可以在Python中写入文件。您还可以展示一下
file1
的样子吗?Bjobs是我们自己的内部命令之一,基本上它只是打印有关作业的信息。File1只是一个ID列表-423720 424323 436617 439917 461407 461414 461475 462667 445113 445028 446471 450001 451030 457610 457613 457733 457852 459224是这样,您实际上是在问如何将子流程的输出重定向到文件?