【まず1嫁】くだすれPython(超初心者用) その58

■ このスレッドは過去ログ倉庫に格納されています
2022/09/07(水) 10:33:53.50ID:RjZl78eW
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

このスレッドは「お勉強」スレのほうには書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を、勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますので、お礼は Python の布教と初心者の救済をお願いします。

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Python公式◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/wiki.cgi

〇前スレ〇
【まず1嫁】くだすれPython(超初心者用) その57
https://mevius.5ch.net/test/read.cgi/tech/1653225908/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2022/12/09(金) 10:32:48.31ID:DDM/thjI
>>333
それこそ最後に適当な桁でround()しなよ
ただ、そもそもエラーってなんのエラーが出てるんだ?
338デフォルトの名無しさん
垢版 |
2022/12/09(金) 10:35:48.79ID:08JBCUgH
>>337
取引所のビットコインの桁数が決まってて、
小数点多すぎてエラーになってたみたいです、
なんか decimal使ったらエラーがでちゃったので、
こうしてみました
sum_size = round(sum([float(i) for i in size]),5)

これで寝ているだけで朝起きたらお金が増えているかも。
2022/12/09(金) 12:11:32.29ID:VCgN9nGy
sum(Decimal(f) for f in size)
根っこでDecimalにしとかんと意味ない
340デフォルトの名無しさん
垢版 |
2022/12/09(金) 15:24:13.03ID:Z1cscK2k
sum(map(float, sum_size))
341デフォルトの名無しさん
垢版 |
2022/12/09(金) 19:47:53.71ID:08JBCUgH
bot完成した、
今朝はプログラム失敗して大損してたけど、
だいぶ取り返してきた、
超初心者だけど頑張るぞ。
2022/12/09(金) 21:40:44.32ID:eVlnlsHp
Djangoってsql injectionの心配しなくていいんですか
343デフォルトの名無しさん
垢版 |
2022/12/09(金) 23:28:23.30ID:2EB/VYtw
>>342
そんなことないよ
2022/12/09(金) 23:51:14.07ID:eLXAv6sJ
Ruby on Rails では、place holder, ? を使うから、SQL injection されない。
例えば、published.where('published_at < ?', Time.current)

逆に、クライアントから送信された文字列を直接、文字列で連結して使うと、SQL injection される。
SQLにとって特別な意味を持つ、' を使われて、危険な命令を埋め込まれてしまう

例えば、"' OR '1" を入れて、その後に危険な命令を埋め込む

place holderを使うと、"' OR '1" が送られてきても、
'\' OR \'1' のようにエスケープされるので安全

PHP は素人ばかりだから、これでデータを抜ける。
Railsを勉強していないから皆、SQLも文字列を連結して作っている
345デフォルトの名無しさん
垢版 |
2022/12/10(土) 01:16:10.82ID:7ib52StN
>>344
噓ばっかりのキチガイ
346デフォルトの名無しさん
垢版 |
2022/12/10(土) 11:59:45.12ID:srOcl7Oy
ドローダウンやべー、
でも耐えて頑張るぞ、
初心者でも、
botで金持ちになるんだ。。
2022/12/10(土) 14:33:43.70ID:A6rFaSoj
>>346
ソフトで株やってんのか?
残念だけどソフト売買で金持ちになった投資家って聞いたことないな
348デフォルトの名無しさん
垢版 |
2022/12/10(土) 15:55:05.38ID:zHuXawkZ
>>34
もう何行目で気付くかより
何文字目で気付くかの
スルー早押しボタン競争状態
2022/12/10(土) 15:56:43.78ID:zHuXawkZ
>>347
禿バンクって soft bank って会社じゃなかった?しらんけど
350デフォルトの名無しさん
垢版 |
2022/12/10(土) 17:54:40.07ID:u5Pjqn8+
Windowsて外部のexeファイルを直接ダブルクリックして起動するとタスクバーにアイコンが表示されるのに、

