2016-06-15 5 views
0

を追加使用してTXTドキュメントで選択された行にテキストを追加する方法を私が使用して、選択された行にスコアを追加したい:Pythonの3私の文書で

file = open('scores.txt', 'a') 

を私はすべてを追加したくないので、行をリストに追加し、その1行を変更します。 私は基本的に、.write()または.writelines()に何かを追加して、書き込む行を選択できるかどうかを尋ねています。そうでない場合は、他の方法ですか?そうでない場合は、リストに追加してから行を変更する簡単な方法です。

基本的にTXT文書はどのようなものか:

User 1 scores: 
15, 
User 2 Scores: 
20, 
+0

私はこれが[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)かもしれないと感じています。データを調べることでうまくいくかもしれません['json'](https://docs.python.org/2/library/json.html)や[' pickle'](https://docs.python.org/2/library/pickle)のようなシリアライゼーションモジュールです。 html#module-pickle) –

答えて

1

ユーザー情報のいくつかの種類を格納するためのデータを格納するための最良の方法は、シリアル化です。 Pickle(オブジェクトをバイナリファイルにシリアライズし、その後、ファイルを読み込んでシリアル化する前と同じオブジェクトを返すことでこのオブジェクトを逆シリアル化できます)、またはJsonを含む複数のモジュールがあります。

良い解決策を探しているが、依然としてデータをはっきり読み取ることができる場合(Pickleはデータをバイナリエンティティオブジェクトとして格納しているため、それをはっきり読み取ることはできません)、JSONを使用します。

それは、この基本的な使用のために非常に簡単です:

あなたはこの同じ構造の例を持っている場合は、前に示したとおり

User 1 scores: 
15, 
User 2 scores: 
20, 

あなたはそのような、たとえば、辞書としてそれを作ることができます。

ユーザー1のスコアにアクセスするには、入力する必要があるのはscores['User 1']なので、編集と使用がさらに簡単になります。

この辞書のシリアライゼーション部分では、ファイルに保存するために、json.dumps(<your array>)関数を使用してdictを表すシリアライズされた文字列を取得できます。そのように使用されます:

import json 
dictionary = { 'User 1': 15, 'User 2': 20 } 
print(json.dumps(dictionary)) 

プリントはどのように表示されます。 JSON準拠のファイルです。 保存するには単純なfile.write()が必要で、取り出すにはfile.read()が必要です。

(試験後、あなたの例でjson.dumpsを使用すると、私にそれを与える:{"User 2": 20, "User 1": 15}

そのデータを取得するには、json.loads(<json string>)機能を使用する必要があります。

import json 
# As you can see, string representation of json. 
dictionary = json.loads("{"User 2": 20, "User 1": 15}") 

あなたのdictがロードされました&が保存されました!ここでは、ファイルIOの

もっとに関する情報:ここにJSON PythonのネイティブAPIのhttp://www.tutorialspoint.com/python3/python_files_io.htm

もっとに関する情報:助けhttps://docs.python.org/3/library/json.html

願っています!

EDIT:あなたの情報について

、PythonのネイティブファイルIOモジュールはファイルだけで読み取りバッファの位置を変更するには1つの機能を提供し、その機能は内の特定のバイトにあなたを動かすfile.seek()関数でありますファイル。 (ファンクションパラメータとしてバイトアドレスを渡す必要があります。例えば、file.seek(0, 0)はファイルの先頭に位置します)。

file.tell()機能を使用してファイル内の位置を取得することができます。

関連する問題