2011-07-05 15 views
-2

に私は、Pythonに新しいですし、テキストファイル内のテキストを置き換えるスクリプトを記述しようとしています。これは私がPython 3.1を使って思いついたものです。しかし、私はいくつかの誤りがあります。誰か助けてくれますか?Pythonプログラミング:検索と置換テキストをファイル

#**************************************************************** 
# a Python code to find and replace text in a file. 
# search_replace.py : the python script 
#**************************************************************** 

import os 
import sys 
import fileinput 

print ("Text to search for:") 
textToSearch = input("> ") 

print ("Text to replace it with:") 
textToReplace = input("> ") 

print ("File to perform Search-Replace on:") 
fileToSearch = input("> ") # "rstest.txt" 
#fileToSearch=open('E:\\search_replace\\srtest.txt','r') 

oldFileName = 'old-' + fileToSearch 
tempFileName = 'temp-' + fileToSearch 

tempFile = open(tempFileName, 'w') 

for line in fileinput.input(fileToSearch): 
    tempFile.write(line.replace(textToSearch, textToReplace)) 
tempFile.close() 


# Rename the original file by prefixing it with 'old-' 
os.rename(fileToSearch, oldFileName) 

# Rename the temporary file to what the original was named... 
os.rename(tempFileName, fileToSearch) 

input('\n\n Press Enter to exit...') 

よろしく

+9

をあなたが直面しているエラーに関するより具体的であればそれはむしろ、人々はすべてのコードを読んで、それを実行することよりも、礼儀正しく、次のようになります。

ではなく、このような何かをやってみてください。 – shelhamer

答えて

1

を任意のPythonの文を取ります。

oldFileName = "{}\\old-{}".format(*os.path.split(fileToSearch)) 
tempFileName = "{}\\temp-{}".format(*os.path.split(fileToSearch)) 
1

まず第一に、私はこれはあなたのオンラインのコードを置くことで、エラーであるかどうかわからないけど、あなたのforループの本体は字下げされません。

for line in fileinput.input(fileToSearch): 
tempFile.write(line.replace(textToSearch, textToReplace)) 
tempFile.close() 

for line in fileinput.input(fileToSearch): 
    tempFile.write(line.replace(textToSearch, textToReplace)) 
tempFile.close() 

第二にすべきであり、あなたが最も可能性が高いように検索する文字として文字列の入力を受け付ける、)(raw_inputたいインプット()メソッドを使用しています。入力()あなたは、このような"E:\\search_replace\\srtest.txt"などのファイルのパスを入力した場合、oldFileNameは"old-E:\\search_replace\\srtest.txt"なり、tempFileNameが有効でどちらも"temp-E:\\search_replace\\srtest.txt"になりますこのような「文字列」などの文字列を含む、

+0

お返事ありがとうございました!うんざりはちょうどここに私のコードを置くことの問題です:)。とraw_input()?私はインターネットでPythonがこのコマンドをサポートしていないことを読みました。私はそれを使用していない理由です:( – irfan

+0

私は成功しraw_inputで)固定インデントとし、(入力を置き換えることで、あなたのスクリプトを実行している()。私が説明した違いを読んで、それはあなたのために働く場合は、答えを受け入れてください。 。 – shelhamer

+0

raw_input()を使用して次のエラーが発生しました >> textToSearch = raw_input( ">") NameError:名前 'raw_input'が定義されていません – irfan