Pythonのお勉強 Part61

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/07/20(土) 20:39:44.69ID:P9wbpcK8
★当スレにRubyのソースコード類を書くことを禁ず★
☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止
☆「Ruby では」「Rubyでは」をNGワード登録推奨

◆エラーを解決したいときはエラー表示(勝手に省略禁止)と
 環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書く

◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩れるので
  ↓にあげてるような、ソースコードうp用サイトに貼ってきてくだしあ
    (スクリーンショットをimgur等にうpる「横着」禁止)
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう。
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)

◇Pythonオフィシャルサイト
http://www.python.org/

◇まとめwiki
ttp://python.rdy.jp/

●関連スレ●
くだすれPython(超初心者用) その43【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1555397061/

〇前スレ
Pythonのお勉強 Part60
http://mevius.5ch.net/test/read.cgi/tech/1556580863/

次スレの建立は>>985が挑戦する。 [EOF]
0404デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:32:32.60ID:aqKQgKLg
何故かこの手の話になると売り物レベルの製品を引き合いに出してくるアホが出てくるんだよなw
>>391は勉強がてらそれっぽいもの作れって話だろ
まあDjangoでいいと思うけどその判断が付かない程度の知識とやる気だと正直難しいと思う
0405デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:32:36.60ID:sP8dj5WL
スクレイピングとかするぐらいならAPI使ってみる方が実用性高いと思うの
0406デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:36:47.35ID:AlOPQzgK
>>399
その本持ってるけど、普通の人がやりたそうなことは一通り書いてていいと思うよ

ただ、ウェブスクレイピングに関してはBeatifulsoupに重点おいてるんだけど、javascript多用してるサイトだと通用しないんで結局seleniumを使わなくてはならなくなる
sereniumにもさらって触れてるけど、重たいので非推奨みたいな感じ。実際重たいしね
0407デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:38:56.73ID:1/VWQ1Qi
>>406
参考になるレスありがとう
pythonでやりたいことは現状スクレイピングのみなので、
そのへんが厚い参考書とかがあれば教えていただけるとありがたいです

この本もちょっと立ち読みしてみます
0408デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:40:31.54ID:26pp6bRY
Ruby on Rails では、作者のDHH が、2014年に「TDD(テスト駆動開発) is dead」と発言して、
ユニットテストから、Selenium を使った、E2E(end to end)テストへ移行した!

それで、Rails 6 では、
DHH のいるBasecamp 社から、GitHub へ移籍した、Eileen Uchitelle によって、
テストを複数CPU コアで、並列実行する機能が実装された!
0409デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:43:21.65ID:AlOPQzgK
>>407
スクレイピングしたいなら、遠回りのように見えるかもだけどWebページの作り方を勉強した方がいいと思うよ
実際やり始めたら、他人が作ったHTMLの解析するのがメインになるから。自分のところのソースよりも、目的のページのソースを見てる時間の方が長くなる
0410デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:46:31.11ID:iUOviGh4
スクレイピングって、高速に次々ページにアクセスするわけにはいかないから、結局重くても大した問題じゃないのね。
0412デフォルトの名無しさん
垢版 |
2019/08/18(日) 11:55:52.85ID:AlOPQzgK
>>411
岡崎の図書館の話なら不運が重なっただけ

