python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...
我對(duì)Python很陌生,對(duì)stdin stdout方法甚至更新.不過(guò),我需要使我的腳本可用于UNIX命令,以便例如使用我的腳本一次處理2個(gè)輸入文件.
該腳本與命令行參數(shù)完美配合:
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
當(dāng)我嘗試向其添加stdin stdout時(shí),首先遇到一個(gè)問(wèn)題,即首先讀取相同的輸入文件,并且由于這個(gè)原因進(jìn)行了一些修改,因此實(shí)際上只能打開(kāi)一次.這是我修改過(guò)的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
然后我像這樣運(yùn)行我的腳本:
./myscript.py–volumeid輸出文件
我得到了這個(gè)錯(cuò)誤信息:
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
我究竟做錯(cuò)了什么?
總結(jié)
以上是生活随笔為你收集整理的python重复输入上面指令_stdin stdout python:如何重复使用同一输入文...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nodejs+express整合kind
- 下一篇: python显示文件夹图片_如何显示文件