2016-11-26 10 views
-1

テキストファイルの特定の行をどのように置き換えるのですか?テキストファイルの行をどのように置き換えるのですか?

TXTファイル(stock.txt):

ID  NAME 
0341 Screws 
0345 Nails 

コード:

file = open("stock.txt") 
string_to_replace = "0341 Rivets" 

私はfileinputを含むいくつかの方法を試してみましたが、それらのどれも動作するようには思えません。エラーが返され

import fileinput 

file = open("stock.txt") 
search = "0341" 
for a in file: 
    if search in a: 
     searched_line = a 

for line in fileinput.input(file, inplace = True): 
    line.replace(searched_line, string_to_replace) 

OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect

を私はおそらく、大きな何かが欠けていますが、誰がどんな考えを持っているのでしょうか?

+0

いくつかの問題:(1)最初の引数はファイル名でなければならず、オープンファイルでなければならない、(2) 'inplace = True'は出力ultima (3) 'line.replace()'がインプレースで動作しない場合は、戻り値 – lenz

答えて

0

エラーは単にディレクトリ/ファイルを見つけることができないため、パス/ to /ファイルを間違えている必要がありますが、あなたのコードはそれほど最高ではないと思います。

string_to_replace = "HEYA" 
with open('tests.txt', 'r') as f: 
    text = f.read() 
    text = text.replace(string_to_replace, 'REPLACE BY MEE PLEASEEEE') 

with open('tests.txt', 'w') as f: 
    f.write(text) 
1

私はなぜあなたはOSErrorを取得している全くわからないんだけど、ここではそれに遭遇していないコードだとあなたは(Windows 7の上でテスト)やりたいようだ:

ラインを置き換えます
import fileinput 

search = "0341" 
string_to_replace = "0341 Rivets" 

for line in fileinput.input("stock.txt", inplace=True): 
    line = line.rstrip() 
    if search in line: 
     line = string_to_replace 
    print(line) 
+0

を取得しなければなりません。あなたの答えをありがとう。私は、 'fileinput'と呼ばれる' Python'にモジュールが組み込まれていることを知らなかった。 –

+1

@ nexus66:ようこそ。 'inplace = True'が使用されているときに' stdout'を入力ファイルにリダイレクトするので、少し使いにくいです。私はそれが今のところすべて自信作ではないと思うが、ここに示したもの以外にもいくつかの有用なことを行うことができ、Unixのような 'stdin'からの読み書きや' stdout'タイプのユーティリティへの書き込みを容易にする。 [オンラインドキュメント](https://docs.python.org/2/library/fileinput.html#module-fileinput)を参照してください。 – martineau

+0

リンクを確認します。どうもありがとう。 –

関連する問題