回答編集履歴

4

微修正

2020/04/22 00:34

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  という過程が必要になり、
22
22
 
23
- ファイルが大きくなる程、無駄なファイルの入出力大きくなります。
23
+ ファイルが大きくなる程、無駄なファイルの入出力大きくなります。
24
24
 
25
25
 
26
26
 

3

誤った説明であったため訂正

2020/04/22 00:34

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -6,11 +6,15 @@
6
6
 
7
7
 
8
8
 
9
- - 指定行まで数えながら毎行読み込んで、読み飛ば
9
+ - 一時的に別ファイルに全内容書き出ます。(追記)
10
10
 
11
- - 該当行を書き
11
+ - 指定まで数えながら毎行読み込んで、~~読み飛ばし~~ 書き出し
12
12
 
13
+ - 該当行を書き込む
14
+
13
- - 残りの行を新たに書き込む
15
+ - 残りの行を書き込む
16
+
17
+ - 最後にファイルをリネーム
14
18
 
15
19
 
16
20
 

2

キーワードを太字に

2020/04/22 00:32

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- 行指向のテキストファイルの場合 (シーケンシャル・アクセス)
5
+ 行指向のテキストファイルの場合 (**シーケンシャル・アクセス**)
6
6
 
7
7
 
8
8
 
@@ -32,7 +32,7 @@
32
32
 
33
33
 
34
34
 
35
- データが固定長のバイナリファイルであれば、(ランダム・アクセス)
35
+ データが固定長のバイナリファイルであれば、(**ランダム・アクセス**)
36
36
 
37
37
  例えば、レコードの最大値を決めておくと、読み出し位置が計算で求まるので
38
38
 

1

説明補足

2020/04/21 23:01

投稿

teamikl
teamikl

スコア8664

test CHANGED
@@ -56,8 +56,12 @@
56
56
 
57
57
  ----
58
58
 
59
- 書き出すデータが少量なら、readlines()で全ての行を読込んで、
59
+ 他の簡易な方法として、書き出すデータが少量なら、readlines()で全ての行を読込んで、
60
60
 
61
- 該当行を変更した後にファイル全体を書き出し等でも良いですが、
61
+ 該当行を変更した後にファイル全体を書き出し等でも良いですが、メモリにデータを読み込む為、
62
+
63
+ データが大きくなると当然占有メモリも大きくなります。
64
+
65
+
62
66
 
63
67
  データの規模が大きくなる場合は、sqlite3 等のデータベースの利用がお勧めです。