Python 如何在子流程模块中使用列表中的索引?
没有太多使用python,所以还在学习。基本上,我有一个与特定工作相关的ID列表。目前,我只希望能够传递列表中的第一个ID(使用a[0]),并将请求的输出打印到hello.txt。所以整个命令本身看起来就像bjobs-l 000001>hello.txt。完成后,我可以遍历整个ID文件,为每个命令输出创建一个单独的文件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
#! /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是这样,您实际上是在问如何将子流程的输出重定向到文件?