Pythonのお勉強 Part62 (454レス)
Pythonのお勉強 Part62 http://mevius.5ch.net/test/read.cgi/tech/1568616071/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
レス栞
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
163: デフォルトの名無しさん [sage] 2020/05/05(火) 12:44:32.20 ID:lrlqOn2p フォルダ構成が複雑な、ものすごい膨大なlogファイルから、 特定のワードが含む行と、ファイル名を抽出したいのですが、 ・サブフォルダを巡回して命令を実行する ・ファイル名のあとに、検索結果を出す のやり方がわからず、躓いております。 参考になりそうなサンプルがあればご教示いただけますでしょうか。 test01.log ----------------------------------- 0501 問題ないよ 0501 Error! |まちがってるよ |まちがってるよ 0501 問題ないよ ----------------------------------- このうち ・「Error」のある行 ・| ではじまる行 を抜き出し、このような出力結果を希望しています。 test01.log ----------------------------------- 0501 Error! |まちがってるよ |まちがってるよ ----------------------------------- 「Find」「再帰的」「文字列」「検索」「Python」「テキストマイニング」などで検索をするも、これといった情報が得られず…… 参考になりそうなURL、「こういうワードで検索しろ」などあればお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1568616071/163
165: デフォルトの名無しさん [] 2020/05/05(火) 13:47:12.99 ID:JDagEH9a Perl時代の教科書は一章まるまる使って正規表現説明してたが Pythonじゃあそういうことは無くなった なので現代では言語に関わりなく「正規表現」というキーワード自体知らない、ということが起こってるのではなかろうか Python チュートリアル ― Python 3.8.3rc1 ドキュメント https://docs.python.org/ja/3/tutorial/index.html 公式チュートリアルでも「標準ライブラリミニツアー」の箇所にちょっと置かれているだけで、扱いが非常に小さい つまり、初心者はそこまで念入りには読まないだろうから、キーワード自体を知らない http://mevius.5ch.net/test/read.cgi/tech/1568616071/165
175: デフォルトの名無しさん [] 2020/05/05(火) 16:29:06.07 ID:E9jCQTmY >>163 https://ideone.com/xba6sl 組み込み関数やライブラリで同等の機能が用意されているにも関わらず正規表現書くのはやめてほしい http://mevius.5ch.net/test/read.cgi/tech/1568616071/175
180: デフォルトの名無しさん [sage] 2020/05/05(火) 18:51:52.49 ID:rwJ86+M0 Ruby で作った # . で始まる、隠し directory, file を除く glob_pattern = "/mnt/c/Users/Owner/Documents/test/**/*.log" re = /^\||Error/ first_time = true # 最初の1回だけ Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .each do |full_path| # 末尾の改行を削除して、1行ずつ処理する File.foreach( full_path, chomp: true ) do |line| line.match( re ) do |matched| # 一致した行だけ if first_time # 最初だけ puts full_path first_time = false end puts line end end first_time = true end 出力 /mnt/c/Users/Owner/Documents/test/test/test01.log 0501 Error! |まちがってるよ |まちがってるよ /mnt/c/Users/Owner/Documents/test/test02.log |xx bb Errorzz http://mevius.5ch.net/test/read.cgi/tech/1568616071/180
188: sage [] 2020/05/07(木) 23:20:38.81 ID:RMklkh4T rubyは玄人向けだから初心者は使っちゃダメだぞっ import glob for log in glob.glob('**/*.log', recursive=True): . outputs = [] . with open(log, 'r') as f: . for line in f: . if line.startswith('|') or line.find('Error') >= 0: . outputs.append(line) . if len(outputs): . print(log) . print('----------') . print(''.join(outputs), end='') . print('----------') http://mevius.5ch.net/test/read.cgi/tech/1568616071/188
210: デフォルトの名無しさん [sage] 2020/05/11(月) 22:09:27.83 ID:qfXbD+ub >>188 横から質問します。 私は163さんではありませんが、学習のためにここを覗きました。 記載されているプログラムを実行すると、 ’|まちがってるよ¥n’ ,’|まちがってるよ¥n’ と前後に記号と、改行コードがついてしまいますが、これを除去して出力する方法はありますでしょうか。 http://mevius.5ch.net/test/read.cgi/tech/1568616071/210
249: デフォルトの名無しさん [] 2020/06/19(金) 00:00:07.20 ID:NJwW7ejS python 使い始めて数年だけども、今日初めて知ったことがあるので質問させてください。 python のクラスって、インスタンスを生成した後に、勝手にメンバー変数を定義できちゃうものなんですか? もし、それがよく知られている機構なのであれば、一般的に何と呼ばれているのか教えてください。 例) >>> class myClass(): ... pass ... >>> c1 = myClass() >>> dir(c1) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__'] >>> c1.hoge = 'hogehoge' >>> c1.hoge 'hogehoge' >>> dir(c1) ['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'hoge'] また、こう言ったことをさせないためには、どうすれば良いのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1568616071/249
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.029s