如何用等效文件内容的python字符串替换filename的命令行参数

时间:2014-12-30 10:11:38

标签: python linux command-line-arguments

我需要从python运行linux命令行程序。命令行的输入是数据文件的路径和文件名。实际上需要运行数千个这样的命令,我首先需要从python中的进程创建数据文件。命令行程序的输出也需要由python读取。以某种方式用实际内容替换文件名会更容易(并且考虑文件读取和写入时间更快),并且将输出文件直接读取到python字符串而不需要磁盘文件访问。这是可能的,如何实现?

想象:

$ command < infilename > outfilename 

$ command --infile filename --outfile filename

替换为

$ command < {infile content} > {outfile content}

在命令行或python中的类似内容。

1 个答案:

答案 0 :(得分:0)

在python中使用子进程模块。解决方案如下,其中command和txt_inp可以替换。 txt_inp是上面的infilename的文本内容:

import subprocess

txt_inp = 'some text as input'
process = subprocess.Popen('command', stdin=subprocess.PIPE, stdout=\
        subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
t_arr, t_err = process.communicate(input=txt_inp)

t_arr和t_err是返回的stdout和stderr。 t_arr可以保存到名为outfilename的文件中,该文件将完成以下示例:

command < infilename > outfilename