pythonのsubprocess.popen経由でexeファイルを起動すると、タスクバーのアイコンがWindowsデフォルトの無印アイコンになってしまいます。
何が原因でしょうか?
2022/12/10(土) 18:57:08.91ID:0yWWcyiC
>>345,348
[Rr]ubyと[Rr]ailsをNGしとけよ...
2022/12/10(土) 23:19:15.79ID:B4c4v6qS
スーパークラスでひな形のメソッドを用意して、
サブクラスでオーバーライドして使う場合には、
ひな形のメソッドの中身はpass文で済ませていいでしょうか?
それとも抽象メソッドできちんと記述するべきでしょうか?
353デフォルトの名無しさん
垢版 |
2022/12/10(土) 23:42:59.44ID:OtY+jJHH
>>350
そんなことないぞ
shell=Falseにしてるか?
354デフォルトの名無しさん
垢版 |
2022/12/10(土) 23:44:40.69ID:OtY+jJHH
>>352
super class が abstract class かそうでないかで分ける
355デフォルトの名無しさん
垢版 |
2022/12/11(日) 00:15:43.20ID:7cpWGyaz
>>353
してます。

ほとんどのexeファイルはsubprocess.popenで開いてもアイコンがタスクバーに現れるのですが、特定のexeファイルにだけこの現象が起きています。

そもそものexeファイルの作り方が悪いのかもしれないですが、ダブルクリックでは問題なくアイコンが出るので不思議に思っています。
2022/12/11(日) 00:16:04.57ID:Lp5RN2UT
それ関係ある?
@abstractmethodじゃなかったら呼べてしまうから?

>>352
どっちにしろ空定義できないからpassでOK
357デフォルトの名無しさん
垢版 |
2022/12/11(日) 02:25:27.32ID:p7BQ55Fk
>>352
オーバーライドしてないサブクラス経由でひな形のメソッドを呼ぶようなコードが書かれた場合にどう対処したい?
それ次第
2022/12/11(日) 03:17:47.86ID:93aPaqaC
NotImplementedErrorにするのは少数派?
2022/12/11(日) 09:52:50.08ID:B9k8N7vL
>>355
Python じゃないけど VBA の Shell 関数で NotePad.exe 起動したら同じようにデフォルトのアイコンになっちゃう
まあ特に困ってないからそのままにしてるけど原因は俺も知りたいな
360デフォルトの名無しさん
垢版 |
2022/12/11(日) 10:30:01.79ID:rRS2TaaR
google colabで
data = list(files.upload().values())
とやってdata にlistとしてファイルを入れてるんだけど

これをやらずにcolabの「ファイル」の部分に直接ファイルをドラッグアンドドロップしたり
google driveからファイルを引っ張ってきたりできるのかな?

最終的には
data = list(file.values())としたいんだけど
どの方法が早いんだろうか?

ちなみにアップロードしてるのは20〜50MBぐらいの音楽ファイル
361360
垢版 |
2022/12/11(日) 11:53:49.74ID:rRS2TaaR
説明を追加する
「Music Transcription with Transformers 」というGoogle colabのコードを利用してる
このコードの一部に
data = list(files.upload().values())
という部分があり、ここでPC内のファイルからwavやmp3をアップロードしてる(ここまではきちんと実行できて問題ない)

更に時間を節約するためにそこを省略して、すでにcolab の /content/フォルダ内にアップロードしたファイルを利用したい
テキストファイルなら以下のようにやればいいことは確認した。

# /content/ディレクトリ内のファイルから、'filename.txt'を選択します。
with open('filename.txt', 'r') as f:
data = f.read()

だけど、wavやmp3の場合はどうしたらいいのかわからない
うまくいっている「data = list(files.upload().values())」のlistとかvaluesとかを考慮すりゃいいとは思うんだけど
書き方がわからない
362デフォルトの名無しさん
垢版 |
2022/12/11(日) 12:41:02.10ID:mmiA1K97
>>358
正解おめ
363352
垢版 |
2022/12/11(日) 13:09:25.66ID:HrCBt1qU
レスしてくれた方々、ありがとうございます

