【まず1嫁】くだすれPython(超初心者用) その58
レス数が1000を超えています。これ以上書き込みはできません。
当スレに★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 ### >>1
スレ立てありがとうございます
批判する人も多いが安心のPython
でも昨今はforより内包が絶対とか堅苦しくなってきた? 素朴な疑問なんですが、requestsが非同期IOに対応しないのは何か理由があるのですか?
aiohttp使えばいいんでしょうが、requests使い慣れてるからそれで使えると良いなと思ったのですが。 >>2
>forより内包が絶対
だれがそんなこと言ってるの? >>3
使う側からすると機能追加で済みそうだけど
同期前提でつくっている実装を非同期対応すると構造全体の見直しになる
品質考えるとインターフェース一新した別物つくるのが賢明
たぶんね 質問者自身何が何だか分からない質問です
tps://github.com/megadose/holehe
これを普段 holehe test@gmail.com で使用しているのですが
下記の意味が分かりません
tps://i.imgur.com/pnV1NLw.jpg
tps://i.imgur.com/fb7c0F1.jpg
・どこで何をしたらこうなるのかも分からないのですがpythonと書いてあったのでここに来ました
・1枚目の処理を実行すると2枚目の内容が出力されるのですか?
このツールは普段の使い方だとアカウントの有無しか分かりません
しかし画像のようにもっと細かく分かるなら是非やってみたいと思い質問させて頂きました
低レベルで申し訳ありませんが何卒宜しくお願い致します あってるけど、ぱっと見いろいろオプションが用意されてるみたいだからまずはそれを試したら?
holehe --help >>12
ありがとうございます。早速ヘルプの内容を確認してみましたが
これらのオプションを使っても検索結果が拡充される事はなく、情報の色を変えるか変えないかであったり
調査にあたって危険な方法を試さず、より安全に探索するような指示であったり
あくまで基本的な探索オプションでしかありませんでした。
やはり画像のような "emailrecovery"や"phoneNumber"などもう一歩踏み込んだ情報を得たいので
Python Example・Module Outputの機能についてご教示頂けませんでしょうか。
これは難しいから初心者には無理、といった事でも構いませんのでよろしくお願い致します pandasで下記Aの様に列などを指定すれば文字列を含む場所を抽出できますが、
Bの様にdf全体に対して抽出することは可能でしょうか?
A: df[1].str.contains('\d')
B: df.str.contains('\d') >>13
コードをコピってファイル(拡張子py)に保存して
python3 保存したファイル名
csvオプションでも全部吐き出しそうな雰囲気だったけども >>15
ありがとうございます、できました!対象のメールアドレスのせいもあってか
知りたかった情報は得られませんでしたが理屈が分かったので後は調べて頑張ってみようと思います
ついでにもう一つ宜しいでしょうか。当方Windowsなのですが
皆さんpython3 hogeで動かしてるのに自分のPCではpy hogeまたはpython fugaでないと動きません
これはこういうもんで、動いてるならあまり深く気にしなくてもよいでしょうか? >>16
デプロイする事を考えたら環境構築を考えるのは必須事項
そうではなくて自分の環境だけでいいなら気にしなくていいんじゃない 今は取り急ぎ自分の環境だけで大丈夫なので気にしない事にします
ご親切にありがとうございました! >>16
> ついでに
それはLinuxとWindowsの違いだからそれで正しい >>20
なるほど、ありがとうございます。ずっと気になっていたのでスッキリしました! おしえて下さい!
pandasで下のデータ「file_csv」を呼び出し
import pandas as pd
data = pd. file_csv(file_path)
id, age, day, cmp, gender
0 1 , 25, 3, abc, 1
1 2 , 34, 5, def, 0
2 3 , 22, 10, abc, 0
3 4 , 38, 7, def, 1
4 5 , 67, 0, def, 1
genderのカラム名を「flag」に変更し、
(age >= 30) & (age < 60)に該当する
カラム「day」「cmp」を
ヘッダーあり、インデックスなしで
csvファイル出力したい場合
どんな組み合わせになるのでしょうか…
1つずつは何となく出せたのですが、
if、locをあれこれ組み合わせて試行錯誤のしつつ躓いてます。
Dataflame型について、まだ十分に理解しきれてないです。
以下は試してみた分です
rename(columns = "gender": "flag")
(data["age"] >= 30) & (data"age"] < 60)
to_csv("ファイル名", index = False)
どうか宜しくお願いします。 >>22
data.rename(columns={"gender":"flag"}).query("30<=age<60")[["day","cmp"]].to_csv("data.csv",index=False) >>14
df[:].apply(lambda x: x.str.contains('\d')) >>14
df.apply(lambda x: x.str.contains('\d'))
でもいけた >>26
できました!
ありがとうございます。助かりました。>df.apply(lambda x: x.str.contains('¥d')) >>27
str.contains自体はstrに変換できるSeriesの各要素にcontainsを適用して同じ要素数のboolのSeriesにするだけで、
抽出自体はしないぞ 開発してるアプリ毎に仮想環境を作ってるのですが、どのアプリがどの仮想環境を使うのかがいまいち覚えられず
悩んでます
VS.codeとかを使える場合はそれらに任せているのですが、単品で動かす場合はやはり困ることもあります
スクリプトを実行する際に、自動的に仮想環境を選ばせる方法はありますか?
いっそのこと仮想環境のディレクトリ内にスクリプト類も配置すれば分かりやすいかなとも思ってますが、あまりよくないのでしょうかね… > 仮想環境のディレクトリ内にスクリプト類も配置
それ以外にどうやってるのいま? >>23
確認遅くなりました
ありがとうございます!
query使うのですね
試してみます! 引数をもつデコレータがある場合、関数を呼び出すごとにデコレータの引数を変える(与える)にはどうしたらよいでしょうか?
たとえば以下のような、retryモジュールのデコレータは、試行回数などを引数に与えますが、状況に応じてその回数を変えたりしたいです
@retry(tries=5, delay=1)
def function(**kwargs):
____:
簡単なやり方があると良いのですが・・ def function(tries=5, delay=1, **kwargs):
__@retry(tries, delay)
__def inner(**kwargs):
____pass:
__return inner(**kwargs) func=retry(tries=5,delay=1)(function) >>35 >>36
ありがとうございます。
なるほど、デコレータをさらに関数で囲えばよいということですね。
勉強になります。 meboっていうチャットボット用のAPIを操作したいのですが
単純なAPIが使えなくて挫折してます。
meboHP: https://mebo.work/
meboAPIのAI構築について:https://zenn.dev/makunugi/books/f3d9eb62b6d133/viewer/f0c36f
環境
google colab(Python 3.7.14)
コード
https://pastebin.com/jjDUXv4h
現在の出力
rpc error: code = InvalidArgument desc = Document name "projects/mabo-f1cc7/databases/(default)/documents/bots/" has invalid trailing "/".
サーバーからのステータス
<Response [500]> >>38
解決しました。>>38のレスは無視してください。 自分で定義したクラスから作ったインスタンスを要素に持つリストから、
そのクラスの持つ属性だけを用いて目的のインスタンスを検索する方法ってありますか?
知っている方がいたら教えて頂きたいです
よろしくお願いします 1つずつ検査で良いなら
for c in cars:
if c.name == "z":
print("found")
break すいません、もう1つ初歩的なことをお聞きしたいのですが、
ネストが深くなって、型ヒントを付けると79文字に収まらないので
仕方なくカットしたのですが、79文字を超えても型ヒントを付けるべきでしょうか? >>43
ネストを浅くするという選択肢は無しですか? レスありがとうございます
>>44
これ以上はきついです
全体をdefで囲って、その中にclassを定義して、その中にインスタンスメソッドを
定義する必要があるからです(現状ネスト6重)
>>45
慣習みたいなものだと捉えています(インデントは空白4文字、のような)
79文字を超えるとpycodestyleでも引っ掛かります >>45
PEP8
>>46
>全体をdefで囲って、その中にclassを定義して、その中にインスタンスメソッドを
>定義する必要があるからです(現状ネスト6重)
なんで? 型ヒントを書くこととPEP8を守ることを強いられてる状況でどちらを無視していいですかって聞かれても答えなんてないよ PEP8の79文字制限の理由ってデバイス上の文字数制限から複数のファイルを並べて開くことに変わってるんだね
今初めて知ったわ デバイスが理由の制限なら、PEP8の79文字別に守らなくてもいいと思ってたのに レスありがとうございます
>>47
そうなんですね
if __name__ == '__main__': の使い方について調べてみようと思います
>>48
クラス内にインスタンスメソッドを定義するのは分かって貰えると思います
あとは以前友人に、グローバル変数はなるべく使わない方がいいと指摘されたので、
全体をdefで囲みました
>>49
そうですか、困りました…
型ヒントは努力目標だと思っているので、今回は切りました
変数名から型はすぐに予想が付くはずなので aiohttpのsession.get()ってなんで、async with で書くのでしょうか?
単に response = await session.get()
でもよいような気がするのですが、何か必要な後処理があるのですか? if( !(10 <= n && n <= 20) ){}
pythonで↑の条件作るにはどう記述すればいいですか?
if not 10 <= n and n <= 20 だと違う条件になるよね? >>56
素直に
if not (10 <= n and n <= 20)
だとダメなの?
Python だと
if not (10 <= n <= 20)
でもいける
括弧を使うことはまかりならんとご先祖様に言われてるなら>>57の言うようにド・モルガン使って
if n < 10 or 20 < n
でいいかと >>58
普通に()でくくれるんですね
pythonのifやforは()使わないのでそっちに意識引っ張られてました
ありがとうございます。 >>56
10<=n and n<=20は
10 <= n <= 20 でもおk >>58
if 20 < n < 10: まで進化すると嬉しいな seleniumでのスクレイピングの処理を書いたpythonファイル1.py、2.py、3.py、4.pyを5.pyに下記の記載をして、
exec(open("1.py").read())
exec(open("2.py").read())
exec(open("3.py").read())
exec(open("4.py").read())
の形で順に処理を行っているのですが、この処理をマルチプロセスを使用して並列処理ってですか?
1.py〜4.pyはそれぞれ別のサイトからクローリングする内容で並列処理をしても過アクセスにならない状態です。 なんの環境か知らんけどっですか
python 1.py &
python 2.py &
… 微妙にくせがあるけどmultiprocessing使うとか
https://ideone.com/jC3U5x 独立プログラムならxargs -Pのが簡単だし柔軟 >>63
やってみたい内容はseleniumをマルチプロセス?で並行処理したいです。
1.pyはamazonをスクレイピングする内容で、2.pyはビックカメラを、3.pyはヨドバシを、4.pyは楽天をスクレイピングする内容になってます。
5.pyを起動すると1.pyから4.py順に処理するかたちとなってます。
現状
1.py処理開始
↓1時間で処理完了
2.py処理開始
↓1時間で処理完了
3.py処理開始
↓1時間で処理完了
4.py処理開始
↓1時間で処理完了
合計4時間で処理終了
やりたいこと
1.py~4.pyを同時に処理開始
↓1時間で処理完了
合計1時間で処理終了 なんの環境か知らんけどって書かれているように
まずなんの環境か書いたほうがええよ シェルスクリプトとかDOSバッチファイルとかPowershellとかで、Pythonの外で並列に立ち上げる感じやね vscodeでjupyterの拡張機能いれて使ってたんだけど
from bs4 import BeautifulSoup
これを書くと
ModuleNotFoundError: No module named 'bs4'
となってエラーになる
普通に.pyファイル内で書いて実行するのはエラー起きないから、jupyterのなんやかんやがおかしいんだろうけどよくわからない すまん解決した
jupyterの拡張機能入れると2つの環境ができるっぽい
jupyter上で普通にコードを打つみたいにpip listを実行すればjupyterでの外部ライブラリのインストール状況がわかるんだな
そっち見たらBeautifulSoup4が欠けてた 公式Python+PyCharm(ともに最新)を使っていて、PyCharmでF8キーでステップ実行をしてると、
ディスプレイがスリープモードになって、ディスプレイをOFF/ONしないと画面が復活しない現象が出てる。
ディスプレイはFHDと4Kのマルチで4K側がOFFになってしまう。
pythonのスクリプトはseleniumでChromeを動かすもので、Windowsのシステムをいじるものではないし、
イベントビューアーには何も出ない。
これってどこの悪いんだろう?
ビデオカード?ディスプレイ?PyCharm?
ディスプレイはHPの激安4Kの「HP V28 4K」 Windows上のPythonはどこから実行環境のタイムゾーン情報を取得していますか?
(環境: Windows10 Python 3.8)
素の状態でdatetimeでnative/aware、変換での時刻を取得表示すると以下のようになります
now_native = datetime.now()
-> 2022-10-02 18:14:56.061740 (=実際の日本時間)
now_aware_utc = datetime.now(timezone.utc)
-> 2022-10-02 09:14:56.061740+00:00
now_aware_local = now_aware_utc.astimezone()
-> 2022-10-02 18:14:56.061740+09:00
-----
しかし、下記TZ環境変数を追加すると、上記の値はそれぞれ以下のようになってしまいます
(全部UTCになり、astimezoneでもJSTに戻らない)
os.environ['TZ'] = 'Asia/Tokyo'
-> 2022-10-02 09:15:08.251324
-> 2022-10-02 09:15:08.251324+00:00
-> 2022-10-02 09:15:08.251324+00:00
(python上ではなく、OS側でTZを指定すると、なぜか夏時間分さらにずれます)
TZ無しだと正しく判別できている点と、TZありだとおかしくなる原因が知りたいです。 ドキュメントによるとその形式はUNIX系だけなんじゃね?
"GMT+9"とかしてみれば ありがとうございます。
環境変数が TZ=GMT-9 や TZ=JST-9 にしてみたところ正しく動きました(+9だとずれました)
なぜAsia/Tokyoの設定を書いたかと言いますと、
Google Firestoreにnativeなdatetime値をフィールドにセットすると、自動的にfirestoreのtimestamp型で保存されますが、
Asia/Tokyoでないと時刻がずれて保存されてしまいした。
ただ、よく確認したらTZ=Asia/Tokyoでも夏時間の+1時間ずれて保存されてしまっているようだったので、
素直にawareなdatetimeか、unixtime値で統一しようかと思います。
できれば、ローカル内ではタイムゾーン意識無し(datetimeもnative)で時刻を扱いたかったのですが。 自分の使ってる環境やOS以外のOSの存在を想定しないタイプの質問者は多い >>75
PC(やノートPC)本体のF8機能は疑わないの? >>79
自分はログインするすべてのユーザーで起動時に TZ=JST-9 で動く様にしてる
まかせっきりにするより安定するから
>>78
pytz 便利だよね (2^((2^(111-1))-1))*(2-(2^-2147483536))
が
https://ideone.com/3sxXF1
3.724173892452932703847578592653741500670543217015032981203746860583934456368392810496137951064109136E+390759275202710585594223439217007
になったんですが、誰か検算していただけないでしょうか?
なにしろ
(2^((2^(115-1))-1))*(2-(2^-4294967180))
で
https://ideone.com/MDO46W
1.369238871792785393062417227660788996255177387212550321383285600970027973012269329384152209543458491E+6252148403243369369507575027472121
誤差を発見したので。 octaveでも使えば
もしくはラズパイでmathematica ちなみに
(2^((2^(23-1))-1))*(2-(2^-488))
の時点でウルフラム大先生には誤差が出る。
https://ja.wolframalpha.com/input?i=%282%5E%28%282%5E%2823-1%29%29-1%29%29*%282-%282%5E-488%29%29
10^(10^6.101269676953259)
正確には
10^(10^6.101269676953261) これも確認お願いしたい。
log10(log10((2^((2^(115-1))-1))*(2-(2^-4294967180))))
https://ideone.com/jJgRf9
33.79602927803953145109997858464656262695562002580878769896892674125907270351639335872189806561303658
ウルフラム大先生は
(2^((2^(115-1))-1))*(2-(2^-4294967180))
https://ja.wolframalpha.com/input?i=%282%5E%28%282%5E%28115-1%29%29-1%29%29*%282-%282%5E-4294967180%29%29
10^(10^33.79602927803952)
と答えるが・・・。 >>83
mpmathをVSCodeにインストールして計算した結果、問題なかった。
しかしVSCodeでmpmathを使う場合、いちいちコンソールでpythonと入力し、
1行ずつ実行している。
普通にpythonのソースを実行するみたいにできないのでしょうか? >>88
コマンドパレットで
python
っていれてみ
あと使う言語の機能拡張の説明くらいは読んどこ
ぜんぶvscodeの話やけどな >>89
ありがとう。「選択範囲を実行」で実行できるみたいだけどまだ不便だな。 psycopg2とpandasについて質問です。
質問1
下記のコードにて5日前から今日までのデータを取得したいのですが、
エラーが出てしまいます。何か方法を教えてください。
↓エラー
指定した名称と引数の型に合う演算子がありません。
明示的な型キャストが必要かもしれません。
conn = psycopg2.connect('host=localhost port=5432 dbname=situmon user=situmon password=situmon')
c = conn.cursor()
kakuninbi = datetime.date.today()-datetime.timedelta(days=5)
df = pd.read_sql(sql=f'SELECT "date" FROM situmon.situmondb2 WHERE "date">{kakuninbi};', con=conn)
dateに入っているデータは前日とかにdatetime.date.today()で取得した日付を入れてます。
テーブル作成時のコードは下記です。
c.execute(f'''
CREATE TABLE IF NOT EXISTS amazon."amazon_item_info"(
"date" date,
"JAN" text
)
''')
質問2
conn = psycopg2.connect('host=localhost port=5432 dbname=situmon user=situmon password=situmon')
c = conn.cursor()
df = pd.read_sql(sql='SELECT "JAN" FROM situmon.situmondb2 WHERE NOT "JAN">none;', con=conn)
列"none"は存在しません
"JAN"には文字列で13桁の数字か"none"が文字列で入ってます。
何か取得できる方法があれば教えてください。 (一部誤りがあったので修正です)
psycopg2とpandasについて質問です。
質問1
下記のコードにて5日前から今日までのデータを取得したいのですが、
エラーが出てしまいます。何か方法を教えてください。
↓エラー
指定した名称と引数の型に合う演算子がありません。
明示的な型キャストが必要かもしれません。
conn = psycopg2.connect('host=localhost port=5432 dbname=situmon user=situmon password=situmon')
c = conn.cursor()
kakuninbi = datetime.date.today()-datetime.timedelta(days=5)
df = pd.read_sql(sql=f'SELECT "date" FROM situmon.situmondb2 WHERE "date">{kakuninbi};', con=conn)
dateに入っているデータは前日とかにdatetime.date.today()で取得した日付を入れてます。
テーブル作成時のコードは下記です。
c.execute('''
CREATE TABLE IF NOT EXISTS situmon.situmondb2(
"date" date,
"JAN" text
)
''')
質問2
conn = psycopg2.connect('host=localhost port=5432 dbname=situmon user=situmon password=situmon')
c = conn.cursor()
df = pd.read_sql(sql='SELECT "JAN" FROM situmon.situmondb2 WHERE NOT "JAN">none;', con=conn)
列"none"は存在しません
"JAN"には文字列で13桁の数字か"none"が文字列で入ってます。
何か取得できる方法があれば教えてください。 >>92
2つともクウォートの問題っぽいね
SQLをf-stringで組み立てるのはやめてプレースホルダーを使おう
pd.read_sql(sql='SELECT "date" FROM situmondb2 WHERE "date" > %s;', con=conn, params=(kakuninbi,))
pd.read_sql(sql='SELECT "JAN" FROM situmondb2 WHERE NOT "JAN" > %s;', con=conn, params=("none",)) >>88
VSCode の拡張機能・Code Runner で出来ないの?
右クリックメニューから、ファイル全体または選択したコード片を実行できる >>91
エラーの内容も出てるのに、これでもわからないような人はプログラミングはやめた方がいいよ >>93と>>95の対応レベルの違いに鼻水噴いた
エラーメッセージって表面的なことしか指摘してくれないから
それ見て根本原因を見つけるのにはそれなりの経験とスキルが要るのよね なぜ、SELECT "JAN", WHERE NOT "JAN" と、列名を"〜"で囲むの?
囲む必要あるの?
'〜'は、文字列リテラルだけど、
"〜"は、かなりややこしい
>WHERE NOT "JAN">none
これは、WHERE NOT JAN > 'none' でしょ。
つまり、WHERE JAN < 'none' じゃないの?
'none' ではないのは、
WHERE JAN != 'none'
WHERE JAN <> 'none'
本当は、'none' よりも、NULL を使えば良かった
プロは、Ruby on Rails みたいなO/R マッパー・Place Holder を使う。
文字列を連結して使うと、SQL インジェクションされるので超危険 >>98
> なぜ、SELECT "JAN", WHERE NOT "JAN" と、列名を"~"で囲むの?
列名(に限らず表名やビュー名等の識別子)は " " で囲むと空白とかを含む列名を指定できる、あと英字でも大文字小文字を区別するようになる
一昔前は漢字等でも囲む必要があったものもある >>98
囲むのはdateが予約語でJANが大文字だから
JANをダブルクォーテーションで囲まないとpostgresは全部小文字に変換する このスレにも終わったRubyを持ち出すキチガイがいるのか https://www.youtube.com/watch?v=pdy3nh1tn6I&t=2439s
この動画の49:00~辺りで、while loopの最後に return -1 と記述している箇所があります。
return -1 にはどういう意味があるのでしょうか?
動画内で解説がなく、コメント欄に寄せられている質問にも回答が無い状態です。
お教えいただけると幸いです。 >>102
動画見なきゃいけないのか・・・
URLは40分で、問題の箇所は49分とな・・・
しかも動画自体は3時間オーバーか・・・
ソースコードは転記してくれたらいいなぁ
https://ideone.com/oFTFLN
二分探索での結果、見つからなかったを表すために-1を返してるんじゃないかな
英語聞き取れないので違うかもだけど
あとどうでもいいけど、endの意味が途中から変わっててバグってる >>103
回答ありがとうございます。また、お手数かけてすみません。
whileループと return -1 は経験者なら分かる使い方なのかと思ってコードを省略してしまいました。
以後気をつけます。 作者は、正常終了を0 で、異常終了を-1 にしたのかも
よく見かける定義 >>105
なに言ってるんだよw
見つかったらlistの添え字
見つからなかったら-1
せっかく>>103が書き写してくれてるんだからコード見ろよ 任意の数の要素を持つリストをある数で初期化して生成したいんだけど
例えば、[-1, -1, -1, -1,-1]みたいなのを生成しようと思ったら
リスト内包表記で[-1 for i in range(5)]とやるのが一番シンプルかな? 数値にようにimmutableなら [-1] * 5 でもいいのでは >>108
あ、その手があったかマジTHX
てか、リストの演算とか基本だよな。なんでそれ見逃してたんやろ 多次元リスト作る時に問題があるから内包表記を使ってる内に、一次元配列でも使うようになった
とか seleniumで取得したhtmlからlxmlでスクレイピングしているのですが上手くいきません。
下記のような箇所があった場合に送料のみをスクレイピングしたいです。
<div class="_4XOXks36lqAR"><div class="Wc9xhLyHJ7_1 _9u8OtToEB0ql"><p class="_2DVqcNMgVZ15"><span class="_1yF7AMZ2DzcC">550</span><span class="_5apwL7hbOTJ8">円</span><span class="_2QEz7MA1vq6o">+送料550円</span></p></div></div>
<div class="_4XOXks36lqAR"><div class="Wc9xhLyHJ7_1 _9u8OtToEB0ql"><p class="_2DVqcNMgVZ15"><span class="_1yF7AMZ2DzcC">650</span><span class="_5apwL7hbOTJ8">円</span></p></div></div>
<div class="_4XOXks36lqAR"><div class="Wc9xhLyHJ7_1 _9u8OtToEB0ql"><p class="_2DVqcNMgVZ15"><span class="_1yF7AMZ2DzcC">740</span><span class="_5apwL7hbOTJ8">円</span><span class="zmh60VOMQOpy">送料無料</span></p></div></div>
souryou = [souryou.text_content() for souryou in html.cssselect('p._2DVqcNMgVZ15 > span:nth-child(3)')]
今得られる結果
['+送料550円', '送料無料']
欲しい結果
['+送料550円', '送料無料', '送料無料']
送料の記載がない箇所には送料無料を代入して取得したいのですが、
何かいい方法ありませんか? 内包表記せずにループで中身確認しながらリストにappendで追加で良さそう
今は2番目がスキップされてる状態だよね >>112
価格のテキスト全体を取ってそれを加工するとか
kakaku = [p.text_content().strip() for p in html.cssselect('p._2DVqcNMgVZ15')]
# ['550円+送料550円', '650円', '740円送料無料']
souryou = [re.search(r"送料.+", s) for s in kakaku]
souryou = [s.group(0) if s else "送料無料" for s in souryou]
# ['送料550円', '送料無料', '送料無料']
あらかじめ「送料無料」のSPAN要素を追加しておくとか
for p in html.cssselect('p._2DVqcNMgVZ15'):
lxml.etree.SubElement(p, "span").text = "送料無料"
souryou = [souryou.text_content() for souryou in html.cssselect('p._2DVqcNMgVZ15 > span:nth-child(3)')]
# ['+送料550円', '送料無料', '送料無料'] >>115
これが1番良さそうかも
ちょっとやってみます asyncio.Task使ってます
Task側でキャンセルされたか判断したいのですが
cancel()を呼んでもcancelled()はTrueにはなりません。
asyncio.sleepを呼んでいるとCancelledErrorが発生するのでこれで判断するってことでんでしょうか >>117
3.6以前のマニュアルだとコードサンプルがない代わりに補足されているけど
> このメソッドが呼び出された直後は cancelled() は True を返しません (タスクがすでにキャンセル済みの場合は除く)。
> ラップされたコルーチンが CancelledError で中止されたとき、タスクは (cancel() が呼ばれなかった場合でも) キャンセル済みとマークされます。
つまる所cancel()はするというか要求なので、対象のタスクに制御が移らないと反映されない
Taskの側でcancelされたか判断するならawaitしてる箇所でCancelledErrorの捕捉だろう
外側でもcancel()後は何かしらawaitする、対象のtaskをawaitした場合はCancelledErrorが発生する
協調的マルチタスクなので何れにしても譲り合いの精神 listA = "AAABBBCCC","DDDEEEFFF"
こういうリストからそれぞれを最初の3文字だけ取る場合っていちいち
listA[0][:3]
listA[1][:3]
ってやらないとだめなの? つまりfor文内でやるかんじ?
一括でできる方法あるの? >>120
> listA = "AAABBBCCC","DDDEEEFFF"
リストじゃなくてタプル
https://ideone.com/4PpCrp
高階関数とか内包表記使える プログラミングが長い為ここには書けませんでした。
7.gigafile.nu/1029-d987ca4deb3deafdb0df9198c08c32e58
上記のワードで書かれてますが
引用はコチラ。
rapids-ai/200-000x-faster-in-the-field-of-weather-analysis-with-cuda-python-numba-6ca03a694294
どうしてもエラーがでてしまいます。
お願いします。偉い人! 特定のサイトからデータを取得していたのですが、urlに()が入りました。
%28,%29 でエンコードしてもアクセスできません。何か方法はありますでしょうか。
http://a.com/(d(aaaa))/bbbbb
のようなurlです。
よろしくお願いします。 どうやってアクセスしてるのかわからんけど
URLのエンコードなんて大概透過的に行われるので出来ないのは他の原因 CUDA Python (Numba) を使用して気象分析の分野で 200,000 倍高速化する
medium.com/rapids-ai/200-000x-faster-in-the-field-of-weather-analysis-with-cuda-python-numba-6ca03a694294
cudaのやり方がわかりません。
この20万倍の高速化をやりたい! >>126
めちゃ簡単そうじゃん、今度やってみよ。
具体的にどこがわからないの?
CUDAカーネル書かなきゃいけないんだったら理解できないってのもわかるけど。 >>125
ありがとうございます。
括弧の部分を %28b%28bbbb%29%29 とエンコードしてみたのですが駄目でした。
subprocess.Popen([http://a.com/%28b%28bbbb%29%29]/)
サイトの開き方に問題があるもでしょうか? 自分が書いたコードを、社会人の友人に批評してもらったら、
グローバル変数はあまり使わない方がいい(衝突する可能性があるから)
処理をぐるっとdefで囲んだ方がいい
と指摘されたんですが、クラスなどの定義部分も含めて全て囲った方が
いいでしょうか? >>130
レスありがとうございます
どんな感じで書くのがよいでしょうか? よく知らんけど関数とクラスの集まりにして
トップレベルではmain()一発にすればいいんじゃない >>129
一人で趣味で書いてるんでしょ?
なら気にしなくてよい
自分の経験上、一人で書くコードで変数の衝突はあり得ない
自然と衝突しない名前を付けるものよ pythonでbluetooth通信を使おうとしたら、pybluezっていうライブラリが必要みたいなんだけど、GPLライセンスなので気軽に使えない...
Web Bluetooth APIってやつをpythonから呼び出す方法とかって無いですか? もちろん無い
言語さえPythonならいいんだったらPyScript使ってブラウザで動かせばWeb Bluetooth使えるだろうけど、
ブラウザで動かす時点で当然JavaScriptの知識は必須だから諦めて普通にJavaScript書いたほうが遥かに簡単で手っ取り早いよ 以下の4点を使わずに、PCとIoT機器で通信する縛りゲーがあったとしたら、どんな通信方法があると思いますか?
・クラウド
・Bluetooth
・Wi-Fiによるローカルネットワーク接続
・有線ケーブル >>132
ありがとうございます
メインの処理を大きな関数にして、その前にクラスや関数を宣言しておくって
表記法は良くないですか?
>>133
ありがとうございます
今は確かに趣味レベルですが、後々仕事にしたいと思ってます
なので今から本来の記述法を知っておきたいなと思いました そもそも、Pythonに真の意味でのグローバル変数は存在せず、衝突が問題になることはチーム開発でもまずない。
トップレベル(何にも囲まれていないという意味)で宣言された変数はモジュール変数といって、
そのファイル(モジュール)の外からアクセスする際には明示的にインポートするか、モジュール名で修飾する必要がある。
実際の開発ではプログラムを多数のモジュールに分割して作っていくため、衝突は心配しなくてよい。
でトップレベルの変数の問題は衝突よりも状態が共有されてしまうことにあって、その辺はPython云々というよりオブジェクト指向の基本を学んできたほうがいい。 グローバル変数用のモジュール作ってg.でインポートすると便利 >>138-139
レスありがとうございます
参考にさせて頂きます >>136
テレビのリモコンみたいな光通信とか、
任天堂みたいな赤外線リモコンとか
テレビのリモコンを作る記事は多い >>142
お店のチェックインとか近接通信を音でやってた
なぜか最近みかけない wifiやbtが発達してなかったころのガジェットは、PCとの通信は赤外線か音だったね。電波法に違反しない程度の微弱電波なんかも無線の設計が出来ればありかもねw sqlite3モジュール関連のexecuteメソッドで、SQLのUPDATE文を実行したら
警告が出てしまったのですが、これは使わない方がいいでしょうか? 1666882287427 -> "1番目"
1666882316853 -> "に番目"
1666882538457 -> "参番目"
1666882566231 -> "ヨン番目"
1666882574322 -> "V番目"
1666882595860 -> "6番目"
上のような連想配列から
1666882550000以下の物を降順で2つ取得 → "参番目" と "に番目"
このようなプログラム記述の方法を教えて下さい
デクリメントで総当りは負荷が高そうなのでNGです 標準ライブラリにはないですが平衡二分探索木を使ってください keysをリストで取り出してnumpyに突っ込んでargsortして降順に2個インデックスを取り出して辞書にリスト[インデックス]でアクセスとか >>149
bisectモジュールってし標準に入ってなかったっけ? >>147
うーん、分かりました
ありがとうございます >>149
探索木だと降順って指定ができず近似値を持ってきてしまいませんか?
>>150
0 -> 1666882287427 -> "1番目"
1 -> 1666882316853 -> "に番目"
2 -> 1666882538457 -> "参番目"
3 -> 1666882566231 -> "ヨン番目"
4 -> 1666882574322 -> "V番目"
5 -> 1666882595860 -> "6番目"
知らない言葉ばかりだったんですけど要はこういう事ですかね?
これなら総当りでも負荷少なそうなのでやってみます! >>153
なんて警告されてるのか書けばもっとアドバイスもらえると思うよ 暇だから書いてみた
https://ideone.com/VnKPbs
負荷はどんなものか分からない
argsortじゃなくてsortが簡単だった フィルタして、ソートして、スライスして、、、
って、コレじゃダメなんだろうか
result = sorted(filter(lambda x: x[0] <= 1666882550000, data.items()), key=lambda x: x[0], reverse=True)[:2]
print(result)
# [(1666882538457, '参番目'), (1666882316853, 'に番目')] >>155
レスありがとうございます
それが、さっき実行してみたらなぜか警告は出ず普通に出来てしまったんです
理由はよく分かりません
確か、「非推奨の機能であり、ver3.12で削除される」等と書かれていたような
気はしますが
一応そのコードを貼らせて頂くので、よろしければ読んで頂けると助かります
https://pastebin.com/s0rBifE7 (コード内のID・パスワードはサンプルです) >>158
3.12で削除はsqlite3.OptimizedUnicodeだから
どこかに
con.text_factory = sqlite3.OptimizedUnicode
みたいの書いてあったんじゃない? >>159
ありがとうございます
うーん、コードは上に貼ったもので全てですね…
「Python完全入門」という本に載っていたものをそのまま写して実行しました
まあ今警告が出ないなら何かの間違いだったのかな、という気もしますが 辞書型のキーですけど改行(\n)を含む文字列ではキーが見つからないKey Errorになりますが\nをシングルクオートに置き換えると見つかります。
これって仕様書に書いてありますでしょうか? よーわからんからコードで書いてみて
>>> {"key": 2, "ke\ny": 3}["ke\ny"]
3 改行コードだけを挿入したつもりがキャリッジリターンも含まれてたんじゃないの 何度もすいません、クロムの検索候補に履歴が残ってたので貼ります
deprecationwarning: the distutils package is deprecated and slated for removal
in python 3.12. use setuptools or check pep 632 for potential alternatives
という内容です
よろしければ、アドバイスをお願いします 俺は親切だからGoogle翻訳にかけてやったぞ
非推奨警告: distutils パッケージは推奨されておらず、削除される予定です Python 3.12で。セットアップツールを使用するか、PEP 632で代替案を確認してください >>166
すいません、英語よく分からないんです
>>167
本当に親切な方ですね!
ありがとうございます FlaskでつくったwebアプリをWin10 homeで動かそうとしています
pc起動時に立ち上げたいのですがどういう方法がありますか?
サービス?とか言うのに登録することになるんですか? localhostで自分が使うだけだろ?そんなもんスタートアップにショートカット作っときゃ十分
Webサーバーとしてまともに運用するならnginxとか使うことになるけど、その場合普通はLinuxだからWindowsで変に頑張んなくていいよ。時間の無駄。 >>170
>localhostで自分が使うだけだろ?
そうです
>そんなもんスタートアップにショートカット作っときゃ十分
そうなんですけど、start, stop, restartがやりやすいといいなって >>174
>start, stop, restartがやりやすいと良いな
これらをそれぞれ、ショートカットに出来ないの?
こういうプログラムを、Ruby, PowerShell, VBS などで書いて、
ショートカットで起動すれば? >>177
あまり荒らしたくないですけど、
馬鹿って言い回しは失礼だと思います >>174
伝統と信頼のApacheでいいんじゃない
いずれLinuxへ移行する予定があるとか本職になるための勉強をしてるとかならnginxをサイドカーとしてDocker Desktopで常駐させるのもアリだと思うけど、
日常的にDockerを使うのでなければDocker Desktopを常時立ち上げるのはPCがだいぶ重くなるよ >>180
これだけの情報で馬鹿って決めつける奴の人間性も大概だと思うぞ
口の利き方に気を付けた方がいいよあんたは 関西人にとって馬鹿は人権侵害に匹敵する最大級の侮辱言葉です。
僕は関西人なので、アホと罵ってください 仮想環境を任意の場所に作成できません
envs_dirsには
a(%LocalAppData% )
b
c
と三つの環境ディレクトリリストが登録されておりbのディレクトリに環境を作りたい
condarcもCONDA_ENVS_PATHも試して確かに設定すれば上記リストのトップに
bは来るのだがいざ環境を作ろうとするとどうしてもaディレクトリに作成されてしまいす >>182
馬鹿って言われたら誰だって普通怒るだろ
>>184
煽るなよ >>187
馬鹿と言われて当然のことを書いてるだろ
そんなこともわからんから馬鹿だっての >>187
怒るのは馬鹿な人の特徴でしょ
馬鹿でない人は自分の書き込みが馬鹿過ぎたと思うよ 馬鹿って言われてもスルーするだろ
怒ったら馬鹿っぽいし、万が一自分が本当に間違っていたときにかなり恥ずかしい思いをする
逆に100%自分が間違いないと確信しているときは、馬鹿って言ってる奴の方が馬鹿なんだから、わざわざ相手のレベルまで降りて感情的になる必要ない、論理的に追い詰めればいいんだよ
だから、自分からは言わない、相手が言ってきても「馬鹿」の部分はスルーする、言ってることがおかしければ問い詰める、が安牌でしょ
そもそも自分も相手も匿名なんだぞ、人前で恥かかされたらともかくこんな匿名空間でいちいち言葉尻で不快感を覚えてたら精神エネルギーの無駄だろ >>188
お前の中での馬鹿の定義を知らんけど、少なくとも俺は常識的に馬鹿呼ばわりされる
書き込みはしていない
>>189
そうかなあ
>>190
まあそれは一理あると思うけど、じゃあ基本的に悪口はスルー耐性つけとくしかない
ってこと? こんだけ長々と御託並べてるのに要約すると「バカって言うやつがバカなんだバーカ!!!」でしかないの草 >sqlite3モジュール関連のexecuteメソッドで、SQLのUPDATE文を実行したら
警告が出てしまったのですが、これは使わない方がいいでしょうか?
この後、
>すいません、英語よく分からないんです
までのやり取りを読むと俺も、この馬鹿、と思ったよ。馬鹿と書かれる理由が存在すると思う。 >>186
漏れは、Windows 10, WSL2, Ubuntu 18.04 に、
日本人が作った、多言語バージョンマネージャーのanyenv で、
ruby, node.js を入れているけど、
例えば、rbenv なら、
全てのディレクトリに適用される、グローバルなバージョンを設定する。global
rbenv global 3.0.1
カレントディレクトリ以下のバージョンを設定する。local
rbenv local 2.7.3
同様のツールに、asdf もある >>191
悪口にはスルー耐性つけとくしかない、その通りだよ。
大体論理的に説得できないから悪口でマウント取ろうとしてるんだと思えば相手が小物に見えるでしょ
もちろん単に性格がクソなだけで内容はちゃんとしたこと言ってる人もいると思うけど
ぶっちゃけ性格が可哀想な人は人生損してるだろうと思って生暖かい目でみた方がいいよ >>192
草なんか生えねーよ
>>193
100歩譲ってそうだとしても、荒れる原因になる書き込みはするな、と思う
>>195
うーん、参考にはしたいけど、俺あまり忍耐力ないからな
助言はありがたいけど お前のような真正の馬鹿が反応するから荒れるだけだぞ >>196
怒りに対する忍耐力ないと自覚したなら理性で感情をコントロールできるようにした方がいいぞ。格闘家とかじゃなければ。
アンガーマネジメントってやつ。
怒りを感じたらなぜ怒ったのかをどんどん要素分解していくんだ。
あいつが○○したからムカついた、では、なぜ〇〇されるとムカつくのか、それは☆☆だから、ではなぜ☆☆されるとムカつくのか?ってのをどんどん単純な理由に落としていって、
それが自分の命や社会生活に関わることだったり、思想信条宗教に反することだったら仕方ないが、そうでなければどこかを回避して腹が立たないように生きた方が楽だし生産的だもの。 >>197
煽る奴も荒らしと同じだぞ
>>198
努力はしてみる
ありがとう >>187
怒るってことは薄々自分でも気付いてるんだろな 同じ名前を持つデータを見つけるたびに削除するスクリプトが必要なんですけど
for loopで全データにアクセスし、アクセスしたデータの名前をlistに保存していき
そのlistにある名前と同じ名前をもったデータにアクセスしたらそのデータを削除するというのを考えたんですけど
もっと効率良い方法あったりしますかね listの探索はコストが高いからsetにする
元データに対して直接検索できるのか不明だからそれ以上はいえん dictで良さそう
inでキーが存在したら削除とか上書きとか ええー、setに突っ込むだけでしょ
set(names)でok 直接検索できないのでデータを総当りしないとダメなんですわ
今までsetとlistしかいじったことないんですがスクリプトにするとこんな感じですかね?
names = set()
for i in active_object.data
if i.name in names:
active_object.data.remove
else:
names.add(i.name) 名前のセットを作ってリストの最初の見つけるとか?
names = set(a.name for a in before)
after = [next(a for a in before if a.name == n) for n in names] >>209
毎回頭から探すのでリストが長かったり並びに偏りがあると遅くなると思うけど。その場合はソートして検索かけたほうがはやいかもね >>209
これはnext関数で重複要素を呼び出した時点でbefore内のデータを消してるってことですかね?
next関数で呼び出したデータをlistのafterに格納するのはなんででしょうか
削除したデータをあとから参照するとかでしょうか >>208
イテレーションしながら削除するとバグるから
新しいリストを生成したほうがいいよ
あと単純に名前だけじゃないなら
重複があった場合の名前以外の値の扱いを仕様として明確にしておいたほうがいい >>211
before はまったく書き換えずに新しく重複のないafter を作っています
before の更新をしたいなら /after/before/ と置き換えればよいです
next は a.name がnである最初のa をbefore からとってきます python には
sort | uniq
みたいに簡単に書けるのはないんだっけ? フローチャートについてなんですが、
for文に対応するelse文ってフローチャートではどう表現すればいいでしょうか? >>212
>>213
わかりました
レスしてくれた人ありがとうございました >>214
sorted_cars = sorted(set(cars)) >>215
表現できない
普通にモノ作る分にはフローチャートなんて全く必要ないから、くだらないことは気にしなくていい
学校の課題などでコードと一緒にフローチャートを提出する必要があるのなら、フローチャートで表現できない機能はそもそも使うべきではない >>215
特に無いから条件分岐で適当に書くしかない forループやwhileループのelse句は
悪名高いbad partsなので使っちゃダメ
early returnで書き換える あるものは使っても別に良くね?
いろんな書き方ができるのがPythonのいいとこだと思ってる 配列Aの要素が0,-1のみの時True返すそれ以外False
同じく配列Aが0,-1,1のみの時True返すそれ以外False
という2つの処理をしたいです 条件から考えて2つが同じ結果になることは起こりえません。
all(x==0 or x==-1 for x in list)
all(x==0 or x==-1 or x==1 for x in list)
だとどっちもTrueになりうるのですがどうしたらいいですか? 昔それでperlが無茶苦茶になってな
配布するか自分だけで使うかとかでスタイル決めた方がベター >>222
そんなのAの中身によるでしょ
あとlistは組み込み関数なんですけど >>222
「配列Aの要素が0,-1のみの時」の意味がそのコードのように
「配列Aのすべての要素が0もしくは-1」という意味なら2つの結果が同じになる場合はあるよね >>222
> 条件から考えて2つが同じ結果になることは起こりえません。
まずこれがホントに正しいかを考えなよ... 「0,-1,1のみ」とは全て揃っている必要があるのかどうか いらん補足かもしれんが引数にチョクで内包表記書いたときはジェネレーター内包表記として扱われる お礼が遅くなってすいません
回答してくれた方々ありがとうございます
>>218
そうなんですか
じゃあコードの設計図ってどうしてますか?
>>220
なぜbad partsなんですか? >>232
作る上で「必要なものを」「適切な抽象度で」記述する
SI業界で大量生産されているような外部設計書だの内部設計書だのというのはそれ自体を成果物として客から金を取っているから作っているのであって、システムを作る上で本当に必要なものはその極一部にすぎない
お前一人で作ってるならたぶん設計書なんか必要無いだろうし、チーム開発でもコード見りゃわかるようなことは書かなくていい
フローチャートについて言えば、一般に、フローチャートはPythonのコードよりも抽象度が低いため、設計書としては全く意味をなさない
そもそも>>215の質問をしている時点で、既にお前はフローチャートの前にPythonコードを先に想定しているんだろう?だったらお前にとって作る上で明らかに不要だろう >>222
数学の集合の基礎を勉強しなおすべきかも
あと、set使って書いた方が少なくともその処理は楽ちん >>233
長文レスありがとうございます
うーん、じゃあフローチャートの存在意義って何なんだろう
確かに俺はいきなりコードを書いてますが、それは独習or趣味レベルだから
それでも許されるのであって、仕事となると基本情報技術者試験で出てくるような
アクティビティ図だとかユースケース図だとかシーケンス図だとかが必要になる
んですよね?
いきなりコードの記述をしたら、行き当たりばったりになってクォリティも低くなり
可読性も下がりバグの入る可能性も高くなるみたいですし… >>235
フローチャートはわかんなくていいと思う。
コンピュータでプログラムを動かすのにハンドアセンブルして、パンチャーに打ってもらって、実際動かすまで何日もかかったような時代の、50年前からある遺物みたいなもん。
プログラム何も知らない人でもあの図のルールは単純だからなんとなく教育しやすいからか生き残ってるけど、
基本あんな簡単な図で表現できるコードの範囲が狭すぎる。
状態遷移図とかデータフロー図とか、UMLでもややこしい時に役に立つ図はあると思うけどね。 >>235
フローチャートはもっとハイレベルのフローを図示するためのもの
業務フローだったり料金プランを選ぶフローチャートだったり tkinterで家計簿作ろうとしてるんだけど公式ドキュメントとかのサンプルみると最後のmainloop以外ぜんぶclass App():にいれてるんだけどマネしたほうがいいの? ウィジェットはクラス化すると使い回すのが楽になるね
タイトル、エディット、ボタンをセットにしたやつとか便利
evalとexecを使って変数と自動同期するフレームワーク作ったわ すいません、レスが遅くなりました
返答ありがとうございます
>>236
では良いものを作りたいと思ったら、UMLの書き方に習熟した方がいいってことですね
>>237
そうなんですね、分かりました >>241
UMLも全部実用的ってわけじゃないし、システム関係の図を標準化したってだけだから、
まずは、やりたいことが書いてありそうな今の自分にとってちょっと難しめのコンピュータサイエンス寄りのアルゴリズムの本などで勉強することからでいいと思う
UMLは、自分で考えたものを標準的に綺麗に整理したくなってからで十分。
むしろユースケースが体感としてないのにUMLを勉強したからといって設計ができるようになるわけじゃないからね。 試してはない
import subprocess
subprocess.run(["wmic", "path", "win32_VideoController", "get", "name"]) >>245
完璧に動きました!ありがとうございます! pythonを独学で勉強している非エンジニアの初心者です。環境構築(?)に関してご相談させて下さい。
手元のメインパソコン(windows10 home)でpythonの開発環境を色々触ると、
アップデートやら何やらで動かなくなるものが出てきたりして苦戦しております。
そこで、年内にパソコンを買い換え際にwindows11 proに移行し、hyper-vという仮想環境を使って、
「常時安定稼働させたい環境」「色々試行錯誤する環境」「ひたすら計算させる環境」みたいに切り分けて使うのはどうかと検討しています。
そのような用途でhyper-vを使うのは妥当なのでしょうか?
あるいは、そんなことしないでdockerとかanacondaで何とかするのが普通なのでしょうか? Pythonのバージョンやモジュールの使い分けだけなら
pyenv + venv/Poetry
でOK
個別のLinuxやWindows環境がほしいなら
DockerやHyper-Vになるけどその分ケアすることが増える >>247
>手元のメインパソコン(windows10 home)でpythonの開発環境を色々触ると、
>アップデートやら何やらで動かなくなるものが出てきたりして苦戦しております。
この時点で何かがおかしいので、Win以外の環境にデプロイしたいわけでもないのにhyper-vやdocker使っても苦労が増えるだけだと思います
そのままWindowsで動かしたいものを作るなら、anacondaとか使わずに公式のインストーラとvenvで環境構築する方が絶対楽です
エディタもVScodeとかPyCharmとかありますし
演算子と制御構文まである程度理解したけどそこから先なにかアプリをつくることができる未来が見えない。誰か意見や見解を述べられる人いますか >>250
料理道具を揃えても、料理が作れるようになるわけではない
プログラミング言語を学んでも、アプリを作れるようになるわけではない
大事なことは動機
料理を作ると子供たちが喜ぶとか、
アプリを作ると仕事がめっちゃ楽になるとか金が入るとか、そういう動機が要る >>250
↑のが奴いう動機が原因でなければ、APIを知らんからだろうな
料理でいえば野菜の切り方や火の扱い方を知っていても
フライパンや鍋び使い方を知らなきゃ料理はできないだろ
初心者がGUIを作るとしたら何のモジュールがいいんだ?
TKinterみたいなのより、マルチプラットフォームなKivyのがよかったりするんだろうか? >>254
HTML一択だよ
デスクトップアプリをPythonで作ることはないから、苦労するだけ時間の無駄 >>255
なるほど
最近はPyScriptなんてものまであるんだな 知識には内側と外側の2種類のベクトルがある
前者は構造、仕組み、言語などを司る左脳の役割
後者は関連、論理、創造を司る右脳の役割
仕組みを学んだのなら、次は無限に広がる創作の世界を学ばなければいけない >>254
コマンドラインアプリに設定値をいじる皮を被せたい程度ならtkinterがおすすめ、管理も配布も楽、ただしモッサリ、リサイズはガックガク
wxPythonはバランスいいけどtkinterの手軽さはなくお客さんに見せられるほどカッコ良くもないという微妙な立ち位置、工場とかで使うアプリならありかな
PyQt/PySideは製品レベルの見た目にできるけど環境構築も維持もデプロイも面倒すぎ、GUIを作りやすい言語で皮作って裏でPython呼ぶ方が後々楽
PyGameはカンバス的なものがメインなら意外と業務用でも使える、ただしイベント駆動のウィジェットがないのでDOS時代のような作り方になる
Kivyはよくわからない、何度かやろうとしたけど寿命短そうでやる気が出なかった…
個人的にはGUIをReact/Vueで作って裏でflaskを走らせるみたいなのが多いかな、ただPythonである必要がないときは裏はgoにしてる >>247
漏れは、Windows 10, WSL2, Ubuntu 18.04, VSCode, Docker Desktop で、Ruby on Rails をやっている。
Linux の端末でもコピペできる、Windows Terminal も良い
VSCodeの拡張機能・Remote Development に、
3つの拡張機能・Remote Container/WSL/SSH が含まれている
Docker Desktop には、Docker, Kubernetes が含まれている
WSL2 のHyper-V で、シームレスにLinux を使える。
これは、Windows 10 Home でも使える
ただし、メモリは最低でも、16GB は欲しい。
32〜64GB以上が推奨
漏れは日本人が作った、多言語バージョンマネージャーのanyenv で、
ruby, node.js を入れているけど、同様のツールに、asdf もある。
anyenvでは、nodenv, pyenv, rbenv などを使う
他には、Dockerを使う
ただし、LinuxはRailsなどのプロのウェブ開発者用。
普通の香具師は、Linuxを使えない >>257>>260
レスありがとう
ぱっと調べた感じだと
wxPython/PyQt/PySide/Kivyあたりはデザイツールあるみたいだから
ある意味こっちのが初心者向けなのかね >>247
Anacondaや類似のオールインワン環境は、インストール時にcのコンパイルが必要だったりして面倒なパッケージを誰かの自家ビルドを借りてきて手っ取り早く動かすためのものなのよ。pipとcondaを混用するとパッケージ管理もめちゃくちゃになるのでセキュリティや一貫した開発環境がほしいときには入れない方がいい。
初心者向けの書籍でAnacondaを勧めているものがあるけど、とんでもない話だと思う。 >>263
なるほど
ちょっと調べたらいっぱい出てきたわ
ずいぶん前から日本語入力に問題あるんだな >>254
Python - nimpy - wNim
みたいな組み合わせも有り >>248-264
ありがとうございます。参考にさせていただきます。 日本の偉人たちは朝鮮人について警鐘を鳴らしてきた
夏目漱石
「朝鮮人に生まれなくて良かった」
伊藤博文
「嘘つき朝鮮人とは関わるな」
吉田松陰
「朝鮮人の意識改革は不可能」
福沢諭吉
「救いようのない民族」
本田宗一郎
「韓国人と関わるな」
ちなみに本田宗一郎はバイク工場を
丸ごと韓国メーカーに取られて
激オコしていた。 外部のプログラムによって毎秒数十回更新されるテキストファイルからテキストの内容を取得する場合、以下の方法で問題ないですか?
以下のコードで外部のプログラムをブロックしてしまったり、パフォーマンスが悪かったりしたら嫌なので知りたいです。
f = open('myfile.txt', 'r')
datalist = f.readlines()
for data in datalist:
print(data)
f.close() 問題ないですかじゃねーよ他スレでやって前回の質問でかまわないって回答もらってんだろ
さっさと試して納得したらクソして寝ろ >>272
そもそもファイルをそんな用途に使ってはダメ
複数のアプリから頻繁にアクセスされるようなデータは
DBに格納してDBMSの排他制御機能を使うべき >>274
1行程度400文字以内の短いデータを上書き保存するだけなのですが、DB使った方が良いんでしょうか?
以前PostgreSQLを使ったことが一度だけあったのですが使うの大変だった記憶があるのでなるべく使いたくないという嫌悪感があります。
pythonとc++間で簡単に値渡しできるデータベースみたいなものってあるんでしょうか >>272
それじゃダメだよw
Python同士で試せばすぐ分かることだから
まずやってから問題が出たらその問題を解消するための質問をしてね >>275
両プログラムを同時に起動できるならパイプ
個別に起動するなら名前付きパイプ
Unix前提ならドメインソケットでも
古典的だけどサーバやミドルウェア不要 毎秒数十回の書き込みとかSSDがすぐ死にそう
自分がやるならFlaskとか入れてweb通信で渡すかな Ruby on Rails で使う、3大RDB は、PostgreSQL, MySQL, SQLite で、
開発環境では、SQLiteも使うけど、本番環境ではPostgreSQL一択
AWS でキャッシュとして使うDB では、Redis 一択 ファイルI/Oって即座に完了する保証ないから
いつか書き込みモードでのオープンに失敗して破綻しそう ウソや意味が通らんことをもっともらしく書く文才に嫉妬 アーキテクチャがエクストリーム過ぎて大半のやつが経験したことないやり方だから問題ないですか?とか聞いても無駄だよ
30分もあれば試せる内容なんだから自分で試さないと あくまでファイルでやりたいなら
アトミックなrename(mv)挟めば成立はしそう そんなもん必要なわけねーだろーよ
read()/write()とディスクIOの間の機構知ってんだろ? この手のIPCでパイプ・ファイル・シグナル・ソケット使うのは大昔からいくらでもケースあんだろうが
どれ使ったところでパフォーマンスも使い勝手も似たようなもんなんだから使いたいもん使っていいよ
ブロックだのなんだの起きねーから気にすんな
>>274,278,282,286,287はファイルシステムの読み書きと物理的な読み書きの区別がついてないアホだから無視していいよ ファイルの書き込みの排他制御は
OSが責任をもってくれるんじゃないの? 今だったらZeroMQあたりが今風でいい感じのIPCに使えるんじゃないの。
こないだ使ったけど便利だったよ 今時はgRPCじゃない?
MQは文字通りMQが必要なときに使うもので、同期的な通信で済む用途なら制御が面倒臭いだけだよ >>291
やってくれないよ
ファイルを普通に上書きしてれば一旦truncate入るから読む方は空のファイルを読んだりもする >>290
>どれ使ったところでパフォーマンスも使い勝手も似たようなもんなんだから使いたいもん使っていいよ
全然違うがなw 昔cgiで掲示板やwikiを作るのが流行った頃の話題に似てるけど、この手話ってあの頃から進化してないの?
当時の結論はrename(=アトミックな処理)を使うだったよ。 現代的な解法を求めるならクラウドでDynamoDBでも使えば済む話
それを拒否しているのは質問者 ローカルの話なのにいきなりDynamo使えとか言われてもなwww >>293
なるほど、確かに同期的処理は手間があるかも。
ただ今回の場合はファイル更新に必ず1対1対応しなくてもいい(最後のだけみる)のかなって思ったから非同期でいいのかなと。
といいつつgRPC使ったことないんで使ってみます。
>>296
ファイルしか方法がない場合は今でもrenameだと思うけど(ブラウザのダウンロード機能とかもそんな感じ)、本当にファイルしか方法がないのか?って話だよね。
ファイルを使うのは筋が悪いからやめようという意味では進歩しているのでは。 Amazon Simple Queue Service (SQS) は、2006年からある最古のサービス
処理A → 処理B
処理A → キュー → 処理B
キューを挟むと、各処理を疎結合にできる
他には、コマ落ち(処理落ち)を許すかどうかとか。
例えば、20ms 毎の処理が、時間内に終わらなかった場合に、どうするかとか このWeb脳なんなん
キューイングなんてAWSどころかAmazon設立前から存在してる このルビ糞は論外だが、Pythonエンジニア(自称)には基盤技術に対する関心とスキルが絶望的に不足している奴が多い印象だわ
まともに運用できないゴミを垂れ流すだけで何一つ実にならない
まあPoC案件ばかりやってりゃそうなるのも仕方ないが、景気後退局面&AI幻滅期に突入した今となっては、
そういうPoCエンジニア()みたいなのは今後急速に淘汰されてくんだろうね >>272はログファイルを tail -f するようなありふれた処理に思えるが。
ファイルじゃ無理って何を言ってるんだろう。 tail -fの出力をパイプで受けるならわかるが
tail -fの泥臭い実装がありふれてる界隈って珍しい
ログ集約ツールの一部でしょうがなくやるような >>304
appendじゃなくoverwriteらしいなのでtail -fのようにありふれた処理じゃないんだわ
それにファイル以外のやり方をすすめてる人はいるけどファイルじゃ無理とは誰も言ってなくね? ていうか業務システムの開発の話なら
こんなところで相談している時点でやばいんだよな
まともな開発体制がなくて一人でやってるってことだから >>272
>外部のプログラムによって毎秒数十回更新されるテキストファイルからテキストの内容を取得する場合
appendなのかoverwriteなのか最初に言わなかった272が悪い Amazon SQS なら、先入れ先出し (FIFO) キューで、正しい順序で出力される。
マイクロサービスを疎結合
処理A → キュー → 処理B
非同期で、処理Aはキューに投入すると同時に、クライアントへ返答する。
それとは別に、処理Bはキューから、メッセージを取り出して処理する
ローカルPC のDocker で、Memcached, Redis でやってみれば? >>310
同じIDで>>275に書いてるよ
ちゃんと読まなかった君が悪い 俺だったらそんなにパフォーマンスが欲しいなら共有メモリか名前付きパイプに書くわ KENYAや
うby厨がうざいとは思っていたが
ついにかよちん厨まで発生 こんにちは。
発売される本の情報を調べるプログラムを作成しています。
サイトから本の情報をダウンロードすると、 '行政法論議の諸相\u3000\u3000行政法研究\u3000第9巻' のように文字列の中に
unicodeエスケープ が含まれているデータがダウンロードできます。 この\u3000 を全角スペースに変換して
'行政法論議の諸相 行政法研究 第9巻' にしたいのですが、単純に replaceメソッドでやれば良いのか、他にエスケープにも対応できるスマートな
方法があるのか調べているのですが結論がまだ出ていません。
よい方法があればヒントをいただけると助かります。 こんなかんじで
ret = re.sub(\r'\\u(\x+)', lambda x: xを加工して置換後の文字列を返却, str) 肝心の変換部分がないやんw
re.sub(r"\\u\d+", lambda x: x.group(0).encode().decode("unicode-escape"), s) >>317
ありがとうございます。
参考になります。
正規表現はさっぱり・・・なので これを機会に勉強します。
>>318
うぉぉ!いけました。
ありがとうございましたぁぁ!
完全に謎の呪文にしか見えませんが、がんばって理解したいと思います。 簡単なツールを作っています
ユーザーによって変えさせたい変数(パスなど)をファイル先頭にまとめてグローバル変数にしてるんですが、グローバル変数を使うのってあんまりよくないんでしょうか?
ローカル変数にすると変数をまとめられないので使いにくくなってしまいます
何かうまい方法があったら教えてください >>320
ユーザーによって変えさせたい値はソースに書かない
コマンドライン引数や環境変数や設定ファイルに書く >>316
Ruby では単に、受け取ったJSON 文字列を、JSON.parse/load するだけで、
Unicode エスケープシーケンスが、unescape される
require 'json'
json_str = '["諸相\u3000\u3000行政法研究\u3000第"]'
p JSON.parse( json_str )
p JSON.load( json_str )
出力。どちらも同じ
["諸相 行政法研究 第"]
["諸相 行政法研究 第"] >>321
>>322
なるほど、ありがとうございます
今回はこのままいこうと思います
ちなみにですが、関数内でグローバル変数を使う場合って直接使っていいんですよね?
関数に引数で渡したらおかしいでしょうか? >>324
モジュール変数にしたら区別しやすい
config.pyにparam1を定義して
import config as cfgでインポート
使うときはcfg.param1でアクセス
そうしたら、いちいちglobal宣言する必要もないし、引数で渡す必要もない
何よりグローバル変更であることが一目で分かるの良い
VSCodeならインテリセンスも効くしね
自分はg.で使ってる >>316
変換する必要ないでしょ?
Python2? >>325
すごい!こういうやり方もあるんですね
もしかしてiniファイルもiniファイル取り込み用のモジュールを作って、モジュール変数として使うといいんでしょうか?
というか、単にモジュール変数用のモジュールを用意する場合とiniファイルを使う場合ってどう使い分ければいいんでしょうか? config.pyにするかiniにするかではないけど、パッケージの一部にするか設定ファイルにするかは、git等のVCSの管理下に置くかどうかでわけてる
pullやcheckoutした時に上書きされるかされないか すいません、
リストの要素を全部合計したいのですが
sum_size = ['0.01', '0.01']
こういうリストの場合
数字が文字列になってるので、
sum(size)でやるとエラーになってしまいます、
うまく数字として合計する方法ないでしょうか? なんとかできた、
sum_size = sum([float(i) for i in size])
一回文字列をほかの型に変換してからたしてみた。 >>330
floatの計算は誤差が出るのでroundとかしないといけないような?
自分も初心者なのでベテランの方教えてください >>331
>>332
数字が、
sum_size 0.009999999999999998
こんなことになって、
エラー出ちゃう、
助けてー! 0.01とかの数字は、
ビットコインの数です、
持ってるビットコインの数を全部足して、
全部のカズ売るプログラムできたと思って、
安心して寝たら、朝起きたらエラーで手仕舞できてなくて、
めちゃくちゃ損してます・・ >>335
ありがとうございます、
こうしてみました
sum_size = decimal(sum([float(i) for i in size]))
これで安心して寝れる・・ >>333
それこそ最後に適当な桁でround()しなよ
ただ、そもそもエラーってなんのエラーが出てるんだ? >>337
取引所のビットコインの桁数が決まってて、
小数点多すぎてエラーになってたみたいです、
なんか decimal使ったらエラーがでちゃったので、
こうしてみました
sum_size = round(sum([float(i) for i in size]),5)
これで寝ているだけで朝起きたらお金が増えているかも。 sum(Decimal(f) for f in size)
根っこでDecimalにしとかんと意味ない sum(map(float, sum_size)) bot完成した、
今朝はプログラム失敗して大損してたけど、
だいぶ取り返してきた、
超初心者だけど頑張るぞ。 Djangoってsql injectionの心配しなくていいんですか 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も文字列を連結して作っている ドローダウンやべー、
でも耐えて頑張るぞ、
初心者でも、
botで金持ちになるんだ。。 >>346
ソフトで株やってんのか?
残念だけどソフト売買で金持ちになった投資家って聞いたことないな >>345
もう何行目で気付くかより
何文字目で気付くかの
スルー早押しボタン競争状態 >>347
禿バンクって soft bank って会社じゃなかった?しらんけど Windowsて外部のexeファイルを直接ダブルクリックして起動するとタスクバーにアイコンが表示されるのに、
pythonのsubprocess.popen経由でexeファイルを起動すると、タスクバーのアイコンがWindowsデフォルトの無印アイコンになってしまいます。
何が原因でしょうか? >>345,348
[Rr]ubyと[Rr]ailsをNGしとけよ... スーパークラスでひな形のメソッドを用意して、
サブクラスでオーバーライドして使う場合には、
ひな形のメソッドの中身はpass文で済ませていいでしょうか?
それとも抽象メソッドできちんと記述するべきでしょうか? >>350
そんなことないぞ
shell=Falseにしてるか? >>352
super class が abstract class かそうでないかで分ける >>353
してます。
ほとんどのexeファイルはsubprocess.popenで開いてもアイコンがタスクバーに現れるのですが、特定のexeファイルにだけこの現象が起きています。
そもそものexeファイルの作り方が悪いのかもしれないですが、ダブルクリックでは問題なくアイコンが出るので不思議に思っています。 それ関係ある?
@abstractmethodじゃなかったら呼べてしまうから?
>>352
どっちにしろ空定義できないからpassでOK >>352
オーバーライドしてないサブクラス経由でひな形のメソッドを呼ぶようなコードが書かれた場合にどう対処したい?
それ次第 NotImplementedErrorにするのは少数派? >>355
Python じゃないけど VBA の Shell 関数で NotePad.exe 起動したら同じようにデフォルトのアイコンになっちゃう
まあ特に困ってないからそのままにしてるけど原因は俺も知りたいな google colabで
data = list(files.upload().values())
とやってdata にlistとしてファイルを入れてるんだけど
これをやらずにcolabの「ファイル」の部分に直接ファイルをドラッグアンドドロップしたり
google driveからファイルを引っ張ってきたりできるのかな?
最終的には
data = list(file.values())としたいんだけど
どの方法が早いんだろうか?
ちなみにアップロードしてるのは20〜50MBぐらいの音楽ファイル 説明を追加する
「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とかを考慮すりゃいいとは思うんだけど
書き方がわからない レスしてくれた方々、ありがとうございます
>>354
スーパークラスは一応通常クラスにしてあります
>>356
分かりました
>>357
厳密に言えば呼ばれたら困るには困るんですが、
勉強で一人で書いてるコードなのでそれはあり得ないんです Ruby の抽象クラスは、
抽象クラスではエラーになって、派生クラスのみで使える
class 親
def a
raise NotImplementedError
end
end
class 子 < 親
def a
処理を、override
end
end >勉強で一人で書いてるコード
数日後や数ヶ月後数年後の自分は他人だと思え >>361
colabのストレージって永続化されないと思うから、
先にアップロードしたファイルを使いたいならGoogleドライブをマウントしないとダメじゃない?
ファイルタブの上のアイコンの左から3番目のドライブのボタンをクリックするとマウント用のコードが追加されるはず 僕のアルバムに他人ばかり写ってるんですが一体誰ですか? >>363
>勉強で一人で書いてるコードなのでそれはあり得ないんです
そういう考え方はよくないね
勉強で書いてるなら尚更良くない
他人だけでなく自分がうっかり間違えた場合にコードにどう振る舞って欲しいかを考えないと サブクラス化するときにオーバーライドを強制したいなら抽象メソッドにして中身はpassで可
オーバーライドを強制はしないけど該当メソッドが呼ばれた時はエラーにしたいなら通常メソッドでNotImplementedError
基本的にはこの2つのどちらか
強制もしたくないし呼び出されてもエラーにしたくないしpass以外のデフォルト実装も提供したくないなら通常メソッドでpassってことになるが
それが一番適切な選択になるようなユースケースは無いんじゃね? レスありがとうございます
ちなみにカードゲームを作っていて、スーパークラスがPlayer、
サブクラスがHuman・Computerです
>>365
はい、それは時間が経った時に実感します
ただ今回は300行程度の短いものですから…
>>368
そうなんですね
ただ、そのスーパークラスをインスタンス化することは無いです
>>369
そうなんですか
いろいろ制約をかけるとPythonらしくない、と人に言われたこともありまして よくいる賛同欲しいそれ以外お断り系質問の匂いがしますね違うかな NotImplementedErrorで良くね派
実際にメソッド呼ぶまでエラーにならないのが欠点だがABCMetaはめんどい >>371
確かに…
以後気を付けます
>>372
ありがとうございます
検討します >>370
>>スーパークラスをインスタンス化することは無い
>>363
>>354
スーパークラスは一応通常クラスにしてあります
矛盾してるんだよな
意味わからず調べず返事するからだろうけど >>371
都合の悪い意見はスルーしてるんだよな
あるいは馬鹿は自分の理解の及ばない単語は目に入らない
(スルーしてるんじゃなくマジで見えない)という話があるがそれかもしれん 素人質問で恐縮なのですが、
…なんて常套句はさておき、本当に本当の初心者なのでLv低い質問だと思いますが、
b = 2
と入力して、
type(b)
で、変数bの型は何ですか?と聞くだけの超簡単なコマンドのはずなのに
何でエラーが出てしまうんでしょう?
(ここで躓いているようじゃ先が思いやられるかな?)
(スクショ貼れませんでした、すみません)
誰かよろしくおねがいします 環境はgoogle drive上のgoogle colabolatoryでやっています。
ちなみにwindows10です。
スクショ貼ろうとしましたが、うpろだの多分urlがNGワードに引っかかっちゃったみたいです 確かにもっともなご指摘・・・
これで貼れるでしょうか?
https://imgur.com/a/96Z0WgY それこそColabなら共有(共同作業)できるから
捨て垢でやり直してリンク貼ったらどうか >>379
typeっていう名前の変数を定義してないか? >380
それも手ですね
分からなかったらそうします
>381
予約語を変数として定義できるんですか?
定義してるかどうかは、どうやって確かめますか? >383
ありがとうございます、解決しました!!
色々と変にいじってたうちにtypeに変数を定義しちゃってたのが原因だったみたいですね。
これで先に進めます。 >>382
>予約語を変数として定義できるんですか?
できないです。SyntaxErrorがおきます 予約語ってのはdelとかforとか文を形成するものじゃない?厳密には違うかもしれないけど書き換わったら根本的に意味をなさないもの
typeとかは組み込み関数だけど、場合によっては別の関数で上書きして使いたいときがあるかもしれない。便利機能を追加するときとか pycharmの最新版を入れたら、デバッグの時に日本語が文字化けするようになったわ。 pipで入れれるツールをよく作るのですが、インストール後に生成したファイル(アクセストークン、設定、キャッシュなど) はどこに保存するのが普通ですか?
アンインストール時に一緒に消せるようにしたいのですが、package dataだと最初からファイルが存在している必要があり、管理がしにくく思っています。
なにか実践されてる方法をご存知でしたら教えてください。 質問っす。
マルチグラボで並列処理をpythonでしたいとき
何がおすすめですか?
vs?colab?charm? >マルチグラボで並列処理
肝心のここが謎だけどその並列処理ツールの公式サイトで聞いたら?
きっと好きなの使えっていわれるよ 無理やりチェーンメソッドみたいな事が出来るようになるAPIはありませんか?
自力だとこんな感じでしか思いつかなかったのですが
https://ideone.com/y1cK9w >>392
ありがと!
ついでにflaskとdjangoやりたいんだが
pycharm一択ですか? pycharmの無料版はWeb開発に必要な機能がまるっと削られてるからflaskやdjangoやるなら課金必須
無料ならVSCode一択 指定したフォルダの階層内のフォルダ名を一括で変更したいのですがどうしたら良いですか?
例えば、以下のような階層で、「test」と名前がつくフォルダを一括で「changed」に変更したいです。
test
|_aaa
|_test
|_iii
|_test インデントが反映されなかったのでもう1度
test
|_aaa
|_test
|_iii
|_test 再帰でフォルダ名のリストを作る
一番深いフォルダからリネームする フォルダ一覧の配列を取得したら、その配列の順番をひっくり返すだけで大丈夫そうですか? 再帰知ってて>>399とか意味わからん
知ってるのは名前だけとかいうオチじゃないよね?
とりあえず>>398のリストを作ってみようか
再帰知ってるなら簡単だよね >>403
上の階層から順番に処理する場合での再帰って言うのでは・・・ >>402
globとか考えてるならワンチャンsortしたらいけるかもしれないけど、自分で深さ優先探索してサブディレクトリがなくなったらリネームして親ディレクトリに戻って他のサブディレクトリに移って同じことをするみたいな実装が確実
os.walkでいけるのかな >>403
上の階層から順番に処理する場合でも再帰って言うのでは・・・ 再帰関数っていうのは関数内で自分自身を呼び出すことだし、別に再帰には後ろから順番に処理するって意味は含まれてなくて、ループを使わずに同じ処理を繰り返す的な意味なのでは >>404,406
誰も上の階層からやるやつを再帰と言わないなんて言ってない
人のレスにケチつけるだけの人みたいだから俺は匙投げるわ >>402 みたいな発言観ると池沼っているんだなって判る >>409
再帰の本当の意味をあなたが知らなかっただけですよね? 匙投げるも何も既に解決したと書いてるんですが笑笑
コードも示せない人は回答しないで欲しいですね >>398
わざわざリストする必要もなければ
わざわざ一番深いフォルダからリネームする必要もないでしょ
そうしたほうがいいユースケースがあるのは分かるが今回は質問者が疑問に思う方がまとも 浅い方のフォルダを先にリネームしたら深い方のフォルダのフルパス変わるから悪手だと思う 後ろからとか言うのはよくわからんけど幅優先と深さ優先にしてもどちらも再帰で処理できるでしょ >>416
深い方のフォルダのフルパスが変わったら何が問題なの? カレントのフォルダ列挙して
各フォルダに再帰呼び出しした後
リネームするだけだと思う 再帰はglobやrglobがやってくれる
↓こういうので何か問題ある?
for x in Path(‘.’).rglob(‘test/‘):
__x.rename(str(x).replace(‘test’, ‘changed’)) >>422
ループ内でループの選択項目を変更するのはちょっと怖いわ
rglob() とかは大丈夫なんだっけ? プログラミング初心者です。質問させてください。
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と短く書くことは可能でしょうか。
初歩的な質問だと思い申し訳ないのですが、よろしくお願いします。 >>420
>>421みたいな発想がなかったすまん 30代Pythonクソチョン男は強姦魔の犯罪者!
雇うときには 父母と祖父母の戸籍謄本を提出させましょう! >>389
設定にコンソール画面の文字コードの設定が新たにできたみたい。
エディター>一般 |>コンソールのところを設定したら治った。 PySide6でqasync利用して@asyncSlotしたメソッドから
aiohttp.ClientSession.get呼ぶと止まっちゃうんですけど回避方法ありませんか
timeoutいれてみるとタイムアウトになります 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"]) また、以下はそんなライブラリ使わなくてもこうすればできるのにと思って書いたコードで普通に動くやつです。
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 確かに
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を使用するために必要なライブラリが増えるため、ライブラリを使用することで必要になるライブラリを読み込む処理や、ライブラリのインストールが必要になることがあります。 基本、スクレイピングは攻撃・営業妨害になるので、契約してAPI を使うべき!
図書館へ何万回もアクセスして、逮捕された香具師もいるから、
全てのスクレイピングの本には必ず、APIを使うように書いてある AIが進化するに連れ、結局僕らも機械的に思考してるだけなんだなってつくづく思う >>436
F5アタックと変わらんからな
Pythonがスクレイピングツールとして悪用されている現状を憂う DL siteはAPI公開してないようですが、何秒に1回なら良いでしょうか?
(dlsite.com/maniax/work/=/product_id/RJXXXXXX.htmlみたいなページのデーブルデータを取りに行くもの) >>441
robots.txt見たらそのURLはアクセス禁止に指定されてるね
スクレイピングするなって事じゃないかな 質問失礼します。python初心者でよく問題の意味が分からないので答えを教えて頂きたいです。
一つ目の問題は、次のような10個の数字を配列に代入し、くり返し命令を使って、一つずつ表示させてみよう。2、5、8、9、30、45、55、102、183、209 が一つ目の問題です。
二つ目の問題は、(1)の10個の数字に対して、単純前方探索のアルゴリズムを使って、指定した数字を見つけるプログラムを考えてみよう。また、何回目の比較で見つかったかを表示させてみよう
が2つ目の問題です。
どうかご協力お願い致します。 >>450
5ちゃんねるするの初めてだったんです…
ルールとかわからずスレ立ててしまって申し訳ないです(´;ω;`)今度から気をつけますね。 JSONRPCのAPIを実行して返ってきたjsonをdictで返す関数がある
APIから返ってくるjsonの中身は、実行するAPIのメソッドによって変わる
この場合関数の返り値のタイプヒントはどう書けばええんやろか 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! ほんとにこのレベルで質問していいのか恐縮なんだが助力願いたい
・前提(実行環境:Win10-64bit, Python3.11)
GUI.py
「選択」「開始」「停止」ボタンを持つGUIを出す
他のpyファイルを実行する関数pyexecを持つ
script1.py なんかの処理をするやつその1。基本whileTrueしてる
script2.py なんかの処理をするやつその2。同上
parts.py script*.py共通のfrom import *用モジュール
があるとき、
GUI.pyでGUIを開き、そこで「選択」ボタン(filebrowse)からscript*.pyを選択
選択したモジュールを「開始」ボタンで並列実行開始し(ここで開始ボタンは無効化)、
その並列実行を「停止」ボタンでいつでも強制終了できる(ここで開始ボタンが復帰)
さらに「選択」ボタンからファイルを選び直し、再度「開始」ボタンから並列実行を開始できる
という風に動作させたい
script*.pyでimportするものは(partsを含む複数が)共通なので、importはGUI.pyの一度で済ませたいが、
GUI.pyで
from parts import *
th = threading.Thread(pyexec("script1"), daemon=True)
th.start()
としたとき、parts.pyで定義した関数がth上では未定義になっていた
・質問
Threadする度にimportすべきかどうか
あるいは全体的にもっと効率のよい方法がないか まず、cpythonのmultithreadは本当に腐っているのでmultiprocessingかasyncio で書き換えましょう マジ?threadがダメだからthreadingにしろってのは見たけどそれもダメなのか
multiprocessingは一回試したんだけど、呼び出した時にGUIが増殖したからなんかダメそうなんだよな……
asyncioっての調べてみるわ ありがとう、プロセスプールとかいうのの存在も知れてよかった
でもダメだ、どのみち呼び出し先にimportが引き継がれてなかった
やっぱ呼び出すつどimportするしかないのか……? 別プロセスとして起動するなら必須じゃない?
モジュール変数を共有するなら、from~じゃなくて
import parts
parts.val1=1
って感じにすれば共有できる
その場合はgui.pyからscript1をimportして、threadingにtarget=script1.main()を指定する必要がある
exec関数使えば動的にインポート可能かな なるほど、script1にpartsをimportするんじゃなく、GUIにscript1をインポートするのか
確かにそれならGUI上で定義した変数やら関数をscript1側でそのまま使えるな
最後に読み込んだpyファイル名を覚えておけば複数ファイル読み込んでも実行対象迷わないし
そのアプローチでやってみる。ありがとう
exec関数……そんな便利なもんあったのか…… どういうわけかインポートができない ググった通りにやってるんだが……
中身の実行自体はされてるらしく、print文とか入れとくとそれは実行される
だがモジュール名を覚えてくれない
import importlib.util
import os
import gomi as g
g.MODULE_PATH = r"C:\Users\gomi\Downloads\test.py"
g.MODULE_NAME = os.path.splitext(os.path.basename(g.MODULE_PATH))[0]
spec = importlib.util.spec_from_file_location(g.MODULE_NAME, g.MODULE_PATH)
modulevar = importlib.util.module_from_spec(spec)
spec.loader.exec_module(modulevar)
exec(g.MODULE_NAME + ".main()")
Traceback (most recent call last):
File "C:\Users\gomi\Downloads\gomi.py", line 9, in <module>
exec(g.MODULE_NAME + ".main()")
File "<string>", line 1, in <module>
NameError: name 'test' is not defined import threading
import sys
sys.path.append('C:\\Users\\gomi\\Downloads')
exec("import gomi")
exec("th1 = threading.Thread(target = gomi.main)")
exec("th1.start()")
これなら動くよ ファイルのopenに失敗した時、Noneとか適当に返してくれればいいのになんで例外発生するの?
例外処理 ('A`)マンドクセ そのうち毎度Noneでチェックする方がまんどくさくなるよ いろいろあって最低限動くところまで行けた ありがとう
ThreadPoolExecutorの正しい使い方を理解するのにこんなにもかかってしまった
どこもかしこもmap関数ばっか使ってるけど、あれ使ったら強制待ち状態になるのなんなんだ…… django等のフレームワークでの設定に関する質問もこのスレでして大丈夫でしょうか? 聴いてみれば良いんじゃね
python の例外は C++ とかと違って
if と実質同じでかなり気軽に使われてるイメージ 例外処理だのトークン引き渡しだのは理解するのがめんどくさくなってしまった
スレッドの強制終了も結局グローバル変数で管理しちゃってるぜ 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! pythonだとreadlineやforでチマチマ読みながら処理するよりも
readメソッドで一気にリストに入れてから処理したほうがいいの?
メモリ確保のオーバーヘッドがどうとか言われないの? readメソッドじゃなくてreadlinesメソッドだったか 人間が入力しているときや、外部から五月雨式にデータが来るときには
はreadlineにするしかないよね
ファイルを読み込むときはreadの方がいいけど >>475
Ruby on Rails などのフレームワークは、
ウェブ開発専用のWEBプログラミング板 ここでいいよ
人いなくて機能してなかったし、情報分散するだけだし YouTube で有名な雑食系エンジニア・KENTA の有名な本
「21世紀最強の職業Web系エンジニアになろう」でも、
ウェブ制作・ウェブ開発は、根本的に異なる。
だから、板も分離している
日本の偏差値50 ぐらいの文系のアホでも、米国では70ぐらいに相当する。
日本人全員が東大生みたいなもの。
Ruby on Rails + バックエンドだけで、年収13万ドル
この技術は極めて再現性が高いから、貧乏人でも、文系のアホでも女でも稼げる。
それで革命を起こしたのが、KENTAの月千円のRailsサロン やべーやつじゃん
やっぱワッチョイって要るんだなぁ Python3.10をインストールしたのですが、
コマンドプロンプトでpython -Vを入力すると3.9.12とかなり前にインストールしたバージョンが表示され続けて途方に暮れてます…
もちろん3.9.12やanacondaはアンインストールし、環境変数のPathも以前の物は全て削除した上で3.10をインストールしているのですが、何度確認してもコマンドプロンプト上では3.9.12が表示されてしまいます
あとは何をすれば3.9.12が消えてくれるのか…
というかコマンドプロンプト上でバージョンを3.10に切り替えるにはどうすればいいのでしょう? >>488
まずは > where python
で、残っているであろう3.9.12の場所を探そう >>489
ああ~ ありがとうございます‼
残滓が見つかって無事3.10になりました‼ 片足スレチに突っ込んでるかもしれんが該当スレがないみたいなんでここで質問させてくれ
locateAllOnScreenを改変(特定色をマスクするように)して使いたいんで.実態を追いかけてみたんだが
cv2.matchTemplateなるものでぱったり足跡が途絶えてて
ググったらどうもOpenCVは最終的にC++を呼び出してるらしいんだが
じゃあどのファイルのどこからどこが呼び出されてるんだよっていうのがgithub見てもわからなかった
誰かその場所を(というかその場所の探し方を)教えてくれ >>425
自己解決しました。
(By.<アトリビュート名>)のところを
search_methodにアトリビュート名を代入して
(getattr(By, search_method))と記述することで処理することができました。
ありがとうございました。 pythonはvimの%でジャンプできないのが辛い
スレチだけど Visual Studio2022でnumpyインポートしようとするとバージョンちゃうでってメッセージでるんだけど
どないしたらいいの。。。。
numpy最新バージョンのはずなんだけど >>496
エラーメッセージをそのままここに貼りなよ >>1読めない人発見伝じゃん
>★エラーを解決したい場合★は、
> 表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
> 実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! >>1
数えきれないくらいにコピペしたのに、
画像すら表示されない、、、 pythonの外部ライブラリのアドレスをわかる人、いますか?
会社でアクセス制限されててwotchdogを追加できません。
自宅でPythonをインストール後、コマンドプルンプとで「$ pip install watchdog」
を張り付けてエンターを押したら、なんとなくできたのですが、
pythonの外部ライブラリのアクセス制限で先にいけません。
あとwatchdogはネットワークフォルダに対応していますか? >>501
>>1を読んで頭の中を整理してからもう一度質問した方がいい >>501
会社のPCがwindowsなら
windowsでプロクシを通す方法を検索しよう
それから社内のネットワーク担当者に、会社のプロクシを尋ねる アクセス制限されてんだからたとえ抜け道があっても勝手に突破したらあかんやろ
上長へ相談 右クリックしたときのコンテクストメニューで、py -3.8 -m venv envをPowerShellかコマンドプロンプトで実行するアイテムを追加したいです
どうしたらいいですか? 新しいフォルダを作る→フォルダを開く→Powershellを開く→py -3.8 -m venv envを実行する
を
新しいフォルダを作る→フォルダを開く→右クリックでpy -3.8 -m venv envを実行する
をできるようにしたいです >>511
それはpythonは関係ないだろ
その上検索すりゃ簡単に出てくるだろ
頭は大丈夫? >>512
関係ないです
ぐぐってもHKEY_CLASSES_ROOT\*\shell以外出てこなくて詰まってます
どうしたらいいですか? >>513
検索してもわからないとは┐(´д`)┌ヤレヤレ
頭が悪過ぎるようだからまずはその頭を何とかするのが先ではないかな >>510
例えば漏れは、デスクトップに以下のショートカットを作っている
WSL2 を起動して、作業フォルダを\home\a\b にして、
VSCode をそのフォルダで開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\a\b
ただし、作業フォルダは事前に作っておく必要がある
だから、>>501
のように、新しいフォルダを作って、そのフォルダを作業フォルダにしてから、
PowerShell・コマンドプロンプトを起動するのは難しいかも 例えば、デスクトップに以下のショートカットを作る
Ruby で、a.rb を実行する。
引数に、〜/tmp/x/xx と作成したいフォルダの絶対パスを渡す
リンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/Ruby/a.rb C:/Users/Owner/Documents/Ruby/tmp/x/xx
a.rbの内容は、
require 'fileutils'
# フォルダが存在しなければ、作る
FileUtils.mkdir_p( ARGV[0] ) unless Dir.exist?( ARGV[0] )
Dir.chdir( ARGV[0] ) # 作業フォルダを移動する
puts `where notepad`
sleep # 出力したコマンドプロンプト画面を閉じないようにする
出力
C:\Windows\System32\notepad.exe
C:\Windows\notepad.exe
ただし、Rubyで日本語、sjis/CP932 は文字化けするので、
PowerShell スクリプトで書いた方が良いかも Djangoについて質問です
1つのプロジェクトに複数アプリをぶら下げる場合、templateの置き場は各アプリごとにその直下に作成するのがいいのでしょうか?
それともプロジェクト直下にtemplateディレクトリを作成し、その中にアプリ名で区切ってまとめて置くのがよいのでしょうか?
どちらの形式も見かけるのですが、それぞれの利点がわからず、どちらが望ましいのかわからなくて困っています >>510
powershellのps1ファイルを右クリックで開くことはできるけど
それ自体をコンテクストメニューに追加するのって出来たっけ?
実行したいフォルダにps1ファイルをコピペして、そこで実行する
という手順ではダメか? >>519
を、コマンドプロンプトではなく、PowerShell(PS)に変えたら、Ruby でも文字化けしない!
例えば、デスクトップに以下のショートカットを作る
PSを起動して、その中から、Start-Process でRuby の外部プロセスを起動して、a.rb を実行する。
引数に、〜/tmp/x/xx と作成したいフォルダの絶対パスを渡す
a.rb・〜/tmp/x/xxの間に空白が入るので、"〜" ではなく、'〜' で囲む。
-Wait は無くてもよい
リンク先
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Start-Process -FilePath ruby -ArgumentList 'C:/Users/Owner/Documents/Ruby/a.rb C:/Users/Owner/Documents/Ruby/tmp/x/xx' -Wait >>520
わざわざ教えてくれたのにごめんなさい
結局、以下を作成することでできました
HKEY_CURRENT_USER\SOFTWARE\Classes\Directory\Background\shell\venv\command 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! watchdogを動かすPyを開くと指定されたフォルダにyyyymmddのtxtかcsvを作ってwatchdogのログを書き込む方法をご存知の方、ご教示願います。インターバルは何分、何秒でも可能。 複数のリストを結合する方法はいろいろある
+演算子
*演算子
+=演算子
extendメソッド
その動作の違いはちょっとググればわかるけど
処理速度とかガベコレの効率とか
どういう時にどれを使えばいいのやら
それともどれでもいいのか
どれでもいいとすればpythonらしくないなあ https://github.com/fanzeyi/pokemon.json/blob/master/pokedex.json
*火(Fire)と飛翔(Flying)の属性を持ったポケモンの数を表示
*消防士向きのポケモンを判定する 図鑑番号を指定して 水(Water)のタイプをもっていて、すばやさが平均以上の ポケモンであれば、採用と表示する
*発電向きのポケモンを判定する 図鑑番号を指定して でんき(Electric)のタイプをもっていて、ぼうぎょりょくが中央値以上の ポケモンであれば、採用と表示する
import urllib
import json
response = urllib.request.urlopen('https://raw.githubusercontent.com/fanzeyi/pokemon.json/master/pokedex.json')
content = response.read()
jpk = json.loads(content)
jpk
誰かこれの回答と解説お願いします どこに質問があるのかもわからない謎のレスが謎のままクローズされた JavaScriptやPythonやRubyやC++などを学んできましたが、
フレームワークを学ぶのは大変ですね。
JavaScriptやPythonでちょっとしたプログラムを自作することはできるのですが、
Djangoは学ぶのはとても難しいです。
デザインパターンをしっかり学ばなかったせいでしょうか。
自己流に一から作るほうが簡単です。
でもそれだと一般にソースを公開したり、チームで開発するソフトウェアには向いていないんでしょうね。 >>535
Rails学んでからDjango学んでみ
スラスラ入ってくるから >>536
助言ありがとう。でもRailsで挫折してる。 Vsual Studio code使ってるんですが
importのところで小文字大文字関係なしにインテリセンス出すにはどこを変えたらいいのでしょうか
PySideつかおうとするとimport pだとPySideがインテリセンスに表示されません なんでもはないから開発元に要望だすか大文字タイプする
TabnineなんかのAI補完に頼るのもあり 「AはBと等しくない(not equal)」という場合、
A != B
not A == B
これらの違いって何? 判定が1回行われるか2回行われるかの違いじゃないの 見た目以外どっちも同じ __eq__ + 否定 だとおもう >>535
KENTA の月千円のRails サロンに入れば?
以下に書いた
スレ立てるまでもない質問はここで 163匹目
https://mevius.5ch.net/test/read.cgi/tech/1670470167/506
独学なら、黒田努の3冊の本がおすすめ。
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9
この本が入門書。
ただし、Ruby 2.5.1, Rails 5.2 だから動かないかも。
読むだけで済ますとか
YouTube, かよちんchannel
【半年間使ってわかった】PythonのwebフレームワークDjangoを学ぶメリット・デメリット
かよちんは未経験の大学生で、Railsでポートフォリオを作って就職した。
1年運用で働いたが、開発したかったので転職した。
転職先では、Djangoで開発している
やっぱり、Pythonをやった香具師よりも、Railsをやった香具師の方が、転職では有利。
ほとんどのフレームワークが、Railsを基礎としているので、
なぜ、ウェブ開発でRailsではなく、Pythonを選択したのか聞かれて、返答に困る >>540
もし!=と==が別実装ならショートカットできる
==は最後まで調べないと判断できないが
!=は一致しない部分が見つかった時点で終了できる Ruby は高騰の一途! 異常。
Ruby on Rails, AWS Solution Architect は、13万ドルとか
Stack Overflow 2023年の年収。高低
Ruby, Elixir : 9.3 万ドル
Go : 8.9
Rust : 8.7
多くの言語 : 6.5前後
PHP : 5
Dart : 4.4 細かく言えば使われるのが__eq__か__ne__かの違いはあるけど意味的には同じでしょ
判定が2回行われるってのがよく分からん意見だけどどういう意味なの? >>535
ライブラリもモジュールもフレームワークも使わずに
CGI描いてたの?
それともCGI描いたことなかったの? A==Bを評価した後not判定になるのかと思ったんだ
テキトーこいてすまんかった https://ideone.com/EHu7Pn
拙い知識だけど、こんな感じになった
A != Bは、__ne__()だけ
not A == Bは、__eq__()と__bool__()が呼ばれた
でも__ne__の実装は、だいたいこんな感じになるよね
return not self.__eq__(other) wingetで3.11インストールして、その後3.10もインストールしようとすると既に入ってるでインストールできません
何か解決方法はあるでしょうか winget various versions python
とかでググる NASから特定のフォルダ内にある特定のフォルダを
ローカルにコピーする処理を作ってます。
フォルダ内のリストを取得する事には成功したのですが
ファイルはいくつか見つけたのですがフォルダのコピーに
ついてはいくら調べても出てこなくて困っています。
もしかしてフォルダを自前で作成した上でその中に
全てのファイルをコピーすると言う処理しか出来ないのでしょうか? >>555
shutilを使えばファイルだけではなくディレクトリ(フォルダ)の
のコピーも扱えると言う事ですね。
失礼しました。もう少しドキュメントちゃんと読んでみます。
ありがとうございました☺ 10 = 5 * x
20 = 18 + x
30 = 60 / x
のような条件式で、x = 2の回答をポンっと計算出来るPythonのライブラリって何が有りますか? 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! chatGPTが
bin_str = struct.pack('!g', num)
なんてコードを吐いたんだが、
struct.packに'!g'なんてフォーマットあるの? スクレイピングの練習をしているのですが、
やりたい作業の方法が思いつかないので教えてください。
下記はコジマの商品一覧ページです。
作業はseleniumとlxml.htmlで行っています。
htmlを取得し、48商品すべてのポイントをスクレイピングしようと下記を実行しました。
u='1UMto4'
driver.get(u)
html = driver.page_source
html = lxml.html.fromstring(html)
css_pt = '#fwCms_wrapper > div > div > div.layoutGrid > div.fwCms_box.frame_MB > div.ProductList.MK2PFRDL010_01 > div > ul > li > p.point.small.mt1 > span.number'
pt = [int(pt.text_content().replace(",","").strip()) for pt in html.cssselect(css_pt)]
ポイントの記載がない商品は、0として値を取得したいのですが、
上記方法だとポイントがある商品しか値を取得できません。
そこでhtmlにp.point.small.mt1 > span.numberが記載されていない商品にもp.point.small.mt1 > span.numberhtmlを追記してポイント0を加えた上で、
css_pt = '#fwCms_wrapper > div > div > div.layoutGrid > div.fwCms_box.frame_MB > div.ProductList.MK2PFRDL010_01 > div > ul > li > p.point.small.mt1 > span.number'
pt = [int(pt.text_content().replace(",","").strip()) for pt in html.cssselect(css_pt)]
を実行するようにしてみたいです。
何かいい方法ありますか >>562
1UMto4の前に
えいち
てぃてぃー
ぴーえす
コロン
スラッシュ
スラッシュ
is
ドット
gd
スラッシュ
がつきます。
書き込み規制の関係で抜けてます もうここで質問するよりもChatGPTに聞く方が早く良い回答を得られるようになってきたな 質問者のレベルが下がって
アホのChatGPTにでも答えられる質問が増えただげ クラス内のメソッドが長くなった場合、分かりにくいんで外に定義する方法とかありますか? 深層学習でどれを一番良く使ってますか?
aws,azur,gcp,アリババ、ibmなど。 >>562
ポイントの有無に関係なく商品レベルで要素を取得してループを回す
ループの中でポイントがなければ0を設定する処理を入れる
擬似コードで書くと
points = [ item.get_point() or 0 for item in get_item()]
DOMを検索する回数を減らしたいようであれば
ポイント有り商品だけ先に取得してポイント無し商品だけ取得したリストを足す方法もある Windows上のPythonで、昔あったおもちゃのサイモンのプログラムを作ろうと思ってます
CUIでの動作ですが、サイモンの中身のプログラムは作れたので、
枠を描画したり内部の色を点滅させたりといった描画をするプログラムを
作ろうと思ってます
そのため描画ライブラリについて調べており、PillowやOpenCV、turtleと
いろいろあるようで、とりあえずturtleを使おうと思っているのですが、
turtleに無い機能で、例えばPillowにはある機能を使いたい、なんていうこととなった場合、
どうするものなのでしょう
あきらめて似たようなものを自作する、なのでしょうか
turtleのウィンドウに対して、Pillowで描画させる、とか、したりできたりするものなのでしょうか www.kojima.net/robots.txt
User-Agent: *
Disallow:
これは、Disallowに、/ が無いから、
すべてのクローラーのサイト内巡回を許可しているのか?
Ruby, Nokogiri で、12件でやってみた
www.kojima.net/ec/prod_list.html?cate=tv_recorder&limit=1&sort=1&page=6
構造としては、ポイントがある場合、
価格部分のHTML・<p class="price small mt1"> の次の兄弟に、
ポイント部分のHTML・<p class="point small mt1"> が来るはず。
もし、これが来なければ、0 ポイントのHTML片を作って、価格部分の次の兄弟に挿入する
require "nokogiri"
=begin
価格部分のHTML
<p class="price small mt1">
<span class="number">6,350</span>
<span class="yen">円(税込)</span>
</p>
=end
次へ続く # 0 ポイント部分の、HTML を作る
Point_Str = <<"EOT".gsub( /\n/, "" ) # 改行を削除する
<p class="point small mt1">
<span class="number">0</span>
<span class="rate">ポイント(10%)</span>
</p>
EOT
# ローカルPC にダウンロードした、HTMLファイルに対して処理する
index_path = File.join(__dir__, 'index.html')
doc = Nokogiri::HTML( File.read index_path )
li_css = '#fwCms_wrapper > div > div > div.layoutGrid > div.fwCms_box.frame_MB > div.ProductList.MK2PFRDL010_01 > div > ul > li'
price_css = 'p.price.small.mt1'
point_css = 'p.point.small.mt1'
# li_css + ' > p.point.small.mt1 > span.number'
doc.css( li_css ).each do |li|
# li_css の直下に、point_css が存在しない場合
if ( li > point_css ).length == 0
point_node = Nokogiri::HTML::DocumentFragment.parse Point_Str
# li_css の直下のprice_css の次の兄弟に、point_css を挿入する
price_node = ( li > price_css ).first
price_node.next = point_node
end
end
doc.css( li_css + ' > ' + point_css ).each do |p_node|
# ポイントのカンマを削除してから、整数型に変換する
p Integer( ( p_node > 'span.number' ).first.content.gsub( /,/, "" ) )
end >>576
それらについては知らないけど、openglの勘があればコンテクストが共有されているという前提でidを使いまわても動くことはある tk canvas <-> numpy <-> PIL(pillow)
でイケるはず 簡易的なウェブサイトを作るときはtornadoとflaskどっちが楽? Windows10でpython使おうと思ったが、pip使えず
パス通せとかいうけど、pip自体インストールされてない様子 パスがあいまいならpipは直接つかわず
py -m pip
python -m pip
で実行した方がいいよ バニラのPythonじゃなくてAnacondaで始める優位性ってあるの? beautifulsoupでHTMLのテーブルを読ませるとスキップして無視されるセル(列)があるけど、何の法則?
テーブルタグやCSSに違いは見当たらない デバッガで追うか面倒なら公式のグループで聞くのが近道 しきい値を計算して、ある値がしきい値より上になるか下になるか調べたいです
浮動小数点数にはdecimal型を使うのが一番誤差がなくて間違いないと思いますが、処理に時間が掛かってしまいます
以下のようにroundで丸めて比較する方法でも問題ないでしょうか?
print(round(0.1 + 0.1 + 0.1, 10) == round(0.3, 10))
※下記サイト参照
https://note.nkmk.me/python-math-isclose/
他にこのやり方を説明しているサイトが見つからなかったので気になりました
ご教示お願いいたします 一致するかなら桁数合わせるのはわかるけど大小比較したいんだよね?
ウィキペからでもいいから誤差や浮動小数点数を学んでみては
Python関係ない話 >>590
大小比較したいです
ただ≦や≧を使いたいので、結局は一致するかどうかも判定しないといけないという理解です
一応誤差について勉強したつもりですが、間違っているでしょうか gosa(1000)だとTrueだけど
gosa(10000)だとFalse
def gosa(n):
____a=0
____b=0
____for i in range(n):
________a=a+0.1
________b=b+1
____print (round(a,10)==round(n*0.1,10))
____print (b) gosa2(1000000)だとTrueだけど
gosa2(10000000)だとFalse
def gosa2(n):
____a=0
____b=0
____for i in range(n):
________a=round(a+0.1,10)
________b=b+1
____print (a==round(n*0.1,10))
____print (b) 比較したい値valueと閾値thresholdがあるとして、
等しいかどうかの判定はmath.abs(value - threshold) < 誤差 にするかな
これがFalseならvalue - thresholdの符号を返せばいいんだけど、Pythonってsign関数ないんだな。めんどいね
NumPyありなら、
0 if math.abs(value - threshold) < 誤差 else np.sign(value - threshold)
と1行で書けるけど >>594
ありがとうございます
だんだん分かってきました
ということはvalueがthreshold以上かどうかの判定って
(threshold - 1e-10) < value
でできますよね? >>595
マイナスじゃなくてプラスじゃないの?絶対値と不等号の式展開が間違ってると思う >>595
「以上かどうか」を判定するなら<=を使えばいいのに、なんでそんなことをするんだろ
1-(1e-10)<1-(1e-11)がTrueになったり
1+(1e-10)<1+(1e-11)がFalseになったりするけど
そういうのは気にしなくていいのかな <=を使うのが普通なのでしょうか?
であれば>>589で書いたように誤差を考えて、予め適当な桁で丸めるかdecimalを使うのが自然ですか?
質問ばかりですみません
python関係なさそうですねこの話は
>1-(1e-10)<1-(1e-11)がTrueになったり
>1+(1e-10)<1+(1e-11)がFalseになったりするけど
この話は浮動小数点を使う以上どこかで丸めないといけないので仕方のないことだと思います >>600
<=を使えば正しく判定できるのに使わず
間違った判定をしてしまう方法を使うのはなぜかという話だ
「等しいかどうか」の判定の場合なら>>594のようにするんだろうけど
ID:ViAY60W+ がやりたいのは「以上かどうか」の判定なんだろ? <=を使えばいいって言ってるのはアホだから無視していいよ そもそも有効桁数の扱いがおかしいから
誤差積み重なってるし妥協が必要な案件
その意味で <= にする選択もあり
>>602
了見が狭い decimal使わないんなら許容誤差の中に収まってるかどうかを判定すべきじゃないの?
閾値を多少オーバーしててもそれが許容誤差範囲内なら閾値を超えてないとみなすみたいな緩さが必要 >>> print(0.1 + 0.1 + 0.1 == 0.3)
False
>>> print(0.1 + 0.1 + 0.1 >= 0.3)
True
>>> print(0.1 + 0.1 + 0.1 <= 0.3)
False 深くやろうとすると難しいな
俺はmath.iscloseでいいや 等号、不等号の問題じゃなく
計算誤差と有効桁数の問題じゃないのか?
理解できているならば、最初の質問の>>589で問題ない
きちんと有効桁数で計算誤差を無くすことが出来れば
等号だろうが不等号だろうが、自由に使える
あと
計算誤差でのバグが>>592
有効桁数でのバグが>>593
でしょ、分かりづらいけど >>608
計算誤差を無くすことができているとどうやって確証得るのかな? >>609
そんなの計算式によりけりでしょ
質問者の0.1+0.1+0.1は
round(X, 10)でもround(X, 1)でも計算誤差は無くなる >>610
a + b + cなら?
ちょっとは考えてよ >>611
aとかbとかcの情報が全く無いのにこたえられるわけないでしょ
質問者なら、情報の出し惜しみなんてしてたら欲しい答えが手に入らないぞ
質問者じゃないなら、もっとちゃんと勉強した方がいいと思うぞ >>612
そこでいきなり躓くのは予想外だったわw
a, b, cは任意のfloat
その計算結果をdという任意のfloatと大小比較したいって話だろ
計算式次第とか言うから計算式を固定してやったのにそれすら答えられないようじゃ意味ないだろ
理解できているならばきちんと有効桁数で計算誤差を無くすことが出来るんだよね? 無くすってか許容できる計算誤差になるよう有効桁定めようってだけやな 案外、環境構築や維持が大変な印象
個人端末で使うツールならともかく、これをサーバー側で使うのはちょっと >>613
「だろ」と言われても、ただの回答者の俺には何も分からん
あと、質問者じゃないなら質問者を助けるレスをすればいいんじゃとも思った
で、その条件だけだと「計算誤差を無くすことが出来ない」が回答になる
簡単な例えだと
(1e+20)+(1e+0)は明らかに(1e+20)より大きいのに結果は等しくなる
有効桁を超えるような差があれば加算した時点で必要な情報が落ちるから >>615
ちょっとpython齧ってみようかなって段階からもう毎日ピップピップだからなw >>605
>>> print(0.1 + 0.1 + 0.1 == 0.3)
False
>>> print(0.1 + 0.1 + 0.1 < 0.3)
False
>>> print(0.1 + 0.1 + 0.1 > 0.3)
True >>609
abs(a - b) < machine_epsylon >>616
出来ないのかよw
>きちんと有効桁数で計算誤差を無くすことが出来れば
出来ないこと書いてたのかよw
入力値の範囲と計算結果の取りうる範囲と必要な精度の3つの条件次第では出来る場合があるというだけ
もうちょっとちゃんと勉強した方がいいと思うぞ decimal使うと許容できないレベルで遅くなるの? decimalで良いから
Σ[n=0→N](1/n!)
を計算してみてくれ
全部の項が有理数だから
誤差無しで計算出来るよな 本質は精度すなわち桁数なんだから無理数だから有理数だからっていうのもちょっと違うけどな >>620
最初(>>608)から条件次第の「出来れば」を使ってる
実際に0.1+0.1+0.1は「出来る」
floatだけの条件は「出来ない」
と答えてるわけだけど、間違ってるか? 小数が誤差と切り離せない世界じゃ誤差無しって言葉は刺激が強すぎるんだよ
誤差無しじゃなくて誤差が許容範囲に収まる的な言い方が良いよ >>601
594だけど、594はnp.signを使った三項演算子の方は、等しくない(事前に設定した誤差範囲内とみなさない)場合には、より大きいかより小さいかを返せるようになってるよ。 有理数体のなかで誤差なしで計算したい(有理数は適当な小数にしないで有理数のまま)ならSymPyがおすすめ
代表的な無理数(冪乗根とか円周率とかネイピア数)に対してもそのままいい感じに計算してくれるよ >>623
>>622 は敢えておちょくってるんだろう LinuxやMacでよく使うzshでは {05..13} みたいに開始終了をゼロパディングありで展開してくれたりと
globが色々と親切便利なんだけど、pythonで同じことってできます? 例をあげると連番ファイルを取得するとき
files = glob.glob("hoge0[5-9]") + glob.glob("hoge1[0-3]")
を
files = glob.glob("hoge{05..13}")
みたいできたら便利だよねって話
まー無理だよね 下手な煽りだな
シェルの機能を使いたいならシェルスクリプトでやればいいし
Pythonの機能を使いたいならPythonでやればいい
どちらでも簡単にできる pythonスレで超初心者が質問してるのに
なんでシェルスクリプトでやればいい、が出てくるんだよ
pythonで簡単にできるんなら教えてやればいいのに
超初心者なんだから
知らんけど ChatGPTはどっかのサンプルコード持ってきてるのかね
そのうちビミョーなシステムが乱立しそう 機械学習関係でいくつかプログラムを動かしたいのですが
うち1つがconda前提のものです
環境がごちゃごちゃになりそうなのでcondaは入れたくないのですが
condaでないと動かないようなプログラムはあるのでしょうか スレ違いっぽい質問にお答えいただきありがとうございました conda前提のパッケージを、conda以外の環境で動作させるためにする努力の価値が
その成果に見合うのかどうか、という問題はあろうな
素直にcondaで動かしたらどうだろうかな
condaでなら動くのだし
がんばればなんでもできます、と称して無限の時間を浪費できるのなら止めないが >>640
ありがとうございます
簡単にできそうになかったら素直にanacondaインストールします conda環境丸ごとdockerでコンテナ化しちゃえば環境の汚染は気にならない気がする。 >>642
良いアイデアをありがとうございます
自分の環境がHyper-Vベースの仮想化と相性が悪くて有効にすると全体の動作が遅くなってしまうのですが今後の参考にさせていただきます アクセスすると、はい か いいえ を選ばされ
その答えに対応するページに飛ばされるサイトがあります。
@アクセスする
Aその飛ばされた先のURLを取得する
というコードが書きたいです。
webbrowser.open(url)
では@が出来てもAが出来ません。
Seleniumは何度やっても
selenium.common.exceptions.WebDriverException: Message: 'chromedriver.exe' executable needs to be in PATH.
エラーが出て上手くいきません。
なにかいい方法があれば教えて下さい。 まずはChatGPTに聞く、をテンプレにしてもいいんじゃないの?
>>644 もChatGPTで回答返ってくるよ
なんならコードも書いてくれる chatなんとかもいまいち信用ならん。
さっき「アダ・マウロってだれですか?」って訊いたら
モディリアーニの経歴紹介しおったw >>648
信用ならんは即使い物にならないに直結しない。
聞いてみてダメだなと思ったらBing AIチャットに聞いて、待ってる間に公式リファレンス開いて、Bingがダメだったとき初めてリファレンス読む。
リファレンスだけから理解するよりは速いからね。 >>648
ごぉじゅうねーんのでんとー
にーしざわがーくえーん >>648
使い方が悪い
調べごとに使うんならGoogleでいい 日本語のファイル名だとファイル名が文字化けするソフトがある
だからファイルを日本語から英数字にしたいんだけど
日本語をローマ字読み(英数字)に再変換する方法ってある?
見分けがつけばいいから漢字の訓読み音読みが間違ってもいい
なんなら漢字は抜けてもいいや
大量にあるからpythonでファイル名変換できたらいいなって思った base64に変換してしまうとか
ちょっとファイル名が長くなるけど pip install romkan
import romkan
japanese_text = "こんにちは、犯人はヤスです。"
romanized_text = romkan.to_roma(japanese_text)
print(romanized_text) # 「konnichiha, hannin wa yasu desu.」 >>656
romkan入れた
ありがとう
ちなみにpipインストールするとエラーがでた
romkanのREADME.rstにASCⅡ以外の文字が入ってるらしい
ソースを落として「README.rst」がopenされてる行を
README = open(os.path.join(here, 'README.rst'), encoding='utf-8').read()
と書きなおして、同フォルダのsetup.pyから入れる必要があるみたい Windows の SAPI ってローマ字にする機能無いんだっけ すみません。
Anacondaをインストールしようとしましたが、
Error loading Python DLL 'C\Users\(ユーザー名)\AppData\Local\Temp\_MEI48562\python 39.dll’,
LoadLibraly:指定されたモジュールが見つかりません。
と出て途中でインストールが止まってしまいます。
_MEI48562というフォルダを探してみてもまだ作成されていないのか見つかりません。
どうすれば解決できるでしょうか? 使ったこともないが
anaconda Error loading Python DLL
でググって最初にでた記事
https://community.anaconda.cloud/t/installation-problem-error-loading-python-dll/32442
こんなところで聞くよりこの公式Communityに行くべき 30代Pythonクソチョン男は強姦魔の犯罪者!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! dictとlistが入れ子になって
list()してもdict()してももうどうにもならん
一回バラして空のdictから作り直すしかないんか
どんどんスパゲティ化していく…
どうしてこうなる >>676
素直にデータ管理クラス作ったほうが良いんじゃないか A = []
B = [A]
C = [B]
A.append(C) # 消したらバグる 書いたコードがどう動作するかの想像と現実がかけ離れてるかんじ?
なにするにもオーバーヘッドかかるんで
Cのようにデータと操作の量だけで単純に導き出せないから
numpy使うかPyPyやCythonで書き直すのも手 >>680
pythonのライブラリって中身C++で実装してて
python自体はただのラッパーだって聞いたけど違うん? 速度を気にするんだったら
生のpythonはお勧めできないな
そういう言語ではないし
ライブラリを呼ぶか
高速化したい部分を c か c++で
書くのが現実的 >>682
付属ライブラリはPythonで書かれてる
だからライブラリのソース読むとPythonの勉強になる
CやC++は宇宙人用の言語だから普通の人にはわからんからな numpy が C/C++ で描かれてるからと言って
それ以外の python の library や module が
python で描かれてるってことにはならない 最近始めた初心者です。お願いします。
jupyterでブラウザを立ち上げることは出来るようになったのですが
ブラウザの立ち上げる前に毎回、from selenium import webdriver と入力しないといけないのでしょうか? そういうときは
jupyter import 自動
とかでググるかAIチャットで聞いてみるんよ ありがとうございます
ChatGPTを使って進めているのですが、これだけ理解できずこちらで聞いてみました。
自動化は皆がやっていることなのですね。参考になりました ならスクラッチパッド的に試行錯誤したいとき何つかってるの?
vscode用拡張をMS自身が用意してくるほどにはみんな使ってるよ seleniumとかはjupyterが適してるんじゃない?
毎回初めの画面遷移から確認するのだるいじゃん
あとpandasでちゃちゃっとデータ整形するのもjupyterなしではやってられない。
まだjupyterなんか使ってるの、という人は上記のようなケースではどうやって書いてるの?disじゃなくてよりいい方法があるなら乗り換えるから知りたい USBにはデバイスとホストがあるようなのですが、PC1からPC2のハードディスクのデータにアクセスして
PC1にコピーするには何から考えたらいいでしょうか?
PC2はデバイスポートを持っていてPC1をホストとして接続が出来そうに思うのですが、方法がわかりません。 >>699
ファイルのコピー程度であれば、USBやpysmb等を扱うまでもなく、
OSの機能を使ってPC2のハードディスクを共有し、
PC1からそのPC2の共有ディスクをopenし読み込みPC1に書き込むむ、で
よいのでないのかな と思ったが、Linux同士ならできるがWindowsだと無理だったなスマソ >>700
ありがとうございます。
それはLAN経由という事ですか?
PC2はLANに接続できない(禁止されている)ので出来ればUSBでデータを抜き出したいのです。 PC2でUSBデバイスとなるプログラムを動作させれば実現できるし市販品もあるが
それもれっきとしたLANなのでEthernetじゃないからというのは詭弁 馬鹿の書くLANの意味は何だろうな
馬鹿だから社内ネットワークのことだろうな 仕事の質問を5chでするって時点で
セキュリティ的に何か重大な問題を抱えてそうな予感 github actionsでpipのキャッシュを使うようにしてパッケージインストールするようにワークフロー書いたんだけど、パッケージのインストールが早くならない
pipのキャッシュってパッケージのファイルが置いてあるからパッケージのインストールが早くなるという認識でええんよね(´・ω・`) ダウンロードサイズが大きくなくて効果が薄いか
pathの指定がまちがってんじゃない?
作業中keyを変えてないなら古いキャッシュみてるとかね
よくわかってないなら野良のAction使うかコード参考してみ Threadの仕様がゴミみたいなんだけど、ほかの言語みたいに同じコードを個別に動かすこと出来ないの? >>708
multiprocessingモジュール使えば出来る。 >>709
句点らしからぬ珍答
>>708
ほとんどのモジュールがGILに引っかかって意味ないから
できる構造になってない
もし非同期処理書きたいならasyncioをつかう >>711
並行処理(concurrent)なのか、並列処理(parallel)なのかわからんけど、parallelの方はmultiprocessingでそんな問題ないけど。
ワーカープロセス作ってコア数で殴ってjoinとか普通にできるよ。
真剣に高速化したいならPythonで書くなみたいなツッコミはともかく。 --------A.py-----------
str = 'Hello, world'
----------------------------
--------B.py-----------
bb=1
import A
str = A.str
print(str)
----------------------------
py B.pyで実行
pythonで変数を別ファイルに渡すでググるとだいたい上のようなサンプルが出てくるけど
逆にA.pyでB.pyで定義した変数て読める? または、共通して使いたい変数をまとめたモジュールを作るとかね。settings.pyとかconstants.pyとか 30代Pythonクソチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう! global付けなくても関数内でグローバル変数使えるのなんとかならないんかな
原因つかめなくて1時間ハマった… win11 VScodeです
同じraw文字列を記述してるつもりなのですが、rとRで色が変わるのは何故でしょうか?
https://i.imgur.com/D70ljpl.png >>720
大文字は定数扱いになるんじゃない?
Pythonあんまり関係ないけど text = input('入力しろ')
if text.isdigit():
print(100 - int(text))
2行目のisdigitで整数かどうか確認してるのに?
なぜ3行目のintでも整数化するの?
すでに整数なんじゃないの? int(float(text))
の方が良いらしい 指定したフォルダのdatファイル全文検索してimgurの文字を抽出して、重複廃除して、画像や動画を全てローカルに保存するpythonファイル誰か作ってくださる神はおられませんか?
imgurの無慈悲な全画像削除反乱に対抗してくださる神様お願いします コーディングが目的じゃないなら
pg/ag/ggrepあたりで抽出してwgetやcurlへ渡せば済む話 >>726みたいなのは、今はやりのCatGPTに投げると即興でコード書いてくれるんじゃね 動的計画法の実装で
dp[n+1] = dp[n]
じゃなくて
dp[n]=dp[n-1]
って書いてる人が多いのなぜ?
漸化式ってa(n+1)=a(n)+bで習うじゃん普通… >>726
そういうの数万円の低予算で請け負ってくれる人いるから
サイトから依頼しましょう >>732
本質的に同一視できるし気にせんけど
関数にした場合に仮引数で n+1 と書けないから タブ区切りのテキストファイルをpandasでエクセル(xlsx)出力しても、
エクセルやopenpyではタブ区切りされずに1列目に全データが表示されてしまいます。
各列のセルに区切るようにするにはどうすればよいでしょうか。 import pandas as pd
# タブ区切りのテキストファイルを読み込み
df = pd.read_csv('input.txt', sep='\t')
# Excelファイルに出力
df.to_excel('output.xlsx', index=False) >>736
ChatGPT(bing chatではない)使ってないならそういう質問そのまま投げてみなよ
理由もコードもその解説も全部出してくれるよ >>737
実際に吐き出されたxlsxをエクセルで開いたらタブで区切られませんでした。
既に試した方法ではあるのですが、やはり区切られませんでした。
# タブ区切りのテキストファイルを読み込み
df = pd.read_csv('input.txt', sep='\t')
# Excelファイルに出力
df.to_excel('output.xlsx', index=False) 本当にタブ区切りなのか?
print(df)でちゃんとカラム分かれてるん? ネット上で探すとselenium経由でスクレイピングして
パーサーにbeautiful soup(bs)って流れが多いんですが
bs単体でgetしない理由なんなんですか?
ってここまで書いて思ったけどjavascriptの扱いが問題あるか それも大きいし
巡回部分のコードをある程度自動生成できる >>739
dataframeにどう格納されてるか確認してみたら? >>741
そういう動的な要素の部分もあるかもだけど自分はjavascriptに格納された変数なんかもbsで抽出してなるべくselenium使わない方法を考える
どうしてもselenium使うとこはakamaiなんかのBOT対策入れてるとことかかな。
sensor_dataの生成部分となは再現かなり難しい 「text = ''」 これってどういう意味?
また、これをネットで調べようとしたらどうしたら良いですか?
下の2行目にあるやつです
from pathlib import Path
text = ''
current = Path() 「text = ''」は、Pythonプログラムの中で変数「text」を定義し、それを空の文字列で初期化していることを意味しています。
つまり、プログラムの中で「text」という変数を使用するために、最初に空の文字列で初期化する必要がある場合に使われます。
ネットで調べる場合は、Pythonの「text = ''」の意味を検索エンジンで検索してみることができます。また、Pythonのドキュメントやチュートリアルなどの公式リソースを参照することもできます。 >また、Pythonのドキュメントやチュートリアルなどの公式リソースを参照することもできます。
これ次に投げたら該当箇所おしえてくれるん? ChatGPTはPythonの学習にかなり有用だよね
グーグルだと質の低い個人ブログとかたくさん引っかかって
その中から自分で厳選しなきゃならん
一発でこうした簡潔な進言をしてくれるとかなり助かる div div div div li div divみたいな時に
目的のattr見つけるの骨折れるんだけど
サクッと見つけてfindallでぶっこ抜くテクニックみたいなのある? >>754
書き方分からないときにめっちゃ参考になるわ
摘まんで取り込む >>755
まんま、div li div[attr] みたいな曖昧なセレクタで検索すれば良くない? https://www.youtube.com/watch?v=VRFfAeW30qE
youtubeでスクレイピングを勉強していたのですがid取得が上手くいかず、ずっと調べてたら
Seleniumのバージョンが4になってからfind_element_by_idのメソッドが使えないことが原因でした。
ほかに似たような注意点がありますか?あと今学ぶならどこのサイトがいいかよろしければ教えてください。
ChatGPTにもしつこく聞いて2週間悩んでいてやっと解決・・・ find_hoge(By.hoge, txt)
に変わっただけでは? hrefが何度やっても取れなくて詰んだかと思ってたら
html.parserのせいだったわ
使用非推奨だろこれ… おはようございます
pythonの組み込み関数でsum()関数を調べたのですが
公式ドキュメントを見てみました。そしたら
sum(iterable, /, start=0)となっているのですが
真ん中の/って何なんでしょうか
sum([1,2,3], 0)の呼び出しは理解できます
sum([1,2,3], /, 0)と呼び出すとエラーになります
(第二引数に初期値と解説されたりするのですが)
/は第二引数だと思うのですが一体どうなってるのでしょうか
教えてください >>762
スラッシュより前は位置引数
後ろはキーワード引数 >>763
>>764
ご指摘ありがとうございます
4.8.3. 特殊なパラメータ
にたどり着きました
市販の入門書、解説書には書いてないことでした
ここで質問の回答いただけなかったら一生わからずじまいでした
ありがとうございます interaction.py でfooが正常に動いてbarがデコレータの処理に失敗する理由がわかりません…
https://techiedelight.com/compiler/?0D2o
「そんなライブラリ知らん」って方が多いと思うので、関数定義箇所によるの挙動の違いだけでも解説してもらえるとありがたいです
main() の中で関数定義してるだけでそんなに変わるものなんでしょうか >>726
Ruby なら、
https://paiza.io/projects/_Vy4rDrV3B2Z_5P7BZGtpw
出力
https://i.imgur.com/a.jpg
https://i.imgur.com/b.jpg
この行区切りのURL をファイルに保存したら、
wget, curl で、このリストを使って、
適当にwait しながら、ダウンロードする
もちろん、Rubyのopen-uri のopen( ) でもダウンロードできる Anacondaからselenium使えないし
通常環境だとNumba使えないし
どうしたらいいんだこれ
とりあえず一時ファイル作って切り替えてるけど
Pypyとかなら同時併用できるの? SELECT YEAR
すると2018って出るし
print(df['YEAR'])
すると2018って出るのに
df = pd.read_sql_query(query, conn)で持ってきたデータフレームに
df.drop(['YEAR'])すると"['YEAR'] not found in axis"っていわれてはげそう
XY軸間違ってんのかと思って.to_frame().Tしてもダメだった
これpandas側ののバグですよね?どうしたら回避できるんですか? >>769
どう考えても君のバグだよw
dropのリファレンス読みなよ windows10でアプリの自動ログインをしたいのですが色々あって悩んでいます。
PyAutoGUIとPower Automate Desktopならどちらがおすすめですか? 二択なら両方試して使いやすい方にしたら?
そのアプリへの入力がSendKeysやWMで済むのか
もっと高度でないとダメなのかも不明だし >>772
ありがとうございます。
取り敢えず自分で動かしてみます。 python+pulpで勤務シフト作成の自動化をしようと思っています。
MDS = [(m, d, s) for m in range(len(MEMBERS)) for d in DAYS for s in range(len(SHIFTS))]
x = pulp.LpVariable.dicts("x", MDS, cat="Binary")
で0-1意思決定変数xを定義し、メンバーmが日dにシフトsを取ることをx[m,d,s]=1、取らないことをx[m,d,s]=0と表現します。
あるシフトを取った時はそのメンバーはその日に他のシフトは取れません。
例えばメンバー1が2日にシフト0の時はx[1,2,0] = 1,x[1,2,1]=0,x[1,2,2]=0となります。
「どの連続する2日を見てもメンバーm=1,2,3,4のうちの誰かが2日連続でシフト0でないシフトを取っている」という事を制約条件に加えたいです。
for d in DAYS[1:]:
prob += pulp.lpDot(([1-x[1,d-1,0],1-x[2,d-1,0],1-x[3,d-1,0],1-x[4,d-1,0]]),([1-x[1,d,0],1-x[2,d,0],1-x[3,d,0],1-x[4,d,0]]))>= 1
と書いてみたのですが、Non-constant expressions cannot be multiplied.のエラーが出ました。
どのように書けば良いでしょうか。 WindowsでJupyterNotebookを使って大きいデータを扱うと終了後にファイル容量が増えていくんだけど、
作業フォルダのcheckpointsやhistory.sqlite以外に勝手に作成されているファイルって有りますか? bytesとstringの違いってなんですか?
bytesからdecodeできるのがstring? https://docs.python.org/ja/3/library/stdtypes.html
まず読んで
bytesはディスクや通信など外部データのバイト列そのもの(正確にはバイト列を包んだもの)
strは文字列、高次元の情報なのでPython外に直接持ち出せないため符号化する必要がある コンピュータ技術の根源だから実は難しいんよね
自分も何十年もこの世界にいるけど
いまだにテキストファイルとバイナリファイルの違いが説明できないし 初学者なんだが[apple, banana, nut, mangosteen]というリストを文字の少ない順に並び変えてリストを再構築せよっていう問題
習ったことをあれやこれやで3時間くらいかけて作ったのがこれ
↓
https://ideone.com/e5Zk2C
解答みて唖然としたね
いやぁなんか相当遠回りな損した気分 >>779
そういう経験大事よ
次から思考回路変わるから >>776
その理解で間違ってないよ
バイト列を特定のエンコーディング(符号演サ方式)を使って文字列として扱うための型がstringやstrと呼ばれるもの
pythonのstrの内部的に持ってるのはUnicodeのcode pointで表示したり保存したりするときに指定のエンコーディングを使う(デフォルトはUTF-8) >>779
俺氏も似たり寄ったりだわ
L = ['apple', 'banana', 'nut', 'mangosteen']
# 文字数 M = [5, 6, 3, 10]
M = [len(n) for n in L]
# 配列 ML = [[5, 'apple'], [6, 'banana'], [3, 'nut'], [10 'mangosteen']]
ML = [[M[i], L[i]] for i in range(len(L))]
# 文字数でソート S = [[3, 'nut'], [5, 'apple'], [6, 'banana'], [10 'mangosteen']]
S = sorted(ML)
# リストから要素を抽出して新しいリストを作成
result = [n[1] for n in S]
print(result) 単純にソートすればええやんと思っちゃうんだが
ソートに関数を渡すという感覚を持ち合わせてないということなのかな? ソートを使うと計算量がn^2になってしまうから
配列のインデックスを文字列長にして
配列の内容をリンクドリストにして
追加しておくようにすれば
計算量が2nで済むけど
プログラミングは誰かに任せる >>785
rubyなら
a = ['apple', 'banana', 'nut', 'mangosteen', 'bbb']
p a.each_with_object([]) {|x, a| (a[x.size] ||= []) << x}.compact.flatten
↓
["nut", "bbb", "apple", "banana", "mangosteen"] >>785
timsortが要素数が少ないときにn^2になるinsertion sortを使うのはその方がn log nのmerge sortより速いから
それにそのアルゴリズムは実速度が遅くなることを抜きにしても文字列長をインデックスにした配列の長さmをオーダーに入れる必要がある jypyterで再起動するごとにdataframeの列が上下ひっくり返る謎現象に悩んでたけど
通常のコードにしたら謎に解決した
意味わからん ソートのキーに文字数が指定できるという衝撃
実務でも使うのかな? >>789
文面にあるほどの特殊性はない
比較可能な値を返す任意の関数を指定できるだけ sort関数使わずに苦労したのかと思ったら使ってはいるんだな
https://docs.python.org/ja/3.10/library/stdtypes.html#list.sort
にあるソート HOW TOに色々書いてある
L.sort(key=lambda x: len(x))
>>789
関数オブジェクトを渡すことは珍しいことではない >>791
L.sort(L, key=len)
sorted(L, key=len) >>791
そのlambdaは余計
>>789
関数の受け渡しはめちゃくちゃ使う LとかMみたいな命名はなるべく早く卒業したほうがいいぞ
lやmも同様 >>791
そう
sortを学習したのに変な遠回りを踏んでしまった... >>795
具体的にどういう命名がいいんですか?
なんか数学の癖でよく使うlだのmだの置いてしまう 名前だから伝わってなんぼ
理解を妨げないなら略記でもOK
でもPythonが提供する識別子には略記がほぼないことを考えてほしい
一方で>>791のlambdaのxは局所的なので長々命名する方が不適 Ruby なら、sort_by でシュオーツ変換なので高速。
sort はO(N^2)
input_fruits_ary = %w(apple, banana, nut, mangosteen)
# 文字列数の少ない順でソート
input_fruits_ary.sort_by! { |fruit| fruit.length }
p input_fruits_ary
#=> ["nut,", "apple,", "banana,", "mangosteen"]
# 文字列数の多い順でソート
input_fruits_ary.sort_by! { |fruit| fruit.length * -1 }
p input_fruits_ary
#=> ["mangosteen", "banana,", "apple,", "nut,"] 確かにlenだけでよかったね、lambdaもあるよっていう事で許して >>799
rubyなら
a = ['apple', 'banana', 'nut', 'mangosteen', 'bbb']
p a.sort_by(&:size)
↓
["nut", "bbb", "apple", "banana", "mangosteen"] pickleファイルの他のクラスから読めない制約知らんかったわ…
先に教えてくれよ… rubyは無いわ
>>802
回避方法も同時に解説されてるふぁ すみません、pythonのべん今日のために数独のプログラムを作ろうとしていますが、
以下のコードで、なぜかbreakを読み取ってくれません
下らないミスだとは思いますが、ご指摘お願いします。
コード:
https://pastebin.com/fzN186CM
実行結果:
[1, 5, 0, 0, 2, 0, 0, 9, 7] for内にprint(i)入れたらすぐわかるよ
デバッグはVSCODEあたり使った方が圧倒的に便利だよ ありがとうございます、解決しました
VSCODEも試してみます プログラムの勉強こそ、ChatGPT活用したほうがいいよ >>807
それな
以前、「特定のフォルダを監視して新たに保存されたファイル名を
DBに格納していく。ただし監視中にCPUを占有しないこと」という
コードを書きたくて質問したことがあるけど
ChatGPTに同じ質問を投げたら、何とそのまま動くコードが返ってきてビビった >>532
''.join( "s_i_t_e:ko_kk_ai.n_dl.go.j_p 朝_鮮".split("_") ) >>803
中身定義しないでpassだけ書いてもロードできたから
クラス名書き換えるだけのスクリプト書いてなんとかなったわ
スペルミス直すだけで苦労するとは… >>810
> プログラムの勉強こそ、ChatGPT活用したほうがいいよ
ChatGPTはバカ専用なので、
自分でググッたほうが良い
>>811
それはお前がバカだから。
ChatGPT4スゲー!とか言ってるの低脳w 【動画】「憲政史上初」国会でChatGPTが岸田総理に質問(2023年3月29日) | ANNnewsCH
ps://www.youtube.com/watch?v=o1zv1cxt9G0
ChatGPTトップ「政府の規制が重要」議会初証言で|TBS NEWS DIG | TBS NEWS DIG Powered by JNN
ps://www.youtube.com/watch?v=C85FOvn_woE
第211回国会 衆議院 内閣委員会 第9号 令和5年3月29日 | テキスト表示 | 国会会議録検索システム シンプル表示
ps://kokkai.ndl.go.jp/simple/detail?minId=121104889X00920230329&spkNum=16 import webbrowser
lst = [ ['htt','ps://','www.youtube','.com/watch'],
['?v=','KkwWALkuYOM'],
['&list=','PLBjMF7sSdVpiSnddPZsfTEOjOZUD4ftCa'] ]
link = "".join( ["".join(e) for e in lst] )
print( "韓国による嘘[・・・日本が朝鮮にした恐ろしいこと?] | tokinomori13",
link, sep="\n")
webbrowser.open( link ) トロイの木馬みたいなコードを書くなら、もっと精巧にやってほしいよな。
そんな見ただけで結果が明らかなコード書かれても何も面白くないじゃないか。 LogicクラスとCreateクラス作って
MainクラスからLogicクラスのインスタンス作って
LogicクラスからCreateクラスのインスタンス作って
Mainからlogic.hoge()しても実態はCreate.hoge()読んでるだけだったりするとき
もうMainから直接インスタンス作れば良いんじゃないかって思ったりする訳ですが
何重にもラッパー作る意味ってなんですか? コードの例え話は好きではないんだけども
八百屋で野菜買いたいだけなのに仕入れとか栽培まで考慮したくなくない?
やりたいのは夜ご飯をつくることなのに
関心事を適度に分離して役割分担するのが
リアルでもコードでもシンプルで上手くいくコツ >>1
print("IT業界のヤバすぎる落とし穴5選 | やまもとりゅうけん",
"htt" "ps://www" ".youtube.com/watch?v=" "WPPCJ4o-mpA", sep = "\n") >>811
自分にアンカ付けてバカとか言ってるw
てかChatGPTとGPT4の区別が出来てない時点で分かってないんだろうなw pdfminerでページごとにテキストを抽出しようとしているのですが、
Aの抽出にすると何故か次ページの情報まで含まれてしまいます。
Bの方法だとちゃんと該当ページの情報だけになるのですが、
テキストグループ単位で改行されないのでちょっと都合が悪いです。
Bの方法でテキストグループ単位でセパレートすることはできるのでしょうか?
A: device = TextConverter(rsrcmgr, retstr,codec=codec,laparams=LAParams())
B: device = TextConverter(rsrcmgr, retstr,codec=codec) とりあえずは自己解決しました。
PDFの方で非表示情報を削除することで解決しました。 http://mevius.5ch.net/test/read.cgi/tech/1680075092/89
[Python]の例が気になったんですが、
この書き方は普通ですか?もっとエレガントに書くとしたらどうしますか? シンプルに書くと
"-".join(map(str, sorted(a, reverse=True)))
右から左の流れで書くなら
"-".join(str(x) for x in sorted(a, reverse=True))
エレガントかは自信なし pythonにエレガントさを求めるのが間違い
"-".joinの時点ですでにエレガントじゃないから諦めろ なんで リスト.join() じゃなく
文字列.join(リスト) にしたんだろうな。
.split()なんかに対して、直感に反してる気がする。実際に他言語はリスト.joinだし この言語は完全に行き詰まってるから
ゴキブリに乗り換えるしかないな # >>812
text = '''
国会会議録検索システム
ps://kokkai.ndl.go.jp
帝国議会会議録検索システム
ps://teikokugikai-i.ndl.go.jp/
国会会議録検索システム シンプル表示
ps://kokkai.ndl.go.jp/simple/
帝国議会会議録検索システム シンプル表示
ps://teikokugikai-i.ndl.go.jp/simple/
国会会議録検索システム ヘルプ(使い方ガイド)
ps://kokkai.ndl.go.jp/help.html
APIの利用|国立国会図書館―National Diet Library
ps://www.ndl.go.jp/jp/use/api/index.html
site:kokkai.ndl.go.jp python
'''
print(text.replace("ps://","htt"+"ps://")) text = '''\
蛇 -filetype:pdf site:teikokugikai-i.ndl.go.jp\
'''
lst = text.split('\n')
for line in lst: print( text, lst, ' '.join( line.split()[::-1] ), sep="\n\n" ) 初心者です。よろしくお願いします。
チャート画像をスクレイピングしたいのですが上手くいきません。
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
browser = webdriver.Chrome('chromedriver.exe')
url = "https://jp.kabumap.com/servlets/kabumap/Action?SRC=chart/base&codetext=4449"
browser.get(url)
sleep(10)
elem_img = browser.find_element(By.ID, "gifChart_img_real")
elem_img
デベロッパーツールでチャートのidを取得したのに
NoSuchElementException と出ます。
どうすればよいでしょうか? shelveで定期的にsyncしてるのにコミットチャージが線形で増えていきます
適度にdel挟まないといけないのでしょうか? >>830
gifChart_img_realはiframeの中にあるので
iframe = browser.find_element(By.ID, "chart_frame")
browser.switch_to.frame(iframe)
してから取得する Getting Started with Headless Chrome - Chrome Developers
ps://developer.chrome.com/blog/headless-chrome/
Chrome’s Headless mode gets an upgrade: introducing `--headless=new` - Chrome Developers
ps://developer.chrome.com/articles/new-headless/#-virtual-time-budget
"C:\Program Files\Google\Chrome\Application\chrome.exe" --headless --disable-gpu --virtual-time-budget=10000 --window-size=1920,2100 --screenshot=c:\Pictures\screenshot-21.png "スクリーンショットを撮りたいページのURL" >>832
出来ました。
frameに切り替える必要があるなんて初めて知りました。
本当にありがとうございます。 # >>828-829
site = '''\
外務省
G7広島サミット\
'''
url = "htt" + "ps://www.mofa.go.jp/mofaj/ms/g7hs_s/page1_001673.html"
print( site.replace("\n", " > "), url, sep="\n" ) スレとはあんま関係ないかもしれんが、デバッグの方法やらテストの方法やらってどこで学ぶの?
vscodeにその機能があるらしいとは知っててもろくに使えない
使い方やコツみたいなのあったら教えて >>836
vscode python デバッグ でググる Debugging configurations for Python apps in Visual Studio Code
ps://code.visualstudio.com/docs/python/debugging 計算処理しかしたことないけどデバッグはprint関数を置きまくって、実行はステップ実行。
ステップ実行もしないけど。
vscodeのステップ実行はブレークポイントを設置したところからしかできないようだ。 >>833
>C:\Program Files
じゃなくて、
C:\Program Files (x86)
じゃないの? 画像をスクレイピングする場合、
ブラウザを立ち上げず、リクエストライブラリを使用するのと
ブラウザを立ち上げて行う2つの方法がありますが
どちらが良いのでしょうか? >>841
状況次第
まずはブラウザが必要かどうかを判断すること >>842
すみませんがわかりません。
必要かどうかはどうやって判断するのですか? 言い換えになるけどリクエストライブラリで事足りるかどうか
一般的にはブラウザ経由の方が処理時間やコストが増えるから避けるけど
そんなの困ってないよってならわかりやすい方のがいい
混在させるよりブラウザのみの方が統一感あるかもしれんし(しらんけど) >>843
リクエストライブラリってのは
簡単に言うとHTTPのGETやPOSTしかできないわけ
ログイン処理が必要ならブラウザを介して入力フォームにIDとパスワードを入力してログインボタンを押すのとは違って
ログインボタンが押されたときに発行されてるPOSTリクエストを自分でHTTPリクエストを組み立てる必要がある
さらにログインが成功したときのHTTPレスポンスに含まれるログイン済みを示す情報を引き継ぎながら次のリクエストを発行しないといけない
要するにブラウザがHTTP通信以外でやってくれてることをブラウザを使わずにやるかブラウザを使ってやるかの違い >>844
>>845
ありがとうございます。おそらくですが理解できました。
勉強不足なのでしばらくはブラウザを立ち上げての実行にしていきます。 画像URLの抽出にログインやJavaScriptの実行が不要なサイトならRequsts使った方が簡単かもしれないよ
スクレイピングをそこそこやるなら両方やっとくといいと思う >>840
ショートカットのリンク先が"C:\Program Files\Google\Chrome\Application\chrome.exe"だった
環境によって違うかも 画像のURLぶっこ抜いてHTML生成してブラウザ表示してSaveAsするのが一番無難
あまり変な動きすると察知されて対策されることがある スクレイピングをしていいサイトかの確認は
サイトのメインURLにrobots.txtを追加しての確認以外にあるんでしょうか?
利用規約もなく、見つからない場合は不可なのですかね >>850
電話とかメールでスクレイピングしても良いですか?って聞いたらいいよ pipかcondaかでなく
ryeとかいうpython環境構築、管理コマンドが出来てるのか
バージョンも揃えやすいと >>850
Webサイトって人間が手でブラウザを操作すること前提に作られてるわけで、スクレイピング歓迎なんてサイトはないと思うよ
データ提供目的なら最初からFTPとかAPIを用意するでしょ python3.10を使用しているのですが、以下のコマンドは成功します。
pip install psutil==5.9.5
しかし、「psutil==5.9.5」とだけ書いたrequirements.txtを用いた以下のコマンドは失敗します。
pip install -r requirements.txt
エラーの内容は以下のとおりです。
なぜこのような違いが発生するのでしょうか…
ERROR: Could not find a version that satisfies the requirement psutil==5.9.5 (from versions: none)
ERROR: No matching distribution found for psutil==5.9.5 >>839
printじゃなくてlogging.debugを使うと後々楽 >>855
pip freeze > requirements.txt
で出力したら
モジュール名[半角スペース]==[半角スペース]5.9.5
とかになってますかねえ
半角スペース入れたらどうなりますかね relativedeltaって、たとえばmonths=1とかで翌月同日(なければ直前の日付)を求める場合、加算元のdatetimeの値に応じて振る舞いが変えられるのはどういう仕組みなの?
datetime.now() + relativedelta(months=1)みたいなケース。
datetime.now()の値によって、timedelta的な値が変わる(加算すべきdaysが31だったり30だったり)のが不思議で仕方ないのだけど。 >>858
2023/06/02なら内部的に2023と6と2を値として持っておいて
+relativedelta(months=2)なら内部的に持ってるmonthの値を+2すればいい
計算後のmonthの値が0以下や13以上になれば上の桁に計算が繰り上がる 2か月前にパソコンを買い2週間前からPythonを学び始めた初心者です。classを使用しpygame.image.load("")などを使って画像を表示しようとしたところエラーはどうにか解決できたのですが解決した後実行しても画像が表示されません。
なぜなのか全くわからず困っています。なにか教えていただけると幸いです。 >>859
質問の書き方が悪かったのと、勘違い的なものもあるかもだけど、
datetime(2023,5,31) + relativedelta(months=1)
→6/30(同日が無いから6月の最後の日)
datetime(2023,7,31) + relativedelta(months=1)
→8/31
この結果になるのは分かる。
ただそもそもdatetimeのtimedeltaにはmonth(月の加算)の概念が無いからrelativedeltaを使うのだけど、単なる加算演算子で演算してるだけなのに、relativedeltaは加算元の値に応じて加算すべき日数が分かるのはなんでなのかな、という話。
たとえば
hoge.addMonth(datetime(2023,5,31), 1)
というメソッド(関数)で返るなら分かりやすいんだけど、+ という演算子だけで加算元を考慮した結果が得られるのが理解できてない。
これって、加算演算子だけど、内部的には上のaddMonthみたいな関数が呼ばれてる感じなのかな??
余計に分かりづらくてすみませんね。 >>861
そういう話だったのか
演算子がどう解決されるかを知ると納得できると思う
x + yならまずx.__add__(y)が呼ばれる
このメソッドが実装されてないもしくはNotImplementedが返されたら
次にy.__radd__(x)が呼ばれる
これも実装されてないもしくはNotImplementedが返されたらエラーになる
今回のケースの+演算子はrelativedeltaの__radd__経由でrelativedeltaの__add__が呼ばれる >>862
なるほどー!そういう挙動をするのかー
勉強になりました。ありがとう >>860
画像ファイルへのpathを絶対パスで指定する import os
filepath = os.path.abspath( 'pygame.png' )
print( filepath ) ぱいソン、
なんでもできる言語だと聞きましたが
ブログとか作ろうと思ったら
HTMLのほうがいいんですか?
JAVAの人気もそうですが、
パイソンが出てきても他の言語が駆逐されてないんですね… >>866
そのレベルならとりあえずChatGPTに相談したほうが早い >>866
基本的にほとんどの言語はなんでも出来る言語だけど、
得意不得意がある
すごくいい加減な情報量の話になるんだけど、複数の言語の同じ文字数で出来ることは、機能をどのように圧縮表現するのかということになって、圧縮アルゴリズム(言語仕様のことだけど)によって得意不得意が出てくるという感じ
PNGはロゴに向いてるけど写真には向いてない、JPEGは逆、みたいなね
Pythonはなんでも簡単に出来るけど、CPUの性能を最大限に出すのは無理な言語。簡単に出来ることに全振りしている 切ろうと思えばハサミでも大根切れるが包丁使ったほうが楽みたいな話
銀の弾丸みたいな言語は存在しない 『慰安婦像を世界中に建てる日本人たち』
を読んでみたまえ。
在日中国人と在日朝鮮人、韓国人を、
排除して国外追放すべきという主張が全く正しいと
納得していただけるはず。
在日中国人、在日朝鮮人・韓国人、
そして日本国籍を取得した二世、三世を含めると
約500万人である。
有名新聞社やテレビ局の社長も在日系がいる。
もちろん政治家にも二世、三世がいる。
追放すべきだ!
IT企業の社長は在日だらけ。
注意せよ! 関数のデフォルト引数は、関数定義の時点で確定してしまうってマジですか
いや実際下記のコードだと1が2回表示されるんですけど、これ怖すぎませんか
自分、関数外の変数をパラメータとしてよく使うんで戦々恐々です
N = 1
def sample(S = N):
print(S)
N = 2
sample()
N = 3
sample() それは普通に引数で渡せよw
どうしてもデフォルト引数として使いたいなら
↓みたいにして実行時に外部スコープから値を取り込むか部分適用で新しい関数を返すようにするか
def sample(S = None):
if S is None:
S = N
print(S) def fun(hoge=[]):
....print(hoge)
....hoge += ['C', 'D']
fun()
fun(['A', 'B'])
fun()
fun() >>875,876
難しいですね
デフォルト引数は危険なので生涯使わないと決めました 多くの動的言語が、1級関数でクロージャだから、
関数外部の変数が、関数内部に取り込まれる。
だから、よくバグる
一方、Ruby だけは1級関数じゃないから取り込まれない。
関数内部のブロックをクロージャにしているだけ >デフォルト引数は危険
知らずに使うから危険なのであって
生涯使わないとかは過剰反応 >デフォルト引数は危険
知らずに使うから危険なのであって
生涯使わないとかは過剰反応 単に、変数の展開がどのタイミングでされるか?っていう、各言語の仕様によるものだよな。
それって当たり前に理解してなきゃいけないレベルの話では。
自分の思いこみと違うから危険とか、他言語と違うから危険とか、それは違うよなww
大多数の人の直感に反するから間違えやすい、というのとは全く別。 変数が展開されるタイミングの話と
値がすべての関数呼び出しで共有される話と2つあるよ
前者を注意しなければいけない今回の質問者のような使い方は他言語でもバッドプラクティスなので大きな不都合はない
後者はPython特有の落とし穴で他言語から来た人にとってはバグりやすいポイント デフォルト値を定義する機能なのに変数を代入してるのが謎だわ
この場合シンプルに
def sample(s=1)
で定義して使用する時は
sample() とか sample(N)
じゃだめなのか? >>884
変数というより、定数として定義しておいてそれを指定する感じで使ってる
Noneとかboolean以外で値の直書きはなんか嫌だなw >>884 は >>874 のコードに対してね
再代入してるから定数を意図して大文字の「N」という訳でもなさそうだし意図が分からなかった
自分もマジックナンバーを用いるのは嫌だけど、それも前後の文脈とかによると思う。
例えばポート番号を渡す関数を作るとき、
def foo(port=APP_PORT)
とか定義してあるより
def foo(port=22)
とか書いてある方が自分は逆に分かりやすいし、どこか他所で定義されてる APP_PORT が絶対に書き換えられていないっていう保証が Python では無いし。 >>885
この例は定数として使ってないから問題なのですよね >>884
>>874のコードの意図は、一つの関数を異なるデフォルト値で
使い回したいケースを想定しています
例えばプロ野球各チームの代表選手を一名ずつ入力させる処理があったとして
チームごとに知名度の高いスター選手をデフォルト指定してはinputを回して
空打ちされたらデフォルト選手名を使うイメージです
でもまあ、今後デフォルト引数は使わないのでもういいんです
お騒がせしました 関数内で完結してない時点で使い方おかしい
しかもそれだと毎年変わるだろ そういうのはインスタンス生成時にコンフィグを渡すか読み込むかしておいて関数呼び出し時に明示的に渡されなければコンフィグ記載のデフォルト値を使うというやり方をする
Noneを指定しておいて関数内で分岐するところは同じ デフォルト値を変えるって、
以前変えた値が生きてしまうとか
複数個所から使用した場合に他方へ影響が出てしまうとか
そういうのを想定しないってことよね
いいやり方じゃない気がする 風邪薬を飲みましたが腰痛が治らなかったので風邪薬は二度と飲みません >>888
そういう用途なら
class Sample(object):
def __init__(self, n):
self.n = n
def sample(self, s=None):
if s is None: s = self.n
print(s)
s = Sample(1)
s.sample()
s = Sample(2)
s.sample()
s = Sample(3)
s.sample()
観たいな描き方の方が良い def make_sample_func(n):
def sample(s=n):
print(s)
return sample
s = make_sample_func(1)
s()
s = make_sample_func(2)
s()
とかでもいけるかな。 windows11でアプリケーション自動起動のスクリプトを書く場合、pywinautoが良いでしょうか
どの言語が良いのか迷っています。 自動起動だけだったら標準機能のスタートアップとかサービスじゃ駄目なの?
そこから自動で何か操作するんだったらpywinautoでもいいのかもしれんけど ユーザー名とパスワードを入れてのログインなので
タスクスケジューラでは足りませんでした。
pywinautoをググってもあまヒットしなかったので
他の言語のほうがいいのか知りたく質問しました。 powershellからの起動を塞がれる可能性はあるけどpower automateの選択肢もあるかと Windows ならサービスマネージャー、Linux なら systemctl とか、OS の機能として登録するのが基本だと思うけど Python からやるなら pywin32 とか言うのがあるらしい。
pypi.org/project/pywin32/
qiita.com/Bashi50/items/1d98f80ccaa8746bff38
自分は使ったこと無いからよく分からん 関数を細かく分けてネストしているような時、最下層の関数で使う値を、上層の関数で制御や決定するような場合、引数のバケツリレーみたいになってしまうけど、こういうときは仕方ないのか、グローバル変数にして渡すべきなのか、どうなんでしょう?
例として、aiohttpのrequest関数にプロキシなどを渡す場合で、
A関数→B関数→C関数→D関数→aiohttp
(A関数でaiohttpのプロキシやヘッダの決定をする。B、C、D関数では使わない)
といったケース。
Reactでのpropsのバケツリレーみたいにあまり良くないみたいなイメージが。 個人開発でもgit使うべきなんだろうか
古いファイルimportして気づかず実行時エラー直らなくて困ってから思った >>903 正直そのコードがイメージできてないから何とも言えないけど、グローバル変数に抵抗があるならクラスにまとめるのも良いんじゃない?
コンストラクタインジェクションで必要な情報を最初にメンバとして与えて、あとは各メソッドで好きなように使う感じ。
メンバを参照する場合はメソッドの引数として渡さなくていいわけだし >>905
あーそっか!なるほど。
クラス(インスタンス)にスコープを閉じこめてしまえばグローバル変数使わなくて済みますね
まだ積極的なクラス化に慣れてないので思いつきませんでした。
ありがとうございます。 そりゃ使った方がいいと思う
Python関係ないが >>904
gitは使い出したよ
やっぱやーめたで戻りたり、機能追加するのに別ブランチつくってから統合したりくらいしか使ってないけど pypiにモジュールうpしてみ
嫌でもgit/github覚える gitは大規模分散開発向けだから一人開発に使うには大げさ
Subversionがおススメ 個人の超小規模な開発でもgit使ってますわ
ブランチやコミットメッセージは適当だしgitホスティングサービスも使ってないけど 個人でもgit使ってるなー
たまにしか使わないような環境構築の手順のメモとかでもマークダウンで書いておいてホスティングサービスにプッシュして保存してあるから外から見れるのが便利
SVNは過去に使ったけどGitに移行するときに「同じ用語だけど意味が違う」みたいのがチラホラあって苦労したのもあって触らなければよかったとさえ思ってる 今さらSubversion使うってのはさすがにないわ… 1人開発だからSubversionが適してるなんてことないよ
GitもSubversionも知らなくて、どちらも学習コストがかかるなら圧倒的にGitをお勧めする
というかSubversionの方が運用が難しいと思うんだよな。 適不適ってよりsubversionって開発まだやってんのか? gitあんだしもうとっくに開発終わってLTSの保守みたいなことだけやってんだと思ってた
公式行って開発メーリングリスト見たら件数全然だし、そもそもロードマップの冒頭に次のリリースの予定は現在ありませんなんて書いてあったんだが pickleの仕様が意味わかんないんだけど
class aでpickle.dump(dataclass)したファイルを
別のディレクトリにあるclass bからpickle.loadすると
attribute errorになるのはなぜ
同じdataclassはimportしてるからデータ構造一致してるじゃんか… >>921
iPhone用ですね㌧
PythonはOS関係ないみたいに聞いていたのでPCに入れたのがそのまま入るのかと思ってたんですけど、それぞれあるんですね。 カレントフォルダAの下階層Bにあるa.pdfを開く場合の指定を教えてください
open("/B/a.pdf"., "rb")
かと思ったら違いました 何度もすみません
PyPDF4を使って、inputフォルダ内のpdfにしおりをつけてoutputフォルダへ保存したいのですが
すでにしおりが存在するpdfがあると処理が止まります
https://techiedelight.com/compiler/?09af
しおりがある場合はスルーする、または上書きするような処理はどう書けばいいでしょうか?
>>927
ありがとうございました >>928
PyPDF4入れてないし触ったこともないが、
https://assam-blog.com/python-pypdf4-bookmark/
上のリンクを見る限りparent=Noneが引っかかってるぽいかな。
parentが存在する場合はparent=parentにしないといけない様な。
とりあえずしおり追加をtry exceptで囲んでみるといい >>928
もしVSCODEとか使ってないなら入れた方がいい。 >>929
まさにそのサイトを参考にしました
try exceptでしおりがあるファイルをスキップできました、ありがとうございます
VSCODE入れて使ってみます
>>930
取り急ぎで人様のコードをつぎはぎ使わせてもらってるので、自分で最初からやるときは生きてるのを使います
最新のpyinstallerからもはねられてしまいました >>928
pypdfにあった2、3、4の分岐は全部元のPyPDFにマージされたみたいだけど >>813
print(
"{0}\n{1}\n\n{2}\n{3}".format(
"《7/12公開》【超拡散希望】やまと新聞 水間政憲の「国益最前線レポート」#19 「社会党議員が国会で問題にした韓国人の密入国問題 他」",
"htt"+"ps://www.nicovideo.jp/watch/so26687951?from=1395",
"第22回国会 衆議院 法務委員会 第23号 昭和30年6月18日|国会会議録検索システム",
"htt"+"ps://kokkai.ndl.go.jp/simple/txt/102205206X02319550618",
)
) @login_manager.user_loader
def load_user(user_id):
return testuser.query.get(user_id)
class testuser(UserMixin, db.Model):
__tablename__ = 'testuser'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True)
def __init__(self, user_name:str, password:str):
self.username = user_name
users = testuser.query.all()
が空のリストしか返ってこないのですが
なぜでしょうか?
db.create_all()で作られたsqliteのファイルにはSQLitestationで2行書き込んであるのですが 自己解決した
dockerの外のファイルに書き込んでたわあほだった VS Codeでpythonを書いてるんですがフォーマットしてもらえません
拡張機能のBlack Formatterを入れて、jsonは下記のように指定してます
https://techiedelight.com/compiler/?f802
で、以下のようなコードを書いて保存しても何も整形されません
(フォーマッタが効いてればちゃんと整形してくれるらしいです)
https://techiedelight.com/compiler/?ff9b
どうしたら整形してくれるようになるんでしょうか pipでblackをインストールしてターミナルからblackコマンド打ってpyファイルを読ませたらフォーマットできました
でもVS Codeで保存する際にフォーマットしてほしいです… >>937
これJSONって手動で設定した?
一回設定を初期化して、設定画面から一個ずつ再設定したら? >>939
一旦jsonファイルの中身をすべて消し、
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true
}
のみにしましたが動作しません
※上の2行は公式拡張のBlack Formatterの詳細に書かれていたもの
Black Formatterも入れ直しましたが改善せず >>940
だから直接編集せずにUIから設定せい言ってるやろがい!
https://i.imgur.com/AfxL82b.png
https://i.imgur.com/bkFAjaw.png
問題の切り分けとしてJSON設定のフォーマットミスが考えられる
(手動で編集してたらミスしてる可能性が高い)
だからUIで設定した時に、正しい内容どうやって記載されるかを確認して
それでもダメなら他に考えられる原因はなんだろう、って確認するんだぞ
>>941が言うように一番外側の括弧も無いし >>941-942
すみません、一番外側のカッコは省略してしまいました
また、UIから指定だと、Black FormatterのUsageに書かれている、
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
}
の指定ができないのではと思い記述していました
結果としてはvenv環境で実行しているのにインタプリタがvenv内のものでない(?)ことが原因だったようです
インタプリタをvenvのものに指定しなおしたらフォーマットされるようになりました
お騒がせしました pythonのopen関数でバイナリモードでpngなどのテスト用ファイルを開き
with open("xxx.png", "rb") as fff:
a=fff.read(16)として16バイト読み込んでいます
意味はないが練習プログラムであり16バイトずつ読み込みたいので
次の16バイトのために現在位置を記録してファイルクローズとしたい
そこでたどり着いたfff.tell()は16進数のようなものを返してくれるのですが
これを使って任意位置からまた16バイト読むにはなんらかの関数(メソッド?)に
これをそのままか10進数などに加工して渡したりできるものが存在するのでしょうか
というところで悩んでます、バイナリで読んだりシークする手段は他にもあるようですがまずは始めてしまったopen関数でなんとかしたい あ、あと格納した16バイトをprintすると…IHDR…などとpngのヘッダーのようなものが表示されて
よしよしと安堵していたのですが、文字で表示されるのは格納状態に問題ないか?とも思ったのですが
これはdebian(termux)の標準出力の仕様かprintの型の扱いの問題か混乱しています fff.tell() で読んだのをそのまま覚えておいて
次 open して読む前に seek すれば良いだけ
そもそも任意の位置から読むつもりなら前回の場所覚えておく必要も無いか これをseekに渡せるんだなるほどやってみようと思います
16進数を返すというのはなにか間違ってたかもしれませんどの参考サイトも(バイナリでも)単純な整数を返しているようだ
pngについてはまたどうしようもなくなって解決出来なければ質問しますありがとうございました >>946
docs.python.org/ja/3/library/stdtypes.html#bytes-objects
type(a)はbytesだとおもうので、そうであれば中身はバイト列になってる
docs.python.org/ja/3.11/library/functions.html#print
printはstr(a)した結果を出力してるだけ
docs.python.org/ja/3.11/library/stdtypes.html#bytes.hex
もし16進で出力したいなら前もって文字列変換する >>951
ありがとうございます
以下のように目的の勉強プログラムは走らせることがなんとかできました
file_r.py
https://i.imgur.com/v60xntR.png
fileoptest.py
https://i.imgur.com/NmFO1hH.png
実行結果
https://i.imgur.com/zI0U4BR.png
追伸、変な16進数を吐いていたのはf.tell()の括弧を忘れていて
それを入れたリストをprintしていたからのようでした😣 Ruby では、script.rb へ、以下のコードを書いた場合、
=begin
IO.read(path, length = nil, offset = 0, **opt) -> String | nil
ARGV[0] は、読み込むファイルパス
ARGV[1] は、読み込むバイト長
ARGV[2] は、読み込み開始位置・オフセット
=end
# バイナリファイルを読み込む
File.open( ARGV[0], "rb" ) do |io|
# ファイル先頭から、ARGV[2]バイト位置へ移動する
io.seek( ARGV[2].to_i )
# seek位置から、ARGV[1]バイトを読み込む
bin = io.read( ARGV[1].to_i )
out_text = <<"EOT"
ファイル #{ ARGV[0] } を読み込み、
オフセット #{ ARGV[2] } から、#{ ARGV[1] } バイトを出力する
EOT
print out_text + "\n"
p bin
end
次へ続く なぜ続きがないのか…
寝て忘れたか、janeに切り換えたため騒動の掲示板の方に気付かずポストしているか
なにかNGになるので試行錯誤で断念かキニナル >>956
ID変わったけど自分です
な、なんだこれは(自慢か!?どやなのか)
一応ダウンロードしたしいいねしようとしたがアカウントないし取り止め
言語的には真っ先にかじったC++の系譜を感じる(Rubyどこいった)…ほぼ何やってるか認識できないが
png特化の「これがファイルセーフな正確なやり方な」という、プログラミングの世界へようこそウェルカムトゥ…という事か(゜ロ゜;
オーバーキル気味に解答する趣味なのかw
次スレよろは>ALLと受け取り >>961
「くだらねえ質問はここに書き込め!」スレってことなんだろうな
>>1
>超低レベル、もしくは質問者自身何が何だか分からない質問
を他のスレに書き込まれたり、質問ごとにスレをたてられても
鬱陶しいから、そういう質問はここに書けってことだろう >>960
粗方普及し終わったんだと思う
これから入って来る人は最初からAIとかのライブラリ目当て
Pythonそのものには興味がないからここには来ないんだろう くだを巻くスレだぞ
超初心者が良く分からないことをあれこれと言ったり、しようもないことを何度も繰り返ししゃべっても(くだを巻いても)良いスレ 頑張るCPUをなだめてゆっくり動いてもらう方法ってある?
一定時間ごとに処理したいことがありそのたびに子プロセスに任せてるけど
急がず最低クロック周波数で動いてほしいのに最高になっちゃうことで電気食ってるように感じる
クロームブックを使っていてWindowsみたいにBIOSやアプリでクロックに制限かけれなそうだし何かないかしら
処理中■ 空き□
今
1■■■□■■■□■■■□■■■□□■■■□■
2□□■■■□■■■□■■■□■■■□■■■□
3□□□□□□□□□□□□□□□□□□□□□□
こうしたい
1■■■■■■■■■□■■■■■■■■■□■■
2□□■■■■■■■■■□■■■■■■■■■□
3□□□□■■■■■■■■■□■■■■■■■■
4□□□□□□■■■■■■■■■□■■■■■■
5□□□□□□□□■■■■■■■■■□■■■■
6□□□□□□□□□□□□□□□□□□□□□□ それぞれのプロセスがループしてるんなら
ループ中でハード的な(CPUに負荷掛けないでCPUに待たせる)waitすればいいんじゃない?
プロセスの中にループ無くて爆速で動いてるなら命令毎にやっぱりwait入れるとか?
クロームブックなんてしらんけど ごめんこの書き方だと遅くしたいことしか伝わらなかった
やりたいことは省電力化で、一定時間ごとに発生する処理にリアルタイム性は要求されないため
マルチプロセスで処理するにあたり省電力化の手段として
はたらく一部のコアが4GHz、何もしないコアが1GHzとかで動いている状態から
全てのコアをはたらく1GHzに変えられないかなと
Windows上で動かすときみたいにクロック周波数を低く保つ手段があればCPUの消費電力下がるんじゃないかなと聞きたかった おお、まさにこれで解決しそうだ
実際に解決するか試すのは次システム止めてからになりそうだけど本当にありがとう 自作関数のdefから始まってifやwhileのネストのあとの適切な最終的な「return」のインデント
いつもわからず試行してやっとエラーの出ない場所を見つけます
flake8もそこまで教えてくれないし
こんな風に見るんだよだとか使える検査ツールはありますか?
エラーはインデントエラーからアウトオブファンクションまでさまざまですが主に前者 インデント戻りには
必ずインデントと#だけの行置いてるわ
不細工だけどインデント補完ミスが起こらないので >>973
> 自作関数のdefから始まってifやwhileのネストのあとの適切な最終的な「return」のインデント
> いつもわからず試行してやっとエラーの出ない場所を見つけます
VSCodeかVimで書いてるけどそうなったことがないのでよくわからん
どういう環境なの? >>974
なるほど、それはこういうこと?
while True:
[Tab]if a = b:
[Tab][Tab]print("goal!")
[Tab][Tab]if a < b:
[Tab][Tab][Tab]print("not goal!")
[Tab]#
自分のはVimが拡張してあってタブ毎の罫線(縦軸ガイドライン)のようなのは表示されてます
>>975
この質問書いたあと仕方ないので上から順にタブの入れ方やミスらしきものを一行一行念入りに改善してくと通りました
途中のwhile周辺の変数宣言のタブか、その中の複数ブロックのifネストのタブがおかしかったため?影響があったようです
合ってそうなインデント位置でout of function関数範囲外だって言われるのがそもそも問題だなと先頭から見直していきました tkinterのウィジェット、例えばチェックボタンのvariableとチェックの有無を取得したい時は
配置するときに両方を変数に保存しておかなければならないの?
今までの感覚ではウィジェット本体を変数に入れておくか名前で特定できるなら
名前を使ってアクセスしてプロパティの参照や編集ができるのが当たり前だと思ってたんだけど
そうではないの?
またはカスタムウィジェットにしてvariableを持たしておくぐらいしか変数一つで両方にアクセスする方法はないの? 漏れも >>973 になる状況が判らん
強いて言えばプログラム構造を理解していないとしか思えない
そんなやり方でエラーにならない return の描く場所観付けてそこに描いても
それがまともなプログラミング作法だとも思えない >>977
>今までの感覚ではウィジェット本体を変数に入れておくか名前で特定できるなら
名前を使ってアクセスしてプロパティの参照や編集ができるのが当たり前
そうだね >>977です。variableとチェックの有無は同じですね。間違ってたところを訂正
×variableとチェックの有無を取得したい時は
〇 variableとテキストを取得したいときは
>>979
答えてくれて嬉しいが、意図はどちらなのかわからない >>976
こんな感じ
while True:
if a = b:
print("goal!")
if a < b:
print("not goal!")
#
#
#
#の行に改行挿入するか、その前の行に改行挿入するかで
任意のインデントが追加できる if a < bのインデントが間違ってる例なんだよね? >>978
たしかに今度からreturnの挙動がおかしければ先に他を疑おうと思いました
プログラム構造の理解がないのは事実です、returnなんでdefの一段さげでいいだろ違うのか😡混乱!な状況
>>981
なるほど
>インデントが間違ってる例なんだよね
こんな判定をネストでやるなってことなら例示のため急いででっちあげた中身だしお許しを
とはいえ実際こんなことはやっていてタンスを下から開けていきこれじゃなければこれと開けてるような
目的にマッチ次第breakするネストです
while Trueの中なので自分は混乱しがちで、言わば判定ツリーのようにその部分を捉え
自分の中で目にわかりやすくしたつもりでした
(elifとかあまり使ったことなくifの連鎖でいいや使えるもの使っとけと、判定できればいいや精神) ん?なんか自分でもおかしい気もしてきたが…まあ初心者なので😤 初心者っていうか可読性考えずに無茶苦茶にインデント使ってた人にしか見えない >マッチ次第breakする
これなら elif 使わないのは理解出来るけど
当初の >>976 や >>981 観ても break どこにも無いやん print("うめ、次スレは{}".format(>>959)) >>992
print(f"次スレは{>>959}")
俺はもうこれしか使ってない >>994
f ワードは古いPythonでは動かないから普段からformat使う癖付けといた方がいい fワードと称するのは避けたほうがいいかと…
f-stringsかな 可読性上がるし今のところ他の人のコードイジらないからなあ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 319日 14時間 4分 13秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。