1

私はpythonの初心者です。現在、ファイル内の行を変更しようとしています。これは、linecache を使用してこの行をキャッチした後です。

例:

run_D = open('toto.dat','r')

lines = run_D.readlines()

print "Name of the file: ", run_D.name

seq=["%s'retrieve'"]

line_1 = linecache.getline('toto.dat', 51)

lines_runD = run_D.readlines()

run_D.close()

次に、行の内容を変更したいと思います。

lines_runD[50]="%s !yop \n".format(seq) #--> this part seems not working

fic = open('toto.dat','w')
fic.writelines(lines_runD)
fic.close()

私はこのエラーがあります:

IndexError: リスト インデックスが範囲外です

多くの形式タイプを試しましたが、残念ながらまだ機能していません。ヒントはありますか :)

ありがとうございました。

4

1 に答える 1

1

linecacheと の 2 つが混在していると思いますreadlines

1. ラインキャッシュ

ドキュメントから:

linecache モジュールを使用すると、キャッシュを使用して内部的に最適化を試みながら、任意のファイルから任意の行を取得できます。これは、単一のファイルから多くの行が読み取られる一般的なケースです。

つまり、行番号 51 を非常に簡単に読み取ることができます。linecache

import linecache
line_1 = linecache.getline('toto.dat', 51)
print line_1

2.readlines

次のコードで同じことを実現できます。

f = open( 'toto.dat' )
flines = f.readlines()
f.close( )
print flines[50]

次に、行番号 51 を次のように変更できます。

flines[50] = ' new incoming text!\n '
f = open( 'toto.dat', 'wt' )
for l in flines:
    f.write(l)
f.close( )

2.x。と

withステートメントを使用すると、ファイルを閉じる処理が行われるため、ファイルの操作がより簡単かつ安全になります。

with open( 'toto.dat', 'r' ) as f:
    flines = f.readlines()
print flines[50] 

with open( 'toto.dat', 'wt' ) as f:
    for l in flines:
        f.write( l )

* 推奨事項

これらのメソッドは低レベルであり、基本を学習するか、より複雑な機能をコーディングするために推奨されることに注意してください。Python は、多くの便利な機能を備えた入出力ライブラリを多数提供しています。それらを検索するだけで、いくつかの素晴らしい例が得られます。

さらに学習するために、たとえば次の質問を確認してください。

Python でテキスト ファイルを変更するにはどうすればよいですか?

Python でファイル内の行を検索して置換する

「rt」および「wt」モードでファイルを開く

于 2016-06-30T16:00:42.013 に答える