>>354
スーパークラスは一応通常クラスにしてあります

>>356
分かりました

>>357
厳密に言えば呼ばれたら困るには困るんですが、
勉強で一人で書いてるコードなのでそれはあり得ないんです
2022/12/11(日) 13:18:57.18ID:GglWfKZ4
Ruby の抽象クラスは、
抽象クラスではエラーになって、派生クラスのみで使える

class 親
def a
raise NotImplementedError
end
end

class 子 < 親
def a
処理を、override
end
end
2022/12/11(日) 13:32:20.67ID:mmiA1K97
>勉強で一人で書いてるコード

数日後や数ヶ月後数年後の自分は他人だと思え
366デフォルトの名無しさん
垢版 |
2022/12/11(日) 13:41:25.83ID:gxqyFrkM
>>361
colabのストレージって永続化されないと思うから、
先にアップロードしたファイルを使いたいならGoogleドライブをマウントしないとダメじゃない?
ファイルタブの上のアイコンの左から3番目のドライブのボタンをクリックするとマウント用のコードが追加されるはず
2022/12/11(日) 14:15:35.66ID:JbTC3Gyg
僕のアルバムに他人ばかり写ってるんですが一体誰ですか?
368デフォルトの名無しさん
垢版 |
2022/12/11(日) 14:58:13.66ID:Mt+1J+8e
>>363
>勉強で一人で書いてるコードなのでそれはあり得ないんです

そういう考え方はよくないね
勉強で書いてるなら尚更良くない
他人だけでなく自分がうっかり間違えた場合にコードにどう振る舞って欲しいかを考えないと
369デフォルトの名無しさん
垢版 |
2022/12/11(日) 15:08:27.80ID:FWNEJR9L
サブクラス化するときにオーバーライドを強制したいなら抽象メソッドにして中身はpassで可
オーバーライドを強制はしないけど該当メソッドが呼ばれた時はエラーにしたいなら通常メソッドでNotImplementedError
基本的にはこの2つのどちらか

強制もしたくないし呼び出されてもエラーにしたくないしpass以外のデフォルト実装も提供したくないなら通常メソッドでpassってことになるが
それが一番適切な選択になるようなユースケースは無いんじゃね?
370363
垢版 |
2022/12/11(日) 15:32:54.99ID:HrCBt1qU
レスありがとうございます
ちなみにカードゲームを作っていて、スーパークラスがPlayer、
サブクラスがHuman・Computerです

>>365
はい、それは時間が経った時に実感します
ただ今回は300行程度の短いものですから…

>>368
そうなんですね
ただ、そのスーパークラスをインスタンス化することは無いです

>>369
そうなんですか
いろいろ制約をかけるとPythonらしくない、と人に言われたこともありまして
2022/12/11(日) 19:28:32.33ID:EEtCFdnW
よくいる賛同欲しいそれ以外お断り系質問の匂いがしますね違うかな
372デフォルトの名無しさん
垢版 |
2022/12/11(日) 19:46:01.79ID:tS4zFrKc
NotImplementedErrorで良くね派
実際にメソッド呼ぶまでエラーにならないのが欠点だがABCMetaはめんどい
373370
垢版 |
2022/12/12(月) 22:08:43.56ID:1+Ogth18
>>371
確かに…
以後気を付けます

>>372
ありがとうございます
検討します
374デフォルトの名無しさん
垢版 |
2022/12/14(水) 21:44:28.17ID:XhtdH9iq
>>370
>>スーパークラスをインスタンス化することは無い

>>363
>>354
スーパークラスは一応通常クラスにしてあります

矛盾してるんだよな
意味わからず調べず返事するからだろうけど
375デフォルトの名無しさん
垢版 |
2022/12/14(水) 21:53:17.73ID:XhtdH9iq
>>371
都合の悪い意見はスルーしてるんだよな

あるいは馬鹿は自分の理解の及ばない単語は目に入らない
(スルーしてるんじゃなくマジで見えない)という話があるがそれかもしれん
376デフォルトの名無しさん
垢版 |
2022/12/14(水) 22:44:36.02ID:MDY4fnZr
素人質問で恐縮なのですが、
…なんて常套句はさておき、本当に本当の初心者なのでLv低い質問だと思いますが、

