回答編集履歴

4

再送

2019/12/12 06:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -60,6 +60,8 @@
60
60
 
61
61
 
62
62
 
63
+
64
+
63
65
  ---
64
66
 
65
67
  なお[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用すると毎度foが有効かチェックする手間を省けます。

3

追記

2019/12/12 06:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -13,6 +13,8 @@
13
13
  ---
14
14
 
15
15
  本来with文を使いたいところですが、本ケースでは使わない方がシンプルに書けそうです。
16
+
17
+ その他気になるところをちょくちょく修正しています。
16
18
 
17
19
  ```Python
18
20
 
@@ -54,13 +56,13 @@
54
56
 
55
57
 
56
58
 
57
- 途中で例外が発生した場合foのクローズに失敗し、書き出しが中途半端になることにはご留意下さい。
59
+ **途中で例外が発生した場合foのクローズに失敗し、書き出しが中途半端になることにはご留意下さい。**
58
60
 
59
61
 
60
62
 
61
63
  ---
62
64
 
63
- なお[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用するともうちょっとシンプルに書けます。
65
+ なお[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用すると毎度foが有効かチェックする手間を省けます。
64
66
 
65
67
  ```Python
66
68
 

2

追記

2019/12/12 06:43

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -1,8 +1,16 @@
1
- 追記モド(a)を上手く活用すば簡単に解決できますが
1
+ エラが出る原因は分かっているけ
2
2
 
3
- コード実行する度にファイル膨れ上がるでお勧めません
3
+ ロジック上手く表現する方法分からない、という主旨質問だと捉えま
4
4
 
5
5
 
6
+
7
+ 追記モードで簡単に解決できますが、実行する度にファイルが膨れ上がるのでお勧めしません。
8
+
9
+
10
+
11
+ 解決法
12
+
13
+ ---
6
14
 
7
15
  本来with文を使いたいところですが、本ケースでは使わない方がシンプルに書けそうです。
8
16
 
@@ -52,7 +60,7 @@
52
60
 
53
61
  ---
54
62
 
55
- なお[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用するともうちょっとシンプルに書けます。
63
+ なお[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用するともうちょっとシンプルに書けます。
56
64
 
57
65
  ```Python
58
66
 

1

追記

2019/12/12 06:38

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -47,3 +47,39 @@
47
47
 
48
48
 
49
49
  途中で例外が発生した場合foのクローズに失敗し、書き出しが中途半端になることにはご留意下さい。
50
+
51
+
52
+
53
+ ---
54
+
55
+ なお、[io.StringIO](https://docs.python.org/ja/3/library/io.html#io.StringIO)を活用するともうちょっとシンプルに書けます。
56
+
57
+ ```Python
58
+
59
+ with open('StreamLine.txt', mode='rt', encoding='utf-8') as fi:
60
+
61
+ fo = io.StringIO()
62
+
63
+
64
+
65
+ for line in fi:
66
+
67
+ if s in line:
68
+
69
+ outputfilename = line.rstrip() +'.txt'
70
+
71
+
72
+
73
+ fo.close()
74
+
75
+ fo = open(outputfilename, mode='wt', encoding='utf-8')
76
+
77
+
78
+
79
+ fo.write(line.strip())
80
+
81
+
82
+
83
+ fo.close()
84
+
85
+ ```