Pythonのお勉強 Part62 (445レス)
1-

75: 2020/04/20(月) 21:58:42.94 ID:/GIS68hM(1)調 AAS
>>71
ガチで手作業でやるとハゲるような案件を請け負って自動化するといいよ
76: 2020/04/21(火) 00:33:41.24 ID:ITjpLmzo(1)調 AAS
Python記事まとめ(毎日自動更新)
外部リンク:qiita.com
77: 2020/04/21(火) 02:05:05.56 ID:N3zspHzw(1)調 AAS
宣伝?
78: 2020/04/21(火) 04:00:45.87 ID:vK3trFFL(1/2)調 AAS
ai何に使えるんだろう個人で
ランサーズに案件あったけど
79: 2020/04/21(火) 15:22:25.76 ID:tZ6+KmAU(1)調 AAS
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!

クソチョンw
80
(1): 2020/04/21(火) 16:30:15.52 ID:vK3trFFL(2/2)調 AAS
動画を高画質化したい
ai学習ってどこからやればいいの?
有料が多いよね
81: 2020/04/21(火) 17:36:11.04 ID:bkXsrA+q(1)調 AAS
高画質化とは?
カメラをよくするの?
82: 2020/04/21(火) 18:31:43.59 ID:h271mz4L(1)調 AAS
ドラマで良く見る防犯カメラの画像が鮮明になるやつじゃね?
83
(1): 2020/04/21(火) 19:18:05.80 ID:2Jo77PyG(1/2)調 AAS
>>80
tecoGanとか?
84: 2020/04/21(火) 21:37:48.75 ID:fqjEBtME(1/2)調 AAS
高画質化ってAVのモザイク外したいんだろw
85
(1): 2020/04/21(火) 21:51:01.75 ID:2Jo77PyG(2/2)調 AAS
真面目に聞きたいんだけど
Ganでモザイクかけた後の動画をinputにして
モザイクかける前の動画をoutputにして学習すれば
モザイクはずせる機械学習モデルができるっていうこと?

真面目に聞きたいんだけど
86: 2020/04/21(火) 22:12:06.13 ID:fqjEBtME(2/2)調 AAS
>>85
モザイク画像は一種の不可逆圧縮なんだから
元画像の完全な再現は原理的に不可能なはず
だけど相対的に鮮明にする位なら可能だろう
87
(1): 2020/04/21(火) 23:08:16.27 ID:WWnxlcOz(1)調 AAS
機械学習でまんこを認識する能力が備われば
不可逆学習だろうと人間が絵筆で加筆するがごとく再現は可能じゃない?
元画像と同じものというわけではないけど。
88: 2020/04/21(火) 23:36:53.54 ID:T9cJTmbL(1/2)調 AAS
透視かw
89
(2): 2020/04/21(火) 23:37:47.14 ID:T9cJTmbL(2/2)調 AAS
そんな事が出来る様になれば
服を着ている人でやれそうだな
90
(1): 2020/04/21(火) 23:52:04.11 ID:9fcQjJm8(1)調 AAS
静止画の自動アイコラはかなり高い精度ですでにできてるよね