b = 2
と入力して、
type(b)
で、変数bの型は何ですか?と聞くだけの超簡単なコマンドのはずなのに
何でエラーが出てしまうんでしょう?
(ここで躓いているようじゃ先が思いやられるかな?)
(スクショ貼れませんでした、すみません)
誰かよろしくおねがいします
377376
垢版 |
2022/12/14(水) 22:47:39.51ID:MDY4fnZr
環境はgoogle drive上のgoogle colabolatoryでやっています。
ちなみにwindows10です。
スクショ貼ろうとしましたが、うpろだの多分urlがNGワードに引っかかっちゃったみたいです
2022/12/14(水) 22:50:23.63ID:sU0yxaOg
エラー出ないのでその情報じゃなんもわからん
379376
垢版 |
2022/12/14(水) 22:57:09.58ID:MDY4fnZr
確かにもっともなご指摘・・・
これで貼れるでしょうか?
https://imgur.com/a/96Z0WgY
2022/12/14(水) 23:03:55.05ID:kP9TY3cy
それこそColabなら共有(共同作業)できるから
捨て垢でやり直してリンク貼ったらどうか
2022/12/14(水) 23:09:40.60ID:NEZYoEtN
>>379
typeっていう名前の変数を定義してないか?
382376
垢版 |
2022/12/14(水) 23:20:08.50ID:MDY4fnZr
>380
それも手ですね
分からなかったらそうします

>381
予約語を変数として定義できるんですか?
定義してるかどうかは、どうやって確かめますか?
2022/12/14(水) 23:36:24.27ID:SV0C9PdI
del type
384376
垢版 |
2022/12/14(水) 23:41:19.54ID:MDY4fnZr
>383
ありがとうございます、解決しました!!
色々と変にいじってたうちにtypeに変数を定義しちゃってたのが原因だったみたいですね。
これで先に進めます。
385デフォルトの名無しさん
垢版 |
2022/12/15(木) 01:16:43.12ID:jZ5UYKI0
>>382
>予約語を変数として定義できるんですか?
できないです。SyntaxErrorがおきます
386デフォルトの名無しさん
垢版 |
2022/12/15(木) 01:20:47.13ID:kymHgKbk
えっ?
387デフォルトの名無しさん
垢版 |
2022/12/15(木) 01:36:22.80ID:XVN1N3BK
予約語ってのはdelとかforとか文を形成するものじゃない?厳密には違うかもしれないけど書き換わったら根本的に意味をなさないもの
typeとかは組み込み関数だけど、場合によっては別の関数で上書きして使いたいときがあるかもしれない。便利機能を追加するときとか
388デフォルトの名無しさん
垢版 |
2022/12/15(木) 04:22:37.68ID:NZLYDmOy
なるほど
2022/12/16(金) 03:13:08.59ID:mVqdHhnt
pycharmの最新版を入れたら、デバッグの時に日本語が文字化けするようになったわ。
2022/12/16(金) 06:30:54.79ID:BMo1BRTS
pipで入れれるツールをよく作るのですが、インストール後に生成したファイル(アクセストークン、設定、キャッシュなど) はどこに保存するのが普通ですか?
アンインストール時に一緒に消せるようにしたいのですが、package dataだと最初からファイルが存在している必要があり、管理がしにくく思っています。
なにか実践されてる方法をご存知でしたら教えてください。
391デフォルトの名無しさん
垢版 |
2022/12/17(土) 15:32:13.15ID:REqE3zrN
質問っす。
マルチグラボで並列処理をpythonでしたいとき
何がおすすめですか?
vs?colab?charm?
2022/12/17(土) 16:20:39.02ID:38dnloyr
>マルチグラボで並列処理
肝心のここが謎だけどその並列処理ツールの公式サイトで聞いたら?
きっと好きなの使えっていわれるよ
2022/12/17(土) 20:09:38.48ID:hPgT/cMS
無理やりチェーンメソッドみたいな事が出来るようになるAPIはありませんか?
自力だとこんな感じでしか思いつかなかったのですが
https://ideone.com/y1cK9w
394デフォルトの名無しさん
垢版 |
2022/12/17(土) 20:17:08.64ID:REqE3zrN
>>392
ありがと!
ついでにflaskとdjangoやりたいんだが
pycharm一択ですか?
2022/12/18(日) 00:00:30.20ID:akxhfAdN
pycharmの無料版はWeb開発に必要な機能がまるっと削られてるからflaskやdjangoやるなら課金必須
無料ならVSCode一択
396デフォルトの名無しさん
垢版 |
2022/12/18(日) 09:52:24.31ID:aCP/2AKW
指定したフォルダの階層内のフォルダ名を一括で変更したいのですがどうしたら良いですか?
例えば、以下のような階層で、「test」と名前がつくフォルダを一括で「changed」に変更したいです。
test
|_aaa
|_test
|_iii
|_test
397デフォルトの名無しさん
垢版 |
2022/12/18(日) 09:53:03.96ID:aCP/2AKW
インデントが反映されなかったのでもう1度