大量のデータを取るとも限らないしな。クレカとかETCの明細を取るのに、ブラウザ上でちまちま選択するのが面倒だから機械にやらせるのもスクレイピングに入るし
0413デフォルトの名無しさん
垢版 |
2019/08/18(日) 12:07:09.55ID:1/VWQ1Qi
ちなみにスクレイピングしたデータを
excelの所定の様式に移して出力したいんだけど、
その作業は別の言語が必要?pythonだけでできますか?
0414デフォルトの名無しさん
垢版 |
2019/08/18(日) 12:08:01.76ID:1/VWQ1Qi
>>409
わかりました
ブログはやっていたので、HTMLの知識は少しだけあるのですが、progateでもう一度復習してみます
0416デフォルトの名無しさん
垢版 |
2019/08/18(日) 12:09:24.17ID:1/VWQ1Qi
>>415
ありがとうございます
0418デフォルトの名無しさん
垢版 |
2019/08/18(日) 12:17:22.43ID:dQykhnjl
>>417
あれが驚愕だったのは、逮捕要件としては成立することが証明されたから。
もしあれが問題あるアクセスだったら、裁判沙汰になってたことにみんなビビった。
なんか、岡崎不起訴だから逮捕されないとか考えてるやついるみたいだけど、逆だからな。
問題のあるアクセスだったら「逮捕」される。
それ以前に規約違反なら民事で問題になる可能性が高い。
管轄裁判所が海外だったらそれだけでかなりやばい。
0419デフォルトの名無しさん
垢版 |
2019/08/18(日) 12:20:54.45ID:AlOPQzgK
>>413
できなくはないけど、Python側からはCSVで吐き出して、Excel側でVBAでも使って整形する方が楽なんじゃね?
正規のExcel持ってるならそれが一番簡単だと思う
0420デフォルトの名無しさん
垢版 |
2019/08/18(日) 14:15:51.47ID:aCbvPCgU
スクレイピングはページのソース見ながら
取りたい情報を取得出来るように
findとかfind_allでtry&errorで探すのが良いと思う。
Excel化はPandasで良いのでは?
0422デフォルトの名無しさん
垢版 |
2019/08/18(日) 14:44:11.80ID:Ai6XpbHo
>>394
おお…!!こんなに情報くださりありがとうございます!
Kintoneが僕のイメージしていたデータベースの画面そのものって感じでした!
保守・操作性・作成コスト考えるとプロが作ったものがベストですね…
ありがとう!
0423デフォルトの名無しさん
垢版 |
2019/08/18(日) 16:58:37.75ID:wiRjjb4J
アホ「Python勉強しています」
上司「そうか、じゃあウェブ上でデータベース管理に挑戦して欲しい」
アホ「おかのした、Kintone買いますね」

ボク「Python関係ないやんけぇーーーーーーー!!」
0424デフォルトの名無しさん
垢版 |
2019/08/18(日) 18:03:46.78ID:1VzJqXjW
>>422 なんのために挑戦して欲しいと言われたのかだな。
基本的な勉強のためか、実務のためかで変わってくる。

所でPostgreSQL は、PL/Python でFunction を作れるんだな。 知らんかった。 DbAdmin がPython に変わったのは気がついてたんだが。
0425デフォルトの名無しさん
垢版 |
2019/08/18(日) 23:19:00.05ID:sP8dj5WL
やっぱVueなんか
0426デフォルトの名無しさん
垢版 |
2019/08/19(月) 00:30:11.06ID:32wORggh
asyncioのシングルスレッド非同期IOについて思い切り誤解してたわ…
同期関数を@coroutineでデコレーションして
gather()でまとめて実行したら
javascriptみたいにいい感じにスケジューリングしてくれるとか思ってたけど全くそうじゃなかった

coroutineの中でtime.sleep()を呼び出してる場合、そこでCPUを掴んだまま離してくれないし
ctypesで共有ライブラリ呼び出して、そっちで同期処理やってる場合とかは自前でワーカースレッドを作ってスケジューリングしなきゃいけないって認識であってる?
0428デフォルトの名無しさん
垢版 |
2019/08/19(月) 04:13:55.48ID:gheQJCBA
ctypesに関してはうまい解法を知らない
futureにラップすればいいような気はする
0429426
垢版 |
2019/08/19(月) 10:46:50.53ID:sIPdGD0o
>>427
>>428
ありがと
time.sleepのほうはasync.sleepに書き換えれば済む話だけど

ctypesみたいにライブラリ側がasyncioで書かれてなくて、非同期IOに対応してない場合は別スレッドに処理を移譲するしかないっぽいな
単純にfutureでラップしてみたけどダメっぽい

結局javascriptみたいにアプリケーション全体が非同期IOを前提としたデザインでないとダメってことか
イベントループは扱いづらいな
0430デフォルトの名無しさん
垢版 |
2019/08/19(月) 13:49:33.23ID:DS93VUG8
これで十分だろ
with concurrent.futures.ThreadPoolExecutor() as pool:
 await loop.run_in_executor(pool, ctypes_func)
0432デフォルトの名無しさん
垢版 |
2019/08/19(月) 14:59:54.31ID:PlIxiJDq
>>406
GETで取得できるソースに必要な情報が含まれていないサイト
(クライアントサイドでHTMLを動的に生成するサイト)はseleniumを使うしかない
そう思っていた時期が俺にもありました

