相关疑难解决方法(0)

如何在Python中使用子进程重定向输出?

我在命令行中做了什么:

cat file1 file2 file3 > myfile
Run Code Online (Sandbox Code Playgroud)

我想用python做什么:

import subprocess, shlex
my_cmd = 'cat file1 file2 file3 > myfile'
args = shlex.split(my_cmd)
subprocess.call(args) # spits the output in the window i call my python program
Run Code Online (Sandbox Code Playgroud)

python subprocess

87
推荐指数
3
解决办法
8万
查看次数

将数据从python传递到外部命令

我已经阅读了subprocess.Popen上的所有内容,但是我想我缺少了一些东西。

我需要能够执行一个Unix程序,该程序从python脚本中创建的列表中读取数据流并将该程序的结果写入文件。在bash提示符下,我一直都没问题,但现在我尝试从python脚本中执行此操作,该脚本在进入此阶段之前会先预处理一些二进制文件和大量数据。

让我们看一个不包含所有预处理的简单示例:

import sys
from pylab import *
from subprocess import *
from shlex import split

# some arbitrary x,y points
points = [(11,31),(13,33),(15,37),(16,35),(17,38),(18,39.55)]

commandline = 'my_unix_prog option1 option2 .... > outfile'
command = split(commandline)

process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
print process.communicate(str(points))
Run Code Online (Sandbox Code Playgroud)

在bash中执行的方式是:

echo "11 31
      13 33
      15 37
      16 35
      17 38
      18 39.55" | my_unix_prog option1 option2 .... > outfile
Run Code Online (Sandbox Code Playgroud)

数据输入到unix prog的方式也很重要,我应该格式化为两列,并用空格隔开。

任何帮助表示赞赏...

python subprocess external-process piping

5
推荐指数
1
解决办法
4610
查看次数

Python子进程:命令在Python中失败,但在Shell中工作

我试图通过Python的子进程运行命令,但无法正常运行。如果我输入外壳:

pack < packfile.dat
Run Code Online (Sandbox Code Playgroud)

pack我的软件在哪里,又packfile是输入文件,那么软件运行正常。

如果我在python中尝试:

import subprocess as sp
import shlex

cmd = 'pack < packfile.dat'.split()
p = sp.Popen(cmd)
Run Code Online (Sandbox Code Playgroud)

该软件抱怨:

Pack must be run with: pack < inputfile.inp 

Reading input file... (Control-C aborts)
Run Code Online (Sandbox Code Playgroud)

它挂在那里。

最后一部分特定于我的软件,但事实是,运行两种命令的两种方法给出的结果不同,而实际情况并非如此。

谁能告诉我我在做什么错?

实际上,我最终打算这样做:

p = sp.Popen(cmd,stdout=sp.PIPE,stderr=sp.PIPE)
stdout, stderr = p.communicate()
Run Code Online (Sandbox Code Playgroud)

由于我对此并不陌生,如果这不是最佳做法,请告诉我。

提前致谢。

python command-line subprocess

1
推荐指数
1
解决办法
750
查看次数