test
 |_aaa
  |_test
   |_iii
    |_test
2022/12/18(日) 10:14:02.68ID:pp8ifc2A
再帰でフォルダ名のリストを作る
一番深いフォルダからリネームする
399デフォルトの名無しさん
垢版 |
2022/12/18(日) 10:52:22.78ID:aCP/2AKW
>>398
深い階層からって難しくないですか?
2022/12/18(日) 11:48:07.32ID:ciqdCn4z
>>399
まずは再帰について学ぼうか
401デフォルトの名無しさん
垢版 |
2022/12/18(日) 11:58:44.72ID:aCP/2AKW
>>400
再帰はさすがに知ってます
402デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:00:25.16ID:aCP/2AKW
フォルダ一覧の配列を取得したら、その配列の順番をひっくり返すだけで大丈夫そうですか?
2022/12/18(日) 12:12:18.14ID:ciqdCn4z
再帰知ってて>>399とか意味わからん
知ってるのは名前だけとかいうオチじゃないよね?
とりあえず>>398のリストを作ってみようか
再帰知ってるなら簡単だよね
404デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:17:35.71ID:aCP/2AKW
>>403
上の階層から順番に処理する場合での再帰って言うのでは・・・
405デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:17:37.31ID:jVnwI9CT
>>402
globとか考えてるならワンチャンsortしたらいけるかもしれないけど、自分で深さ優先探索してサブディレクトリがなくなったらリネームして親ディレクトリに戻って他のサブディレクトリに移って同じことをするみたいな実装が確実
os.walkでいけるのかな
406デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:18:32.41ID:aCP/2AKW
>>403
上の階層から順番に処理する場合でも再帰って言うのでは・・・
407デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:21:53.43ID:aCP/2AKW
再帰関数っていうのは関数内で自分自身を呼び出すことだし、別に再帰には後ろから順番に処理するって意味は含まれてなくて、ループを使わずに同じ処理を繰り返す的な意味なのでは
408デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:25:20.51ID:aCP/2AKW
再帰の意味はともあれ、これで行けそうです
見つけました
https://www.curict.com/item/48/4807c14.html
2022/12/18(日) 12:34:42.73ID:ciqdCn4z
>>404,406
誰も上の階層からやるやつを再帰と言わないなんて言ってない
人のレスにケチつけるだけの人みたいだから俺は匙投げるわ
410デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:37:28.05ID:dO1j2fxY
>>402 みたいな発言観ると池沼っているんだなって判る
411デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:38:12.64ID:aCP/2AKW
>>409
再帰の本当の意味をあなたが知らなかっただけですよね?
412デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:40:05.30ID:aCP/2AKW
匙投げるも何も既に解決したと書いてるんですが笑笑
コードも示せない人は回答しないで欲しいですね
413デフォルトの名無しさん
垢版 |
2022/12/18(日) 12:41:20.99ID:dO1j2fxY
池沼は煽ると発狂してレスが増えるから判り易い
414デフォルトの名無しさん
垢版 |
2022/12/18(日) 13:09:02.70ID:I9Yb5Gss
https://ideone.com/52ixhm
どう
415デフォルトの名無しさん
垢版 |
2022/12/18(日) 14:14:57.50ID:zER91A4Q
>>398
わざわざリストする必要もなければ
わざわざ一番深いフォルダからリネームする必要もないでしょ