Chromeのデベロッパーツール>Networkタブを開いた状態でサイトにアクセスすれば
サイトによっては仕様非公開の公式APIにアクセスしてる様子が見られる
まぁこれを見てもAPIの使い方は完全にはわからないんだけど、
それっぽいパラメーターを加えてみたり、出てきたURLをググってみたりしたら
APIの使い方が分かる場合もある
0433デフォルトの名無しさん
垢版 |
2019/08/20(火) 04:55:31.02ID:07UggFrT
下のページの例、pytho3 で動かすには、どこをどう直したら良いですか?

https://qiita.com/nobrin/items/75580f298d7f0dde5970

except IOError, e: は except IOError as e: のタイポと思うのですが、
それを直しても、 buf が None になってしまって動きません。
0435デフォルトの名無しさん
垢版 |
2019/08/20(火) 14:04:59.56ID:zlJnj2O9
2 と 3 では except の書き方違うから
そもそもタイポではない
0436433
垢版 |
2019/08/20(火) 18:36:41.95ID:kksziEB8
>>434, 435

どうもです。2と3はそんなに違うんですね。あの例を3には諦めます。
0437デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:02:55.89ID:RnXfV7ql
Djangoで複数のアプリケーションを含んだWebアプリを作りたいのですが、ログイン出来るユーザーにのみ各ページを表示させたいのでログインしてないユーザーにはどこから入っても認証フォームではなくトップページにリダイレクトさせたいです
どこか実装に参考になるところを知っていたら教えていただけませんでしょうか
0438デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:19:20.29ID:AoZjSCV7
>>437
それはPythonじゃなくて
htmlの、.htaccessだっけ?の設定から指示するものなんじゃなかろうか
0439デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:33:17.66ID:0JZioQ5w
djangoとかほとんどの奴には過剰だろ
個人で入門やってるような連中にはだいたいbottleとかでイナフ
0440デフォルトの名無しさん
垢版 |
2019/08/20(火) 22:45:31.11ID:YNwJMbV9
>>439
PHPより楽になるならそれで充分だよ
ちょっと触ってみた感じでは制約が多そうだけど
ただ、URLがスッキリするのはよさげ
0441デフォルトの名無しさん
垢版 |
2019/08/20(火) 23:09:28.71ID:Pai9khPm
Ruby on Rails なら、ログイン失敗時に、
redirect_to :root

Railsの本は、10冊ぐらい出てるけど、
Django の本は、掌田の1冊だけw

シェア・規模が、全然違う!

さらに、Railsをやれば、Railsのコピーの、CakePHP も出来るようになる
0444デフォルトの名無しさん
垢版 |
2019/08/21(水) 03:27:00.73ID:jDiMObB6
URL がスッキリするのは Django のおかげじゃなくて
WSGI のおかげやろ
0446デフォルトの名無しさん
垢版 |
2019/08/21(水) 20:29:17.20ID:uDIdycaY
>>445
ありがとうございます!
無能で申し訳ないです。。
パッとみた感じいけそうです。助かりました
0447デフォルトの名無しさん
垢版 |
2019/08/21(水) 23:22:03.31ID:ou2s2vhN
Excelよりも便利で簡単に扱えるもの作ってー
いつまで経ってもVBAを超えれないな
0451デフォルトの名無しさん
垢版 |
2019/08/22(木) 10:29:17.45ID:xQsiKIbM
Access も Excel もオワコン
0453デフォルトの名無しさん
垢版 |
2019/08/22(木) 12:20:46.65ID:yykJaidr
どうせ増田だからネタだろうけど
DB的に使ってるならコピペ禁止の方がいいだろうな
0454デフォルトの名無しさん
垢版 |
2019/08/22(木) 20:08:46.68ID:maUgHi90
ExcelとかAccessは使う側に問題があるだけだと思うんだ

営業とかにGAS入れたスプレッドシート渡すと想像もつかない姿に成り果てて「動かなくなりました〜(ToT)」って言ってる所を何回も見たことある
0455デフォルトの名無しさん
垢版 |
2019/08/22(木) 20:18:52.78ID:moXRnIXF
せめてシステムというからには壊すほうが難しいレベルにはなっててほしい
Excelとかちょっと触ったらすぐ壊れる
0457デフォルトの名無しさん
垢版 |
2019/08/22(木) 21:17:52.78ID:9WktJQ5b
セルやシートを保護してパスワードがないと編集できなくする機能がなかったっけ?
0459デフォルトの名無しさん
垢版 |
2019/08/22(木) 22:57:54.62ID:427lMmCu
class oya:
def __init__(self, oyan):
self.oyan = oyan

