teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

例を追加

2021/01/10 15:14

投稿

ppaul
ppaul

スコア24672

answer CHANGED
@@ -1,4 +1,36 @@
1
1
  yugokinoさんがやりたいことは、書き換えではなく挿入のように思います。
2
2
  ファイルの途中を書き換えることはできますが、そこを書き換えると言うことは、既存の部分を消すことになります。
3
3
 
4
- 挿入するのであれば、ファイルを読み込み、同じ名前のファイルを新規に作成して、読み込んだデータの途中までを出力し、挿入したい部分を出力し、残りの部分を出力します。
4
+ 挿入するのであれば、ファイルを読み込み、同じ名前のファイルを新規に作成して、読み込んだデータの途中までを出力し、挿入したい部分を出力し、残りの部分を出力します。
5
+ ```python
6
+ with open('sample.txt', 'r') as f:
7
+ data = f.readlines()
8
+
9
+ print(data)
10
+ insert = ['pear\n', 'grape\n']
11
+ ipoint = 2
12
+ with open('sample.txt', 'w') as f:
13
+ for i in data[:ipoint]:
14
+ f.write(i)
15
+ for i in insert:
16
+ f.write(i)
17
+ for i in data[ipoint:]:
18
+ f.write(i)
19
+
20
+ ```
21
+ みたいな感じです。
22
+ 実行結果は以下です。
23
+ ```shell
24
+ > type sample.txt
25
+ apple
26
+ banana
27
+ orange
28
+ > python insert.py
29
+ ['apple\n', 'banana\n', 'orange\n']
30
+ > type sample.txt
31
+ apple
32
+ banana
33
+ pear
34
+ grape
35
+ orange
36
+ ```