そうしたほうがいいユースケースがあるのは分かるが今回は質問者が疑問に思う方がまとも
2022/12/18(日) 16:52:43.20ID:UTT6KxDb
浅い方のフォルダを先にリネームしたら深い方のフォルダのフルパス変わるから悪手だと思う
2022/12/18(日) 17:00:10.03ID:2i9VTMTT
再帰が後ろから処理するのは事実
2022/12/18(日) 17:16:13.18ID:4T78MPGL
幅優先と深さ優先の話でしょ?
2022/12/18(日) 17:40:00.53ID:ciqdCn4z
後ろからとか言うのはよくわからんけど幅優先と深さ優先にしてもどちらも再帰で処理できるでしょ
420デフォルトの名無しさん
垢版 |
2022/12/18(日) 17:46:32.33ID:hT8eQZti
>>416
深い方のフォルダのフルパスが変わったら何が問題なの?
2022/12/18(日) 17:47:49.48ID:0kkAgxkU
カレントのフォルダ列挙して
各フォルダに再帰呼び出しした後
リネームするだけだと思う
422デフォルトの名無しさん
垢版 |
2022/12/18(日) 17:57:12.11ID:d6DD8mST
再帰はglobやrglobがやってくれる
↓こういうので何か問題ある?

for x in Path(‘.’).rglob(‘test/‘):
__x.rename(str(x).replace(‘test’, ‘changed’))
2022/12/18(日) 19:16:01.59ID:2iV+0qph
30代Python男はクソチョン強姦魔
2022/12/18(日) 19:47:03.04ID:ciqdCn4z
>>422
ループ内でループの選択項目を変更するのはちょっと怖いわ
rglob() とかは大丈夫なんだっけ?
2022/12/18(日) 21:05:52.90ID:ew4wvnMN
プログラミング初心者です。質問させてください。
pythonとseleniumでスクレイピングを始めました。
関数の引数に変数を指定したいのですがうまくいきません。
スクリプトはpastbinに貼りました。
https://pastebin.com/uznZaB7n
本来はBy.CSS_SELECTOR等が入る位置に、fix_search_methodと称する変数を入れることでBy.LINK_TEXTやBy.CSS_SELECTORと指定したいのですがInvalidArgumentExceptionと出てしまってうまくいきません。

また、必要性は低いと思うのですが、presence_of_element_locatedの括弧のところで直にBy. + search_methodと短く書くことは可能でしょうか。
初歩的な質問だと思い申し訳ないのですが、よろしくお願いします。
2022/12/18(日) 21:19:21.74ID:UTT6KxDb
>>420
>>421みたいな発想がなかったすまん
2022/12/18(日) 21:25:40.52ID:2i9VTMTT
>>426
これは深い方からやっています
428デフォルトの名無しさん
垢版 |
2022/12/19(月) 11:23:36.91ID:itMdNDye
30代Pythonクソチョン男は強姦魔の犯罪者!
雇うときには 父母と祖父母の戸籍謄本を提出させましょう!
2022/12/19(月) 23:45:01.33ID:ahw2JnZF
>>427
そらまた勝手に引き合いに出してすまん
2022/12/20(火) 06:02:07.12ID:VwdPHvLy
>>389
設定にコンソール画面の文字コードの設定が新たにできたみたい。
エディター>一般 |>コンソールのところを設定したら治った。
2022/12/21(水) 21:30:04.82ID:5PU21m8R
PySide6でqasync利用して@asyncSlotしたメソッドから
aiohttp.ClientSession.get呼ぶと止まっちゃうんですけど回避方法ありませんか
timeoutいれてみるとタイムアウトになります
432デフォルトの名無しさん
垢版 |
2022/12/28(水) 23:20:39.25ID:n1i3RgfV
ChatGPTにyoutubeの登録者数を取得するコードを聞いたら以下のように教えられてやってみたんですが、「AttributeError: type object 'Credentials' has no attribute 'from_api_key'」と表示されて動きませんでした。
本当はどうすればよかったんでしょうか。

