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

質問編集履歴

4

細かい説明不備を修正

2018/11/27 09:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -69,6 +69,6 @@
69
69
  ## 修正1後
70
70
  ありがとうございます。具体例だと、通りました!(out.txtにhoge、hogehogeの行が出力された。)
71
71
 
72
- 実際に使いたい場面で、まだ出力されません。
72
+ 実際に使いたい場面で、まだヒットしません。
73
73
  (192.168.xxx.xxx/32のようなプライベートアドレスをキーワードにして、ヒットする行のその他の情報が欲しい)
74
74
  文字コードとかpythonがutf-8で、kwlist.txtやチェックしたいファイルはshift-jisなので、その辺りかな、と思い当たる点が出てきました。

3

指摘を受け修正

2018/11/27 09:23

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -17,13 +17,15 @@
17
17
  def main():
18
18
  filelist = glob.glob(CHECK_FILES_PATH)
19
19
  for FILE in filelist:
20
- # with open(OUT_FILE, 'w') as write_file: ご指摘を受け修正
20
+ # with open(OUT_FILE, 'w') as write_file:
21
+ # 修正1openのモードを'w'ではループの度上書きされるのでaに修正
21
22
  with open(OUT_FILE, "a") as write_file:
22
23
  with open(KWLIST_FILE, 'r') as list_file:
23
24
  with open(FILE, 'r') as check_file:
24
25
  for keyword in list_file:
25
26
  for line in check_file:
26
- # if line in keyword: ご指摘を受け修正
27
+ # if line in keyword:
28
+ # 修正1 keyword in lineの間違えのため修正
27
29
  if keyword in line:
28
30
  write_file.write(line)
29
31
  check_file.seek(0,0)
@@ -62,4 +64,11 @@
62
64
 
63
65
  スクリプト最終行付近の`if line in keyword:` の挙動がよく分かりません。
64
66
  `keyword`, `line`は任意のものが取得できていると思います。
65
- `line in keyword` を出力すると`false`を返しますが、かといって`if line in keyword == False:`と記述しても、任意の結果が得られません(全く出力されない)。
67
+ `line in keyword` を出力すると`false`を返しますが、かといって`if line in keyword == False:`と記述しても、任意の結果が得られません(全く出力されない)。
68
+
69
+ ## 修正1後
70
+ ありがとうございます。具体例だと、通りました!(out.txtにhoge、hogehogeの行が出力された。)
71
+
72
+ 実際に使いたい場面で、まだ出力されません。
73
+ (192.168.xxx.xxx/32のようなプライベートアドレスをキーワードにして、ヒットする行のその他の情報が欲しい)
74
+ 文字コードとかpythonがutf-8で、kwlist.txtやチェックしたいファイルはshift-jisなので、その辺りかな、と思い当たる点が出てきました。

2

指摘事項を修正

2018/11/27 09:21

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -17,12 +17,14 @@
17
17
  def main():
18
18
  filelist = glob.glob(CHECK_FILES_PATH)
19
19
  for FILE in filelist:
20
+ # with open(OUT_FILE, 'w') as write_file: ご指摘を受け修正
20
- with open(OUT_FILE, 'w') as write_file:
21
+ with open(OUT_FILE, "a") as write_file:
21
22
  with open(KWLIST_FILE, 'r') as list_file:
22
23
  with open(FILE, 'r') as check_file:
23
24
  for keyword in list_file:
24
25
  for line in check_file:
25
- if line in keyword:
26
+ # if line in keyword: ご指摘を受け修正
27
+ if keyword in line:
26
28
  write_file.write(line)
27
29
  check_file.seek(0,0)
28
30
 

1

具体例を追記しました。

2018/11/27 08:00

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -21,15 +21,43 @@
21
21
  with open(KWLIST_FILE, 'r') as list_file:
22
22
  with open(FILE, 'r') as check_file:
23
23
  for keyword in list_file:
24
- write_file.write(keyword)
25
24
  for line in check_file:
26
25
  if line in keyword:
27
26
  write_file.write(line)
28
27
  check_file.seek(0,0)
29
28
 
29
+ boolean = OUT_FILE in glob.glob("*")
30
+ if boolean == True:
31
+ os.remove(OUT_FILE)
32
+ main()
30
33
  ```
31
34
 
35
+ ## 具体例
36
+ checkKeywordディレクトリにhoge.txtがあります。
37
+ ```
38
+ hoge
39
+ hogehoge
40
+ fuga
41
+ fugafuga
42
+ piyo
43
+ piyopiyo
44
+ ```
45
+
46
+ kwlist.txtの内容は以下の通りです
47
+ ```
48
+ hoge
49
+ ```
50
+
51
+ この場合、hoge.txt内には`hoge`というキーワードで`hoge`と`hogehoge`がヒットします。
32
- のはずのですが、上手くいきません。
52
+ 最終的成果物out.txtに
53
+ ```
54
+ hoge
55
+ hogehoge
56
+ ```
57
+ を出力させるスクリプトを作成したいですが、上手くいきません。out.txtには何も出力されません。
58
+
59
+ ## 備考
60
+
33
61
  スクリプト最終行付近の`if line in keyword:` の挙動がよく分かりません。
34
62
  `keyword`, `line`は任意のものが取得できていると思います。
35
63
  `line in keyword` を出力すると`false`を返しますが、かといって`if line in keyword == False:`と記述しても、任意の結果が得られません(全く出力されない)。