I have the following shell script that I would like to write in Python (of course grep .
is actually a much more complex command):
#!/bin/bash
(cat somefile 2>/dev/null || (echo 'somefile not found'; cat logfile))
| grep .
I tried this (which lacks an equivalent to cat logfile
anyway):
#!/usr/bin/env python
import StringIO
import subprocess
try:
myfile = open('somefile')
except:
myfile = StringIO.StringIO('somefile not found')
subprocess.call(['grep', '.'], stdin = myfile)
But I get the error AttributeError: StringIO instance has no attribute 'fileno'
.
I know I should use subprocess.communicate()
instead of StringIO to send strings to the grep
process, but I don't know how to mix both strings and files.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…