class ko1(oya):
def __init__(self, ko1n):
super()__init__()
self.ko1n = ko1n

class ko2(oya):
def __init__(self, ko2n):
super()__init__()
self.ko2n = ko2n

こんなクラスの時ってどうやって宣言するの
ko1のinitに引数とってぶち込めばすぐ出来るのは分かるけど
親の値は変わらないから1回しか宣言したくない(1という値をko1とko2の宣言時の2回使いたくない)
理想は
hito1 = oya(1)
hito2 = ko1(2)
hito3 = ko2(3)
って宣言したら
x = ko1.oyan
の結果が1になって欲しいけど多分オブジェクト指向的に無理でしょこれ
0462デフォルトの名無しさん
垢版 |
2019/08/22(木) 23:23:43.90ID:GPK1ibq0
>>459
継承でやる事ではない
hito1〜hito3は完全に独立なオブジェクトであり親の変数を共有するものではない
0463デフォルトの名無しさん
垢版 |
2019/08/22(木) 23:24:50.01ID:GPK1ibq0
自分がやるとしたらoyaに子作りメソッド持たせてhito2, hito3はそこから生成する
0464デフォルトの名無しさん
垢版 |
2019/08/22(木) 23:26:32.76ID:427lMmCu
ああ子作りメソッド持たせればいいのかぁぁ
まさにそれで解決しそうありがとう
0466デフォルトの名無しさん
垢版 |
2019/08/23(金) 15:10:09.66ID:JyVC0Yw9
下のページに貼ったコードなのですが、2度めの Run で頻繁に落ちてしまいます。
何か改善方法がありましたら、教えてください。

http://codepad.org/vk5iZoq5
0467デフォルトの名無しさん
垢版 |
2019/08/23(金) 15:37:42.35ID:KddR4PS3
datetimeオブジェクトをprint関数で出力すると 2019-02-04 12:04:15.561748+00:00 といった文字列が表示される。
10進数浮動小数点数を扱うDecimalオブジェクトも、 4.25 といった小数の文字列が表示される。
int型オブジェクトも print(4-2) などと書けば 2 と表示され、Print出力させたいものが指定されている。
一方、下のような自作オブジェクトは、<__main__.Hoge object at 0x0xxxxxxxxxxxxxxxx>などと表示されてしまう。

class Hoge:
"""もしも生まれ変わったら触手になって巨乳に絡みつきたい"""

hoge = Hoge()
print(hoge)

どのようにすれば、自作オブジェクトがプリント出力を受けたときに、プリント出力させたいものを指定できますか?
0470デフォルトの名無しさん
垢版 |
2019/08/23(金) 16:51:43.23ID:Zx6EO+xk
君も今日から変態です
0471デフォルトの名無しさん
垢版 |
2019/08/23(金) 17:58:38.99ID:vHV4rQJH
来世はクリオネの触手に決定だ。良かったな。
しょこたんに愛でられるが良い
0472デフォルトの名無しさん
垢版 |
2019/08/25(日) 01:01:31.99ID:J56SS199
Windows10 Version1903+Python3.4.3/4あたりでpip search/installすると失敗する気がする
つーかしてる

pipのログ
tps://pastebin.com/6aec7DN6

urlopenでも起きる
tps://pastebin.com/faLkhJMp

C:\Windows\System32\curl.exeでも起きる
tps://pastebin.com/RMRKFxE5

さすがにC:\Windows\System32\curl.exeで起きるならWindowsの(WinSSLの)問題のような気がするので, フィードバックは出しておいた
しかし別の環境で確認したわけではないのでおま環の可能性も否定できない
0473デフォルトの名無しさん
垢版 |
2019/08/25(日) 10:35:38.45ID:AZu8bIY4
プログラミンで頭よくなるでs?
0475デフォルトの名無しさん
垢版 |
2019/08/25(日) 12:53:01.18ID:QXBNaO7H
progateで勉強しているのですが、
クラス、インスタンス、メソッドがあまりうまく理解できませんでした

とりあえず、progateのプログラムはクリアしたのですが、
このまま応用の承継にいくよりは、もう一度理解を深めたほうが良いと思ってます

pogate以外でそのへんをサクッとわかりやすく理解できる書籍かwebサービスってありますか?
0477デフォルトの名無しさん
垢版 |
2019/08/25(日) 17:45:50.15ID:xefslvO1
def main():
 a =0
 def do():
  a+=1
 do()
 print(a)

