python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...
我對Python很陌生,對stdin stdout方法甚至更新.不過,我需要使我的腳本可用于UNIX命令,以便例如使用我的腳本一次處理2個輸入文件.
該腳本與命令行參數完美配合:
newlist = []
def f1()
....
def f2(input_file):
vol_id = sys.argv[3]
for line in input_file:
if ... :
line = line.replace('abc','def')
line = line.replace('id', 'id'+vol_id)
....
newlist.append(line)
return newlist
def main():
if len(sys.argv) < 4:
print 'usage: ./myscript.py [file_in... file_out... volume_id]'
sys.exit(1)
else:
filename = sys.argv[1]
filename_out = sys.argv[2]
tree = etree.parse(filename)
extract(tree)
input_file = open(filename, 'rU')
change_class(input_file)
file_new = open(filename_out, 'w')
for x in newlist:
if '
' in x:
x = x.replace('
', '')
print>>file_new, x
當我嘗試向其添加stdin stdout時,首先遇到一個問題,即首先讀取相同的輸入文件,并且由于這個原因進行了一些修改,因此實際上只能打開一次.這是我修改過的main():
filename = sys.argv[1]
filename_out = sys.argv[2]
if filename == '-':
filename = sys.stdin
else:
input_file = open(filename, 'rU')
if filename_out == '-':
filename_out = sys.stdout
file_new = filename_out
else:
file_new = open(filename_out, 'w')
input_file = open(filename, 'rU')
tree = etree.fromstring(input_file)
extract(tree)
change_class(input_file)
for x in newlist:
if '
' in x:
x = x.replace('
', '')
print>>file_new, x
然后我像這樣運行我的腳本:
./myscript.py–volumeid輸出文件
我得到了這個錯誤信息:
Traceback (most recent call last):
File "./myscript.py", line 191, in
main()
File "./myscript.py", line 175, in main
input_file = open(filename, 'rU')
TypeError: coercing to Unicode: need string or buffer, file found
我究竟做錯了什么?
總結
以上是生活随笔為你收集整理的python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs+express整合kind
- 下一篇: 垃圾回收器算法