# APIキーを設定
api_key = "YOUR_API_KEY"

# google-authとgoogle-api-python-clientライブラリをインポート
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build

# YouTube APIのサービスを構築
youtube = build("youtube", "v3", credentials=Credentials.from_api_key(api_key))

# チャンネルIDを設定
channel_id = "UC_CHANNEL_ID"

# YouTube APIを呼び出して、チャンネルの登録者数を取得
response = youtube.channels().list(
id=channel_id,
part="statistics"
).execute()

# 登録者数を表示
print(response["items"][0]["statistics"]["subscriberCount"])
433デフォルトの名無しさん
垢版 |
2022/12/28(水) 23:20:53.28ID:n1i3RgfV
また、以下はそんなライブラリ使わなくてもこうすればできるのにと思って書いたコードで普通に動くやつです。


API_KEY = 'MY_API_KEY'

import urllib.request
import json

# チャンネルIDを設定
channel_id = 'UCZf__ehlCEBPop-_sldpBUQ'

# URLを設定
url = f'https://www.googleapis.com/youtube/v3/channels?part=statistics&id={channel_id}&key={API_KEY}'

# GETリクエストを実行
response = urllib.request.urlopen(url)

# レスポンスボディを取得しJSON形式に変換
data = json.loads(response.read())

# 登録者数を取得
subscriber_count = data['items'][0]['statistics']['subscriberCount']

print(subscriber_count)

google-authとgoogle-api-python-clientライブラリを使うメリットって何なんでしょうか。
教えていただければと思います。
434デフォルトの名無しさん
垢版 |
2022/12/28(水) 23:42:53.51ID:oCgdgjHS
それもChatGPTに聞けよ
435デフォルトの名無しさん
垢版 |
2022/12/28(水) 23:54:35.12ID:n1i3RgfV
>>434 確かに

Google-authとgoogle-api-python-clientライブラリを使用することで、YouTube APIを使用してYouTubeチャンネルの登録者数を取得することができます。

GETリクエストを実行することでも、YouTube APIを使用してYouTubeチャンネルの登録者数を取得することはできますが、Google-authとgoogle-api-python-clientライブラリを使用することにより、以下のようなメリットがあります。

コードが簡単である。Google-authとgoogle-api-python-clientライブラリを使用することで、APIの呼び出しや結果の取得を簡単に行うことができます。
認証が簡単である。Google-authを使用することで、APIを使用するための認証が簡単に行えます。
他のAPIを使用することができる。Google-api-python-clientライブラリを使用することで、Google Cloud Platformの他のAPIを使用することができます。
また、Google-authとgoogle-api-python-clientライブラリを使用することで、APIを使用するための認証やAPIの使用に関するエラー処理なども簡単に行うことができます。

ただし、Google-authとgoogle-api-python-clientライブラリを使用することにより、APIを使用するために必要なライブラリが増えるため、ライブラリを使用することで必要になるライブラリを読み込む処理や、ライブラリのインストールが必要になることがあります。
2022/12/29(木) 06:04:08.55ID:KLxb2KfB
基本、スクレイピングは攻撃・営業妨害になるので、契約してAPI を使うべき!

図書館へ何万回もアクセスして、逮捕された香具師もいるから、
全てのスクレイピングの本には必ず、APIを使うように書いてある
2022/12/29(木) 08:24:12.90ID:xv5xMvYF
AIが進化するに連れ、結局僕らも機械的に思考してるだけなんだなってつくづく思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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