これで1を出力したいんだけどdo内のaが未定義と言われる。
globalにするしかないの?
0481デフォルトの名無しさん
垢版 |
2019/08/25(日) 18:21:56.02ID:xefslvO1
nonlocal!!
メソッドの引数に渡す関数で入出力触れなかったから困ってた(具体的にはopencvのマウスコールバックで使う変数)
0483デフォルトの名無しさん
垢版 |
2019/08/25(日) 19:47:02.35ID:5YnRy5JW
pythonは全くの初心者です。python-3.7.4-amd64をインストールしました。
ここから、PyAutoGuiとLINE Notifyを使って、
PCに特定の画像が現れたらスマホへLINE通知を送るスクリプトを書きたいです。
全く知識がないのですが、手っ取り早く作成したいので、初心者でも分かる簡単なサンプルを教えて下さい。
0486デフォルトの名無しさん
垢版 |
2019/08/25(日) 20:06:28.17ID:IF0Kk2PY
varなりletなり宣言文があればnonlocalなんてキモい構文必要なかったのに
0487デフォルトの名無しさん
垢版 |
2019/08/25(日) 20:08:27.84ID:pcw2wEWI
pythonはそんな学習量要らないからほかの言語知ってる人はここで聞かなくてもすぐ習得できるからな
聞きたくなるのは癖のあるライブラリくらいだ
0489483
垢版 |
2019/08/25(日) 20:23:15.04ID:5YnRy5JW
PCに「?」マークがいつも表示されていて、それが一日に数回「!」に変わることがあり、
その変化が起きた時にスマホへ即通知したいです。
UWSCで他の処理を行っているので、Pythonを使って通知を行いたいです。
0490デフォルトの名無しさん
垢版 |
2019/08/25(日) 20:24:00.46ID:xefslvO1
>>488
上にも書いたけど、
これはただの例で実際にはこの関数はopencvのマウスコールバックメソッドの引数になるから無理
簡単に書くと

mx = 0
def mouse(x):
 nonlocal mx
 if マウスが移動した:
  mx = x
setmouse(mouse)

こんな感じにセットしたらマウスが移動した時にmxにマウスのx座標が入るようになってる
0491デフォルトの名無しさん
垢版 |
2019/08/25(日) 20:27:54.70ID:x+sDslFz
>>488
普通ならそれで良いがこの問題の本質は>>481
OpenCVのマウスコールバック関数は引数が決まっているから自分では決められない
普通はglobal使うけど思想的に変数のスコープをイタズラに広げたくないのは理解できる
0493デフォルトの名無しさん
垢版 |
2019/08/25(日) 21:06:30.67ID:x+sDslFz
>>489
聞き方の姿勢はくだすれPythonのが俺は適してると思うがまぁいいか

いつも同じ場所に表示されるなら、場所指定で画像を切り出して比較する

import pyautogui
import numpy as np

# 画面のスナップショットを取得
im = pyautogui.screenshot()

# 画像の切り出し
size = 32
left = 100
upper = 100
right = left + size
lower = upper + size
im_crop = im.crop(left, upper, right, lower)

# グレースケールに変換し更にNumpy array型に変換
gray = np.asarray(im_crop.convert("L"))

あとは画像の特定位置の値を見て?か!を判断する
グレースケールからさらに二値化した方が確実かもしれない

ライン通知は他に任せた
0495デフォルトの名無しさん
垢版 |
2019/08/25(日) 21:37:38.20ID:hXq9loMI
>>489
OpenCVでテンプレートマッチング
0496483
垢版 |
2019/08/25(日) 21:40:30.44ID:5YnRy5JW
>>492>>489
皆様ご回答頂きありがとうございます。
ネットで見つけたLINE通知のと組み合わせてなんとか完成できそうです。
0498デフォルトの名無しさん
垢版 |
2019/08/25(日) 21:58:02.89ID:MfBi9Ugk
定形作業を簡単に置き換えるならやっぱbashが一番楽なのかな
pythonの方ができることの幅は増えそうだけど
0499デフォルトの名無しさん
垢版 |
2019/08/25(日) 23:55:34.19ID:SpCWKyo1
bash, sed, awk, PowerShell

これよりも複雑だと、テキスト処理・1-liner に優れている、Ruby
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況