我有一個簡單的python腳本,只需要一個文件名,並吐出該文件的修改版本。我想重定向標準輸出(在命令行中使用'>'),以便我可以使用我的腳本覆蓋我的修改文件,例如, python myScript.py test.txt > test.txt
使用Linux重定向覆蓋Python腳本中的文件
當我這樣做時,生成的test.txt不包含任何來自原始test.txt的文本 - 只是由myScript.py添加的。但是,如果我不重定向標準輸出,那麼修改就會正確出現。
更具體地講,這裏有一個例子:
myScript.py:
#!/usr/bin/python
import sys
fileName = sys.argv[1]
sys.stderr.write('opening ' + fileName + '\n')
fileHandle = file(fileName)
currFile = fileHandle.read()
fileHandle.close()
sys.stdout.write('MODIFYING\n\n' + currFile + '\n\nMODIFIED!\n')
的test.txt
Hello World
結果的python myScript.py test.txt > test.txt
:
MODIFYING
MODIFIED!
正確。或者一個替代方案。給Python腳本一個參數來修改而不是簡單地打印輸出。 – Wolph 2010-08-16 23:07:59
@WoLpH:我相信你在編輯這個想法的時候提出了你的評論;-) – 2010-08-16 23:09:07
的確如此。完美的解決方案,但你已經有我的+1;) – Wolph 2010-08-16 23:11:22