そのうち法律で規制されるだろうけど
それまでは迷惑防止条例違反とかで検挙されるやつ出てきそう
91: 2020/04/22(水) 01:16:06.87 ID:vwfi1bH0(1/2)調 AAS
>>87
それは再現じゃなくて生成だけどね?
ただ元画像を視聴者は知らないから
それで実用に耐えるというのはある
92: 2020/04/22(水) 01:18:24.50 ID:vwfi1bH0(2/2)調 AAS
>>90
勝手に裸画像作るのは
盗撮と同じようなことだから
法律で規制されるのは仕様がないな
93: 2020/04/22(水) 01:25:14.18 ID:+K9+fvyb(1)調 AAS
公開しなければよいのではないか?
94: 2020/04/22(水) 04:27:04.17 ID:IjapW65Z(1)調 AAS
>>89
それいいな売れるよ!
透視カメラだな
95: 2020/04/22(水) 05:04:15.16 ID:/W5c3Vma(1)調 AAS
>>83
そう
でも、ai入門するためのチュートすら少ないか、有料が多い
96: 2020/04/22(水) 05:47:34.88 ID:bYlJhv2T(1)調 AAS
>>89
いつの話だよw
とっくに作られてるぞ
外部リンク:gigazine.net
97
(1): 2020/04/23(木) 21:34:01.62 ID:153+oMoq(1)調 AAS
ai開発の環境って何から始めればいいのですか?
pytorch?
98: 2020/04/24(金) 05:06:01.29 ID:qzXQ90p7(1)調 AAS
>>97
ツールに頼るヤツはツールに振り回されて時間を無駄にする
メモ帳とコマンドプロンプトで十分
99: 2020/04/24(金) 07:06:45.65 ID:7lrLzln4(1)調 AAS
コマンドプロンプトはともかくメモ帳は時間の無駄でしかない
100: 2020/04/24(金) 07:44:54.54 ID:rM9gQYtA(1)調 AAS
PyTorchかと聞かれてメモ帳って答えるのはレイヤーが違うだろ・・・
101: 2020/04/24(金) 09:04:25.67 ID:Y7/3shvc(1/2)調 AAS
どの環境がいいのかさっぱりわからんし、チューとは有料が多いし、無料だとハードル高い(´;ω;`)
102: 2020/04/24(金) 09:12:00.60 ID:Y7/3shvc(2/2)調 AAS
ロリを全裸にしたいんだよaiで
103: 2020/04/24(金) 09:25:55.86 ID:TokoipqW(1)調 AAS
教師データがないので無理です。諦めてください
104: 2020/04/25(土) 14:09:08.01 ID:VdLGa5Mo(1)調 AAS
2chスレ:tech
マルチポストする屑にかまってやってるおまえらやさしいなw
105
(2): 2020/04/26(日) 18:22:55.65 ID:1kL3nhkt(1/5)調 AAS
Windows上でpyserialのreadline()を使ってるんだ。マニュアルによると、readline()は'\n'で終わるデータを受けたら制御を返すんだけど
この、'\n'はASCIIコードで言うと何になるんだろう?

'\n'は0x0aだと思うんだけど、0x0aで終わるデータを受けているのに、readline()がタイムアウトで制御を返しているようなんだ。
ちなみに、
マイコン→WiFiモジュール→WiFiルーター→PC
の流れでデータが入ってきてて、PC側の仮想COMはHW Virtual Serial Portを使ってる。
データの末尾が0x0aなのはWiresharkで調べた結果だ。

誰か分かる人がいたら教えてほしい。
106
(1): 2020/04/26(日) 18:48:57.19 ID:8n0jdizN(1)調 AAS
>>105
改行コード
107: 2020/04/26(日) 18:57:06.61 ID:1kL3nhkt(2/5)調 AAS
>>106
それは知ってるんだ
16進数で表すと何になるのかな?
108
(1): 2020/04/26(日) 19:04:00.51 ID:kwdN3Wnk(1/4)調 AAS
>>105
"\n"の扱いはOSで異なる

Win CR+LF バイトコードなら0x0d 0x0a
Linux/新しいMac LF 0x0a
古いMac CR 0x0d

ラズパイ(linux)で0x0aで送信して、winで0x0d 0x0aで待ち受けてタイムアウトしてそう
送信データ列の最後にCR(文字なら\r)つけてみたら?
もし送信側がどっかのアプリで送信データ列をさわれないのなら、I/O制御をラップすればいい
109
(1): 2020/04/26(日) 19:10:31.16 ID:1kL3nhkt(3/5)調 AAS
>>108
マイコンはSTM32のベアメタル
普通のシリアルポートで出力したのを見ると末尾は0x0d0x0aになってる。
wiresharkで見たデータも末尾が0x0d0x0a。

Windows系は説明してくれてるように、末尾が0x0d0x0aなんで、readline()はこれで引っかかって
タイムアウトせずに制御を返すはずなんだけど実際にはタイムアウトで返してる。

もしかして、readline()について重大な誤解とかしてるのかな
110
(1): 2020/04/26(日) 19:17:37.69 ID:kwdN3Wnk(2/4)調 AAS
>>109
Wiresharkで見張ってるのは送信側?
そうなら通信パラメータを見直した方がいいね
通信に失敗してる可能性がある
ボーレートやフロー制御周りは大丈夫?
111: 2020/04/26(日) 19:32:39.83 ID:1kL3nhkt(4/5)調 AAS
>>110
見張ってるのは受信側で、pythonも同じPCで走ってる。
ボーレートはマイコン、PC、仮想COMアプリともに921600baudで3つともフロー制御なし
112: 2020/04/26(日) 19:35:27.61 ID:kwdN3Wnk(3/4)調 AAS
そういう話ならreadline固有の問題かもね
read()でゴリゴリやるのが早そうだが、気持ち悪いので何とかしたい気はする
113: 2020/04/26(日) 19:35:39.74 ID:AAfztbef(1)調 AAS
通信時には CR+LF に統一してなかったか?
114
(1): 2020/04/26(日) 19:46:16.89 ID:kwdN3Wnk(4/4)調 AAS
今の時点で気になることはボーレートが速すぎることかな
115200
に落としてみては?
115: 2020/04/26(日) 19:57:28.02 ID:1kL3nhkt(5/5)調 AAS
>>114
やっぱこれが臭いかもなと思って試してみたけど、変わらなかった

いい方法が見つからなかったらバイナリで送って1回のデータサイズを固定にしようと思う
デバッグが面倒だからあんまりやりたくないけど

みんなありがとう
116: 2020/04/27(月) 10:55:49.73 ID:YGWMtg+u(1/3)調 AAS
外部リンク:stackoverrun.com
117: 2020/04/27(月) 10:57:19.21 ID:YGWMtg+u(2/3)調 AAS
外部リンク:oxon.hatenablog.com
118: 2020/04/27(月) 10:58:55.93 ID:YGWMtg+u(3/3)調 AAS
外部リンク:stackoverflow.com
小出しでスマンコ
119
(1): 2020/04/27(月) 13:18:50.32 ID:TXuwHWqq(1/2)調 AAS
写真や動画を、撮影日時でリネームするプログラムを作成しています。
写真(jpg)はexifから取得できるのですが、
mp4はどのように取得できるのでしょうか?

Windowsの場合、ファイルのプロパティで「メディアの作成日時」というのがあるので、
この値をpythonで取得したいと考えています。
120
(1): 2020/04/27(月) 14:54:53.02 ID:l27UEbbh(1/4)調 AAS
import sys, os, time
import win32com.client
foldername = r'hage\hoge'
filename = 'fuga'
st = os.stat(foldername + r'\' + filename)
print time.asctime(time.localtime(st[7]))
print time.asctime(time.localtime(st[8]))
print time.asctime(time.localtime(st[9]))
sh = win32com.client.Dispatch('Shell.Application')
fol = sh.NameSpace(foldername)
folitem = fol.ParseName(filename)
print fol.GetDetailsOf(folitem, 0)
print fol.GetDetailsOf(folitem, 1)
print fol.GetDetailsOf(folitem, 2)
print fol.GetDetailsOf(folitem, 3)
print fol.GetDetailsOf(folitem, 4)
print fol.GetDetailsOf(folitem, 5)

外部リンク:dot-sharp.com
外部リンク[html]:www.atmarkit.co.jp
外部リンク:docs.microsoft.com
121
(1): 2020/04/27(月) 15:08:53.33 ID:l27UEbbh(2/4)調 AAS
外部リンク[html]:free-ux.blog.enjoy.jp
122: 2020/04/27(月) 16:53:34.08 ID:TXuwHWqq(2/2)調 AAS
>120,121
できました。ありがとうございます!
123: 2020/04/27(月) 17:11:08.18 ID:On5R6UtW(1)調 AAS
>>119
exiftoolが簡単
jpgもmp4も同じように処理できる
124
(1): 2020/04/27(月) 17:47:45.89 ID:S6IgcIOW(1/3)調 AAS
こういう感じのコードを書いて、スレッドが実行されるたびにグラフを更新したいんだけど、更新されない。
どうしたら更新するようになるんだろうか?
外部リンク:ideone.com

動作の説明をすると、こんな感じ(〇は動作が確認されている箇所)
・mainでまず、このクラスのインスタンスを生成
 ここで、グラフを生成、表示
・mainでstart()して、スレッドを起動
 ここで、グラフのデータを更新、
 DrawChart()関数で、62〜64行、70〜72行で取得した描画データのハンドル(?)に入れてる
 データが更新されているのは確認済み
 スレッドが動作しているのも確認済み

なんだけど、グラフが更新されていない。何らかの方法で描画を促す必要があるんだろうけどそれが何なのかが分からない
125
(1): 2020/04/27(月) 17:57:46.59 ID:l27UEbbh(3/4)調 AAS
draw一回しか呼ばれてない
126: 2020/04/27(月) 18:22:07.14 ID:S6IgcIOW(2/3)調 AAS
>>125
DrawChart()の最後に、self.fig.canvas.draw()入れると、呼ばれた瞬間落ちるんだけど・・・
127: 2020/04/27(月) 18:30:21.87 ID:l27UEbbh(4/4)調 AAS
両方に入れたら?
128
(2): 2020/04/27(月) 18:42:55.15 ID:kdRxWvyg(1)調 AAS
ここに回答が
外部リンク:stackoverflow.com
129: 2020/04/27(月) 19:28:07.67 ID:S6IgcIOW(3/3)調 AAS
>>128
ありがとう
読んでみる
130: 2020/04/27(月) 19:33:54.89 ID:GPaVbTha(1)調 AAS
英語は読めなくてもコードは読めるなと最近思った。
131: [age] 2020/04/27(月) 20:18:59.45 ID:+seUVNTq(1)調 AAS
コード読んでから説明を読むのだ
132
(1): 2020/04/28(火) 05:26:45.81 ID:CHpsAleC(1)調 AAS
コードの方が文法が少ないから
慣れると英語より楽だね
133: 2020/04/28(火) 23:48:49.42 ID:z88ZISx+(1)調 AAS
そう言われるまで、
プログラミングが言語を駆使するものだという認識がなかったわ。
まさにLanguageなのにねぇw
慣れてしまうとそんなもんなんだろうか。
134: 2020/04/29(水) 01:25:30.89 ID:aX8BTSoD(1)調 AAS
プログラミング言語には重層的な意味がないから単に記号論理的な頭の使い方をすればよくて、
慣れたらほとんど自動的に論理展開が行われちゃうから大抵簡単だよね

高階関数のややこしいのとかは全然わかんないけど
あれも慣れればいけるのかもしれないが
135: 2020/04/29(水) 09:29:58.71 ID:TuLha3Ht(1)調 AAS
ソースコードが仕様書(キリっ
136
(2): 2020/04/29(水) 10:35:22.49 ID:cZ1bml3g(1)調 AAS
外国人の書いたコードはコメントが英語だから参考にならない
137: 2020/04/29(水) 13:50:22.63 ID:O4788IK/(1)調 AAS
>>136
自動翻訳にコピペすらできないあほはっけん(*゚д゚)ムホムホ
138: 124 2020/04/29(水) 14:43:10.32 ID:DiTATvas(1)調 AAS
>>128を見て、別スレッドで描画するからうまくないってことが分かって修正してたんだけど
また詰まってしまった。
animation.FuncAnimation()で定期的に描画関数を実行するようにしたんだけど、
更新できないんだ。
描画するための関数は何を使えばいいんだろう?

↓が現在のコードで、おそらく、96,97行目をうまいことしてやればいいんだと思うけど、それが分からないんだ
外部リンク:pastebin.com
139: 2020/04/29(水) 14:54:44.23 ID:Kg9KSBpE(1)調 AAS
>>132
>>136
アラビア語のソースコードらしいんだが意外と読めるなω
外部リンク:stackoverrun.com
140: 2020/04/29(水) 15:02:53.91 ID:/cY8SYIV(1)調 AAS
アラビアータは右から読むので大変だろうと思う
141: 2020/04/29(水) 17:10:30.76 ID:DmNhs8y1(1)調 AAS
日本語も元々は右から左の文化だが
意外と大変じゃないな
142: 2020/04/29(水) 18:43:15.19 ID:PE4YX4Ec(1)調 AAS
右から読みの時代の日本人が現役でいるとは思えないんだが・・・・・
143: 2020/04/29(水) 19:05:28.84 ID:PJPPBooA(1)調 AAS
こういうのでもそんなに苦労せずに読めるって話だろ
画像リンク

144
(2): 2020/04/29(水) 19:20:52.12 ID:qH3UHXua(1)調 AAS
車のボディに書き込まれる社名に、右から読ませるタイプがある
145: 2020/04/29(水) 22:18:48.43 ID:f6LPbIhG(1)調 AAS
>>144
車の前側から読ませるだけなんだけどね
タクシー側面の文字も昔は前→後だった
146: 2020/04/30(木) 10:18:45.32 ID:J5HM1FZQ(1/2)調 AAS
>>144
電話番号は混乱するな
147
(1): 2020/04/30(木) 10:47:19.40 ID:aC6sOq5z(1)調 AAS
楽に読めるな
画像リンク

148: 2020/04/30(木) 11:16:46.11 ID:qQJQyRha(1)調 AAS
さすが大本営発表
149: 2020/04/30(木) 12:06:40.91 ID:J5HM1FZQ(2/2)調 AAS
令和二年三月三十一日というと
大東亞戦争で言えば昭和十七年位のレベルだな
150: 2020/04/30(木) 12:18:04.39 ID:6rah8Luj(1)調 AAS
>>147
出来ればフォントは活版っぽく頼む
151: 2020/04/30(木) 15:28:24.17 ID:cbZ3bzMp(1)調 AAS
今のキッズはマジで活版印刷された本見たことないんじゃないの
シラネーんだよきっと

見せてもなんで紙がへこんでるのかも知らなさそう
152
(1): 2020/04/30(木) 23:25:29.06 ID:zLT/BN3l(1)調 AAS
コロナ騒ぎあおってる連中がやりたいのって
結局これだよなあ
153: 2020/04/30(木) 23:37:16.70 ID:GAsejKiL(1)調 AAS
python foo.py
python foo.py -s
python foo.py -s 10
を区別したいんだけどどうすれば良いの?
>cat foo.py
import argparse
p = argparse.ArgumentParser()
p.add_argument('-s', nargs='?')
args = p.parse_args()
print(args.s)
>python foo.py
None
>python foo.py -s
None
>python foo.py -s 10
10
これじゃ-sの有無が判らん
154: 2020/05/01(金) 00:14:53.03 ID:eLVhgQ4h(1)調 AAS
-s のアクションが不明
155: 2020/05/01(金) 01:57:54.00 ID:gkl90wa7(1/2)調 AAS
if "s" in args:とかじゃだめなん?
156
(1): 2020/05/01(金) 08:18:55.56 ID:gHLn0qVE(1)調 AAS
default=-1とかつければいい。
157: 2020/05/01(金) 09:17:19.44 ID:k2YlXFh6(1)調 AAS
>>152
革命のチャンスだしなω
新学期9月は成功しそうだなωωω
158
(1): 2020/05/01(金) 09:28:27.73 ID:xXuuls7c(1)調 AAS
>>156
どちらかと言えばconstを使うケース

いずれにしろnargs=‘?’の場合
argparseだけでは100%の判別は無理
159
(1): 2020/05/01(金) 10:50:01.22 ID:MCEzZFz/(1/2)調 AAS
Ruby のオプションパーサーみたいなやつだろ

ruby script.rb -h a -s 10
と入力すると、

require 'optparse'

opts = { }
ARGV.options do |o|
o.on( "-s 引数", "引数" ) { |x| opts[ :s ] = x }
o.on( "-h 引数", "引数" ) { |x| opts[ :h ] = x }

o.parse!
end

p opts #=> {:h=>"a", :s=>"10"}
160
(1): 159 2020/05/01(金) 10:57:21.41 ID:MCEzZFz/(2/2)調 AAS
>>159
の続き

ruby script.rb -h a -s
missing argument: -s
{:h=>"a"}

ruby script.rb -s -h a
{:s=>"-h"}

これは間違えて、次のオプション・-h を引数と勘違いしているw
161: 2020/05/01(金) 14:24:58.96 ID:gkl90wa7(2/2)調 AAS
>>160
お前生きてて楽しい?
162: 2020/05/01(金) 17:19:05.23 ID:oZ5QHjAY(1)調 AAS
そもそも、"-s"と"10"が何を意味しているかわからないし、
何をしたいのかもわからない。
特に後者は、全体の引数とも、"-s"の値ともとれるわけだし。

>>158
"-s"のほうで、actionを指定すればできるよ
163
(7): 2020/05/05(火) 12:44:32.20 ID:lrlqOn2p(1/3)調 AAS
フォルダ構成が複雑な、ものすごい膨大なlogファイルから、
特定のワードが含む行と、ファイル名を抽出したいのですが、
・サブフォルダを巡回して命令を実行する
・ファイル名のあとに、検索結果を出す
のやり方がわからず、躓いております。

参考になりそうなサンプルがあればご教示いただけますでしょうか。

test01.log
-----------------------------------
0501 問題ないよ
0501 Error!
|まちがってるよ
|まちがってるよ
0501 問題ないよ
-----------------------------------

このうち
・「Error」のある行
・| ではじまる行
を抜き出し、このような出力結果を希望しています。

test01.log
-----------------------------------
0501 Error!
|まちがってるよ
|まちがってるよ
-----------------------------------

「Find」「再帰的」「文字列」「検索」「Python」「テキストマイニング」などで検索をするも、これといった情報が得られず……
参考になりそうなURL、「こういうワードで検索しろ」などあればお願いします。
164
(1): 2020/05/05(火) 12:47:27.09 ID:hpwOcr6+(1)調 AAS
>>163
globモジュール
with open
f.readlines
strクラスのfindメソッド

一回公式のPythonチュートリアルを全てやってみることをお勧めする
165
(3): 2020/05/05(火) 13:47:12.99 ID:JDagEH9a(1/2)調 AAS
Perl時代の教科書は一章まるまる使って正規表現説明してたが
Pythonじゃあそういうことは無くなった

なので現代では言語に関わりなく「正規表現」というキーワード自体知らない、ということが起こってるのではなかろうか

Python チュートリアル ― Python 3.8.3rc1 ドキュメント
外部リンク[html]:docs.python.org

公式チュートリアルでも「標準ライブラリミニツアー」の箇所にちょっと置かれているだけで、扱いが非常に小さい
つまり、初心者はそこまで念入りには読まないだろうから、キーワード自体を知らない
166: 2020/05/05(火) 14:05:25.10 ID:3RO6WiLW(1)調 AAS
>>163
os.walk
os.path.walk
どっちかのドキュソ観れ
167
(1): 2020/05/05(火) 14:15:49.76 ID:uTsiWylk(1/2)調 AAS
>>163
grep使えって

出力フォーマットが気に入らないなら
ripgrep使うかgrep -lをループさせればいい

$ rg -n "^¥||Error" ./*.log
./test02.log
2:0501 Error!
3:|まちがってるよ
4:|まちがってるよ

./test01.log
2:0501 Error!
3:|まちがってるよ
4:|まちがってるよ
168: 2020/05/05(火) 14:18:12.72 ID:uTsiWylk(2/2)調 AAS
regex="^¥||Error"
grep -l -E "$regex" ./*.log | while read file
do
echo "$file"
grep -h -E "$regex" "$file" | xargs printf "¥t%s¥n"
done

#出力
./test01.log
 0501 Error!
 |まちがってるよ
 |まちがってるよ
./test02.log
 0501 Error!
 |まちがってるよ
 |まちがってるよ
169: 2020/05/05(火) 14:32:59.61 ID:G46XbD1M(1/2)調 AAS
>>165
正規表現だけで書籍出てるのにそんな人おるんか?
公式でも小さかろうが載ってる内容なら知らないのは言い訳にはならんでしょ
170: 2020/05/05(火) 14:37:02.54 ID:KwIsFJ1G(1)調 AAS
>>165
昔は文字列処理が多かったが
今は機械学習とかやるから
ページ割かないんだろう
171
(1): 2020/05/05(火) 15:10:14.14 ID:93UQ4haG(1)調 AAS
>>163
「膨大な」と書いてあるのでpythonでやるのは速度的な面で躊躇する
他の人も書いているけど標準コマンドを使うのが速い
・Linux/macOSならgrep
・Windowsならfindstr

「フォルダ構成が複雑な」と書かれているのでサブフォルダまで検索するには
・grepの場合は-rオプション
・findstrの場合は/Sオプション
を付ける

何らかの理由でpython縛りなら
glob.glob
os.wak
のどちらかを使ってファイルリストを取得した上で、そのファイルに指定したキーワードが含まれるか確認する
172: 2020/05/05(火) 15:34:33.06 ID:DTkAo5/g(1)調 AAS
時代的に書き込み時に複雑なパースが必要になるようなやり方はしないように
って方針が一般化してきたからだろう。
もしくはjson,yamlなら専用のライブラリがあったりでわざわざ正規表現使う必要性も下がってる。
173: 2020/05/05(火) 15:38:40.27 ID:JDagEH9a(2/2)調 AAS
……多分時代が違っていて、grepやawkといったコマンドラインツールはおろか、
リダイレクトやパイプの使い方から知らない

そもそもコマンドラインを使わないから、cdやdirコマンドですらもあやしい世代だ
本当に知らないんだよ
174
(1): 2020/05/05(火) 15:40:34.82 ID:rwJ86+M0(1/2)調 AAS
grep -E '^\||Error' -Hd skip ./**/*.log

-E で正規表現。
-d skip で、ディレクトリ名を非表示。
-H で、ファイル名も表示。
ディレクトリの再帰は、./**/*

出力
./test/test01.log:0501 Error!
./test/test01.log:|まちがってるよ
./test/test01.log:|まちがってるよ

この出力から、: の前をファイル名、後を行に、分解すればよい

Ruby の、glob でも出来るけど
175
(5): 2020/05/05(火) 16:29:06.07 ID:E9jCQTmY(1)調 AAS
>>163
外部リンク:ideone.com

組み込み関数やライブラリで同等の機能が用意されているにも関わらず正規表現書くのはやめてほしい
176: 2020/05/05(火) 17:07:50.66 ID:D2QZwsc6(1)調 AAS
アホしかおらんのか
177: 163 2020/05/05(火) 17:41:03.01 ID:lrlqOn2p(2/3)調 AAS
たくさんのご返信ありがとうございます。

>>164
ありがとうございました。
ご推察の通り、Pythonは本を一冊読んだ程度の知識しかありません。
チュートリアル一通り試してみます。

>>165
ありがとうございます。
その二つのドキュメントも読み込んでみます。

>>167
ありがとうございます。
申し遅れておりましたが、Windowsユーザーです。
ただ、教えていただいたコマンドを調べてみると、
Windowsでもインストールすれば、ripgrepを扱えるみたいですね。

必ずしもPythonにこだわらなければならないわけでもないので、
(学習中だったので、使ってみたかった程度)
コマンドでの解決も検討してみます。

>>171
>>174
ありがとうございます。
必ずしもPythonでなくてもよいので、Grepやfindstrも調べてみます。
178: 163 2020/05/05(火) 17:41:16.65 ID:lrlqOn2p(3/3)調 AAS
>>175
ありがとうございます。
すごい! まさに私の理想通りの出力結果になりました。

自分なりにいただいたソースコードを調べて、勉強させていただきます。
179: 2020/05/05(火) 18:25:34.80 ID:XXjmfIiw(1)調 AAS
おいおい>>175は冗談で出した例だろ
180
(4): 2020/05/05(火) 18:51:52.49 ID:rwJ86+M0(2/2)調 AAS
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
181: 2020/05/05(火) 21:21:30.44 ID:6nb4DqgK(1)調 AAS
本当にデータが大きいのであれば
データを分割して複数のPCで並列実行するのも
考えた方がいい
182: 2020/05/05(火) 23:18:26.51 ID:G46XbD1M(2/2)調 AAS
Pythonでもシェルでもどっちでも良いけど、大量ファイル相手ならマルチで処理すれば良い
ファイル毎にやる処理同じなんだから
183
(2): 180 2020/05/06(水) 21:09:35.21 ID:Fjn1hDTG(1)調 AAS
>>175

>>180
みたいに、もっと簡単に書けないの?

Python には、glob は無いのか?
無ければ、walk とか
184: 2020/05/06(水) 21:20:13.91 ID:ohBd/rOh(1)調 AAS
>>183
あるよ
Path('.').rglob('*.log')とかglob.iglob(‘./**/*.log’, recursive=True)とか
>>175は「ライブラリで同等の機能が用意されているにも関わらず」に対するツッコミ待ちだと思われ
185: 2020/05/07(木) 21:24:10.42 ID:xxddKGgg(1/2)調 AAS
>>175
>>183
pythonにそんなものねえよ!
だから初心者向けなんよ。

こういう温かみのある書き方こそpythonらしさがあって、いいじゃないか。
186: 2020/05/07(木) 21:25:15.27 ID:xxddKGgg(2/2)調 AAS
>>180
Rubyのほうがいいな
シンプルでわかりやすい
187: 2020/05/07(木) 22:16:34.03 ID:O8jL8wQb(1)調 AAS
>温かみのある書き方
「職人が一行一行、丁寧に書き上げました」
188
(4): sage 2020/05/07(木) 23:20:38.81 ID:RMklkh4T(1)調 AAS
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('----------')
189: 2020/05/07(木) 23:21:50.47 ID:VKbX/7v8(1)調 AAS
美味しそうw
190: 2020/05/07(木) 23:37:05.12 ID:Lnek/XJg(1)調 AAS
>>188
`in`を使いましょう
The find() method should be used only if you need to know the position of sub. To check if sub is a substring or not, use the in operator:

ついでにRubyの例はoutputsの配列が
めちゃくちゃでかくなる可能性も考慮されてる
191: 180 2020/05/08(金) 12:32:49.45 ID:Fn4yfVbS(1/2)調 AAS
>>180
は、配列化していない!

メソッドチェーンで逐次処理。
前段から1つ来たら、1つ処理する

配列に入れる意味がない

Dir.glob( パターン ).select{ }.each{ }
192: 180 2020/05/08(金) 12:39:56.07 ID:Fn4yfVbS(2/2)調 AAS
Python は大学院卒とか、高学歴の非プログラマーの学者が使うもの。
数学・統計は知っているけど、プログラミング・コンピューター・OS などを知らない

一方、Ruby は低学歴の職人プログラマーが使うもの。
数学・統計は知らないけど、プログラミング・コンピューター・OS などには詳しい

だから、Rubyの1行1行には、職人さんが丁寧に書いた、温かみが感じられる!
193
(2): 2020/05/08(金) 13:25:49.56 ID:tDlcbx57(1)調 AAS
Pythonが文字列処理得意だったらなあ
194
(1): 2020/05/08(金) 17:09:53.24 ID:JpV79Xjz(1)調 AAS
>>193
???
むしろバイナリ処理には呪文が必要なのがPython。
2バイト文字が大変なのには禿同。
195
(1): 2020/05/08(金) 19:00:25.69 ID:ztqG52En(1)調 AAS
例えば多数ある文章間で使用単語の類似性を検討するにはどの言語がやりやすい?
196: 2020/05/08(金) 19:26:27.46 ID:qca/Mwjw(1)調 AAS
>>195
word2vecやdoc2vecのライブラリが揃ってたらどの言語でも良いと思う
参考資料が多いと言う観点や辞書の手に入りやすさと言う観点からはpythonかな

その他重要なのは、対象とする文書を読み込めるを機能があるかどうか
mdやtxtのASCIIばかりでなくdocxやpdfも対象と言うことならpythonでいい
197: 2020/05/08(金) 21:30:24.58 ID:FhTTD0+N(1)調 AAS
>>193
えっ、Pythonの用途の大半は大きな意味での文字列処理
つまりテキスト処理だと思うんだが
198: 2020/05/08(金) 23:18:55.72 ID:B0NvsSSc(1)調 AAS
>>194
ぱいそんに
199: 2020/05/09(土) 09:29:52.12 ID:3rxWY8lS(1)調 AAS
おっぱyは4bytes
200
(2): 2020/05/09(土) 11:28:18.96 ID:4AGhJAkS(1)調 AAS
知識が20年前ぐらいで止まってるんだけど
perlのかわりになりますかね
201: 2020/05/09(土) 13:14:16.71 ID:mr/P9GQq(1/2)調 AAS
perlが書ける人なら、大概の言語はOKなんではないか?
1-
あと 244 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.835s*