回答編集履歴
1
追記
test
CHANGED
@@ -163,3 +163,31 @@
|
|
163
163
|
ファイルで管理するなら、`csv`モジュールまたは`json`モジュール
|
164
164
|
|
165
165
|
頻繁に内容を書き換えるなら、`sqlite`で管理してもいいかと。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
---
|
170
|
+
|
171
|
+
◇余談
|
172
|
+
|
173
|
+
以下の書き込み部分でもしも書き込み途中に何らかの障害(PCの電源断,アプリが落とされた,etc)が発生した時にファイルの元データがロストしてしまいます。
|
174
|
+
|
175
|
+
```Python
|
176
|
+
|
177
|
+
with open(file_name, 'w', encoding='utf-8') as score_file:
|
178
|
+
|
179
|
+
for i, line in enumerate(lines, start=1):
|
180
|
+
|
181
|
+
if i == line_n:
|
182
|
+
|
183
|
+
continue
|
184
|
+
|
185
|
+
score_file.write(line)
|
186
|
+
|
187
|
+
```
|
188
|
+
|
189
|
+
ファイルが不整合な状態を防ぐにはトランザクション機能がある`sqlite`などのデータベースで管理するが一番良いのですが、
|
190
|
+
|
191
|
+
別ファイル([tempfile — 一時ファイルやディレクトリの作成](https://docs.python.jp/3/library/tempfile.html))に書き込み、最後に[os.replace](https://docs.python.jp/3/library/os.html#os.replace)で元ファイルにコピーしてくださいな。
|
192
|
+
|
193
|
+
これで削除処理はロストしますが、ファイルデータのロストはしないです。
|