我需要从python运行linux命令行程序。命令行的输入是数据文件的路径和文件名。实际上需要运行数千个这样的命令,我首先需要从python中的进程创建数据文件。命令行程序的输出也需要由python读取。以某种方式用实际内容替换文件名会更容易(并且考虑文件读取和写入时间更快),并且将输出文件直接读取到python字符串而不需要磁盘文件访问。这是可能的,如何实现?
想象:
$ command < infilename > outfilename
或
$ command --infile filename --outfile filename
替换为
$ command < {infile content} > {outfile content}
在命令行或python中的类似内容。
答案 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