子流程的类似Shell的语法.Popen#过载>,<|
你好, 我使用python大量将不同的程序进行近点. 自从子进程出现以来,这样做很容易,但是 真的很想能够使用简洁的壳语法; >,<,| 真的不应该在课堂上包裹太难,但是到目前为止 没有成功地做到这一点,因为我面临一些麻烦 我不知道如何克服的操作员优先. 考虑以下: a ='inputString' b = process('process.exe') c = cstringio.stringio()#输出存储桶 a> b> c A被管道到B并处理,但是B的输出不是 管道到c 执行A> B; B> C的工作原状是预期的. 令人失望的是,因为我想实现的是糖 流行过程的语法,直接看到 命令... 非常感谢克服这个问题的任何建议! 干杯, -Jelle ------------------------------------------------------------------------------------ --------------------------------- 类过程(POPEN,对象): def __init __(self,命令弦,wait = false): 断言isInstance(命令弦,str) cmd = commandstring.split() self.cmd =命令串 self.exe = cmd.pop(0) ## self.args = cmd self.process = popen(self.cmd,shell = true,stdin = pipe, stdout = pipe,close_fds = false) self.stdout = self.process.stdout self.stderr = self.process.stderr def __repr __(自我): 返回'流程实例(%s)'%(self.exe) def __或__(自我,其他):#管道 ''' 返回过程A->过程B的输出 将过程实例作为参数 ''' 断言isInstance(其他,过程),'%s \ n不是一个过程 实例'%(其他) 打印"管道" 自我>其他 def __lt __(自我,其他):#stdin ''' 获取Stringio,File或String Objectas参数 ''' 打印'>' 打印'stdin' 如果Isinstance(其他,str): self.process.communate(其他) 别的: self.stdout,self.stderr = self.process.communicate(other.read()) self.process.wait() def __gt __(自我,其他):#stdout ''' 将stringio,file或字符串对象作为参数 返回外部过程的结果 ''' 打印'<' 打印" Stdout" 断言hasattr(其他,"写")或isInstance(其他,str) 如果Isinstance(其他,str): 其他 += self.stdout 别的: other.write(self.stdout) ------------------------------------------------------------------------------------ ----------------------------