X



【まず1嫁】くだすれPython(超初心者用) その54
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん垢版2021/06/09(水) 21:05:44.61ID:zRBfpo4e
当スレに★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(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
0002デフォルトの名無しさん垢版2021/06/10(木) 09:09:42.55ID:fGM4j9Qy
>>> a=10
>>> x=[a]
>>> x
[10]
>>> a=20
>>> x
[10]
>>> a
20
>>>
なんでxが[20]にならないの?
そうなるにはどうすればいいの?
0003デフォルトの名無しさん垢版2021/06/10(木) 09:52:24.45ID:VzpKjmfX
数は書き換え不可の型なんで無理。
a自体を書き換え可能なオブジェクト、例えば配列に入れ込めば、似たようなことは出来なくもないが…
a = [1]
x = [a]
a = [2]
x
0004デフォルトの名無しさん垢版2021/06/10(木) 11:03:02.88ID:smul9M+b
>>2
>>> a = [10]
>>> x = [a]
>>> x
[[10]]
>>> a[0] = 20
>>> a
[20]
>>> x
[[20]]
0005デフォルトの名無しさん垢版2021/06/10(木) 11:05:06.12ID:smul9M+b
>>3
ちょっと何言ってるか判らない
0008デフォルトの名無しさん垢版2021/06/10(木) 21:26:49.02ID:8fi5Ujsh
Pycharmの自動整形には参ったよ
Javaで作ったやつコピペしたらいろいろとやってくれる
リテラルなんか一文字消えてたり空白入れてみたり
実際走らせて気が付くレベル
0009デフォルトの名無しさん垢版2021/06/12(土) 22:29:20.54ID:0anF7A9v
openで開いたファイルオブジェクトをforループで読み込む場合、forにオブジェクトをそのまま添えて一行ずつ読み込めるとのことですが
printするとオブジェクトがそのまま表示されてしまいます(_io.TextIOWrapper〜)
みんなのpythonのとおりにやっているつもりですが何がいけないのでしょうか?
python3.7.4を使用しています
0011デフォルトの名無しさん垢版2021/06/12(土) 22:44:23.46ID:0anF7A9v
>>10
printの引数が間違っていた単純ミスでした
引数に読み込んだ一行の変数でなくオブジェクトの方を指定していました
ありがとうございました、またちょくちょく質問にくると思います
0014デフォルトの名無しさん垢版2021/06/13(日) 02:45:35.12ID:6oAiR6bp
コマンドライン上(bash)で任意のpythonファイルを実行した時に引数に
色を渡してその色で出力したいのですがどう書けばいいでしょうか?

defの引数に(出力したい色, 出力したい文字列)を渡して
色々やってるのですが、詰んでいてどなたか教えてください。。
スッピン書きでは動作確認取れています。(print(pycolor.RED + word + pycolor.END))

class pycolor:
BLACK = '\033[30m'
RED = '\033[31m'
GREEN = '\033[32m'
YELLOW = '\033[33m'
BLUE = '\033[34m'
PURPLE = '\033[35m'
CYAN = '\033[36m'
WHITE = '\033[37m'
RETURN = '\033[07m' #反転
ACCENT = '\033[01m' #強調
FLASH = '\033[05m' #点滅
RED_FLASH = '\033[05;41m' #赤背景+点滅
END = '\033[0m'
0015デフォルトの名無しさん垢版2021/06/13(日) 06:19:52.00ID:d/vYrCOI
VSCode や誰かのモジュールなどに、そういう拡張機能が無いの?

Python の質問と言うよりも、端末の設定の話
0016デフォルトの名無しさん垢版2021/06/13(日) 11:13:39.05ID:6oAiR6bp
コマンドライン上プロンプトや補完機能の色付けとかはbashrcで全て管理してるので問題ない(色付け)です。


Pythonで便利な機能なスクリプト書いたので、そこから測れるか文字列を色付けする方法を知らなくて困ってました。
0017デフォルトの名無しさん垢版2021/06/13(日) 13:08:19.84ID:6oAiR6bp
>>16です
補足でエディター上のシンタックスハイライトの設定ではなく
コマンドライン上の標準出力に色つけしたいという意味です。
0018デフォルトの名無しさん垢版2021/06/13(日) 13:15:17.58ID:EhTxteT2
黒魔術であるところのgetattrとか使えばラクに出来るんじゃね

pycolor."BLACK"
とかで呼び出したいんだろ

でも普通に考えれば連想配列を使う
0020デフォルトの名無しさん垢版2021/06/13(日) 14:22:53.04ID:6oAiR6bp
class hogehoge:
  #
  #色の変数リスト省力します
  #

  def printWithColor(self, color, word):
    print(color + word + END)

で出力したいのですが、仮にcolorに赤となる【\033[31m】を展開できないんです。。
selfを消すと引数エラーが出てしまい詰みます。。
0021デフォルトの名無しさん垢版2021/06/13(日) 14:27:14.41ID:tn2YN+mq
windows10のコンソールはエスケープシーケンス効かないけどそれ?

とエスパーしてみる
0023デフォルトの名無しさん垢版2021/06/13(日) 14:40:04.09ID:EhTxteT2
dic = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m'
}

連想配列にすればラクじゃん
0024デフォルトの名無しさん垢版2021/06/13(日) 18:45:52.61ID:1nzveETz
COLOR_DICT = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m',
}
COLOR_END = '\033[0m'

def printWithColor(color, word):
  print(COLOR_DICT[color] + word + COLOR_END)

そして今度は何か縛り条件が出てくんだろ?
知ってる
0025デフォルトの名無しさん垢版2021/06/13(日) 18:51:41.04ID:6oAiR6bp
できました!!
ご協力いただいた方ありがとうございます!!

class pycolor:
LIST = {
"BLACK": '\033[30m',
"RED": '\033[31m',
"GREEN": '\033[32m',
"YELLOW": '\033[33m',
"BLUE": '\033[34m',
"PURPLE": '\033[35m',
"CYAN": '\033[36m',
"WHITE": '\033[37m',
"RETURN": '\033[07m', #反転
"ACCENT": '\033[01m',#強調
"FLASH": '\033[05m', #点滅
"RED_FLASH": '\033[05;41m', #赤背景+点滅,
"END": '\033[0m'
}

def printColor(self, color, word):
print(self.LIST[color] + word + self.LIST["END"])
0026デフォルトの名無しさん垢版2021/06/13(日) 18:52:25.86ID:QtPR3o33
単純に出力するんじゃなくて、bashに解釈させないとダメなんじゃないの?
echo -e "${python hoge.py}"
こういうイメージ
0029デフォルトの名無しさん垢版2021/06/13(日) 21:47:36.32ID:6oAiR6bp
>>27
このモジュールいいですね。

普段からshellscriptは書くのですが、pythonは触ったことがなく四苦八苦しておりました。。。
辞書検索 + 登録アプリでも作ろうかと思ってます。
無事出力出来ました。
みなさんありがとうございます!

https://imgur.com/lYUlTXs
0032デフォルトの名無しさん垢版2021/06/14(月) 10:37:51.20ID:TNhB31Ko
色の問題じゃなくてpythonの使い方を知らなかっただけだ
0033デフォルトの名無しさん垢版2021/06/14(月) 18:34:18.68ID:4CwMrts3
pythonでAndroidアプリを作ろうとしたら、どんな環境がありますか?
VSCodeで作れれば一番いいのですが、可能ですか?
0034デフォルトの名無しさん垢版2021/06/14(月) 19:04:01.06ID:YySv9lVP
作って作れないことはないけど苦行の極み
1からkotlin覚える方がまだ早いまである
0036デフォルトの名無しさん垢版2021/06/14(月) 19:07:37.64ID:4CwMrts3
>>34 どうもありがとうございます。
調べてもなかなかないのは、そういう理由ですか。
大人しくAndroid Studioで作ってみます。

あとは、Transcryptでも調べてみるか…
0037デフォルトの名無しさん垢版2021/06/14(月) 19:13:48.59ID:YySv9lVP
凝ったの作らないならpythonで書いて変換系使ってもいいんだけど
ちょっとでも調子乗った瞬間に動かなくなるでな
主観ではpyinstallerの3倍は気を使う
0038デフォルトの名無しさん垢版2021/06/14(月) 19:58:22.16ID:l+BKKraS
どんなのかにもよるけどandroidで動けばいいんならwebアプリ作ってブラウザで動かすて手もある
それならflaskでもDjangoでもいける
0040デフォルトの名無しさん垢版2021/06/15(火) 12:52:49.00ID:NWTMJvL8
スクレイピングしたいのが自分で作ったwebアプリの値取得したいのか分からんけど
スクレイピングならPhantomjsかSeleniumでなんとかなるやろ
webアプリならそもそもjavascript経由せんと直接pythonで受け取ればいいのでは
0041デフォルトの名無しさん垢版2021/06/15(火) 15:23:20.86ID:dTl1pSLY
>>33
SL4A
0042デフォルトの名無しさん垢版2021/06/15(火) 15:24:06.14ID:dTl1pSLY
>>39
Brython
0043デフォルトの名無しさん垢版2021/06/15(火) 16:48:04.29ID:qJPYDaov
drop_indices = [1,3,4]
l1 = [1,2,3,4,5]
l2 = [a,b,c,d,e]
l3 = [.....]

l1〜3の要素数は同じです
指定indexを抜いたl1〜3が欲しいのですが一番高速なやつを教えてください
対象リストがひとつなら内包表記使うんですが複数リスト相手だとどうすればいいですか?

new1, new2, new3 = [],[],[]
for i,_ in enumerate(l1):
_if i not in drop_indices:
__new1.append(l1[i])
__new2.append(l2[i])
__new3.append(l3[i])
l1 = new1
l2 = new2
l3 = new3

しか分からないです…
できれば外部モジュールなしでおながいします
0044デフォルトの名無しさん垢版2021/06/15(火) 16:50:28.49ID:qJPYDaov
なんで速いのが欲しいかというと
実際のl1〜l3が結構長くて
この裁ち落とし処理も複数回呼ぶから
馬鹿にならない感じなのです
0045デフォルトの名無しさん垢版2021/06/15(火) 16:54:06.26ID:YClXDfsH
内包表記3回書けばいいじゃん
それとdrop_indicesはsetにする
0046デフォルトの名無しさん垢版2021/06/15(火) 17:13:12.13ID:yxrEcVUk
まあダサいのはわかるが内包3発かなあ…
0047デフォルトの名無しさん垢版2021/06/15(火) 17:22:55.07ID:E1asH+ju
アクセス時にdropするindexを考慮するとか。
def get_data(index):
index += sum(1 for x in drop_indices if x < index)
return l1[index]
テストしてないです
0048デフォルトの名無しさん垢版2021/06/15(火) 17:51:26.21ID:ic6VniVo
>>43
新しくリストを生成せずに落としたい箇所をNoneにする方法で対応したら?

drop_indicesの要素数、変更対象リストの要素数、変更対象リストの個数(3個固定?)の
値の取りうる範囲や複数回呼ぶ意味によってどういう実装が望ましいかは変わってくる
0049デフォルトの名無しさん垢版2021/06/15(火) 17:58:15.90ID:dTl1pSLY
>実際のl1〜l3が結構長くて

外部モジュール使わない訳がない
素直に numpy なり pandas なり使え
0050デフォルトの名無しさん垢版2021/06/15(火) 18:14:18.09ID:dILRy9B0
>>43
if i not in drop_indices
ここの計算量は無視していの?
0052デフォルトの名無しさん垢版2021/06/15(火) 18:37:58.95ID:YClXDfsH
>>43
リスト1つに纏めるのはどうよ
l=[(1,a,…),(2,b,…)..]
0053デフォルトの名無しさん垢版2021/06/15(火) 18:39:02.16ID:/tfRbTz3
長いって言うんならlはミリオン
dropは1000
あたりだろう

もしかすると何らかのウイルスのDNA解析かもしれない
するとl2,l3にはATとCGがペアになって入ってるかもしれない


で、drop_indicesの逆順を生成してこうする
あとは出たのを全部実測して早いの選ぶのがラク
多分リストのappendでのmalloc回数に左右される


new1 = [x for x in l1]
new2 = [x for x in l2]
new3 = [x for x in l3]

for i in drop_indices_invrese:
_new1.pop(i)
_new2.pop(i)
_new3.pop(i)
0054デフォルトの名無しさん垢版2021/06/15(火) 18:48:50.23ID:dILRy9B0
for i in reversed(drop_indices):
__l1.pop(i)
__l2.pop(i)
__l3.pop(i)
0056デフォルトの名無しさん垢版2021/06/15(火) 19:49:43.00ID:KfvfPOTk
pythonではじめてwebsocketなる通信をして感動しているのですが
クライアント側のjavascriptで
socket.onmessage = function(e) {socket.send("test msg");}を設定したところ、
websocketサーバー側のログが0.5秒?くらい置きに延々と流れてくるのですが
そういうものなのでしょうか?
そのまま放置していると(無料鯖のため?か)websocketサーバーが止まりました。
0058デフォルトの名無しさん垢版2021/06/15(火) 20:32:08.61ID:KfvfPOTk
なるほど
参考にしたサイトが”なでしこ”→"python"で実装されていて
よく見ていませんでしたが改めて見たところ
受信時→WSサーバ全返信
という行を発見しました。
今は制限中なので解けたらその行を消して試してみたいと思います
ありがとうございました
0061デフォルトの名無しさん垢版2021/06/16(水) 13:20:18.99ID:mN5o8PJ8
>>43
python初心者です。G,C,Pの出現場所を記録したリストを... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11244753631

>G,C,Pの出現場所を記録したリストを作りたい
>s100 = ['P', 'C', 'G', 'P', 'G', 'C', 'C', 'P', 'G', 'G', 'P', 'C', 'G', 'C', 'P', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'G', 'P', 'C', 'C', 'P', 'G', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'G', 'P', 'C', 'P', 'G', 'G', 'C', 'P', 'G', 'C', 'P', 'C', 'G', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'G', 'P', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'P', 'G', 'C', 'P', 'P', 'P', 'P', 'P', 'C']

なーんか似たような問題が出回ってんな
同一人物か?
0063デフォルトの名無しさん垢版2021/06/16(水) 15:22:04.18ID:OiJaUQCk
同じか……?
0064デフォルトの名無しさん垢版2021/06/16(水) 17:14:18.46ID:uJQ6HHCX
>>61
https://ideone.com/dlXO7M
s100 = ['P', 'C', 'G', 'P', 'G', 'C', 'C', 'P', 'G', 'G', 'P', 'C', 'G', 'C', 'P', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'G', 'P', 'C', 'C', 'P', 'G', 'C', 'G', 'P', 'P', 'C', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'G', 'P', 'C', 'P', 'G', 'G', 'C', 'P', 'G', 'C', 'P', 'C', 'G', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'C', 'G', 'P', 'G', 'C', 'P', 'C', 'G', 'P', 'C', 'P', 'P', 'G', 'C', 'G', 'C', 'P', 'G', 'C', 'C', 'P', 'G', 'C', 'P', 'P', 'P', 'P', 'P', 'C']
pcg = {'P': [], 'C': [], 'G': []}
for i, s in enumerate(s100):
pcg[s].append(i)
print(pcg)
0065デフォルトの名無しさん垢版2021/06/16(水) 19:58:32.04ID:aKJkflFH
s100のリストを作ることがG,C,Pの
出現場所を記録したリストを作ること
s100があるならやることはない
0066デフォルトの名無しさん垢版2021/06/17(木) 16:25:36.76ID:JYSb8W8U
>>61
ある言語では
echo@I. 'GCP'=/'PCGPGCCPGGPCGCPCGPPCCGGPCCPGCGPPCCGCPGCCGPCPGGCPGCPCGCPPGCGCPGPCCGPGCPCCGPGCPCGPCPPGCGCPGCCPGCPPPPPC'

2 4 8 9 12 16 21 22 27 29 34 37 40 44 45 48 52 56 58 61 65 67 72 74 78 83 85 88 92
1 5 6 11 13 15 19 20 24 25 28 32 33 35 38 39 42 46 49 51 53 57 59 63 64 68 70 71 75 77 80 84 86 89 90 93 99
0 3 7 10 14 17 18 23 26 30 31 36 41 43 47 50 54 55 60 62 66 69 73 76 79 81 82 87 91 94 95 96 97 98
0067デフォルトの名無しさん垢版2021/06/17(木) 20:20:59.14ID:1IveWNJ3
Pythonからmacのシェルコマンドを実行したいのですが引数(ファイル名)が空白と引用符と二重引用符を全て含む時失敗します

例: ファイルコピー)
c1 = 'cp'
c2 = '''s m'p".txt'''
c3 = 'smp2.txt'
p = subprocess.Popen([c1, c2, c3])
p.wait()

「'''s m'p.txt'''」「'''s mp".txt'''」のように引用符が一種類だと大丈夫でした
こんなファイル名でも引数に設定できる方法はないでしょうか?
0069デフォルトの名無しさん垢版2021/06/17(木) 21:59:44.44ID:1IveWNJ3
>>68
ありがとうございます
しかしエスケープしてもやはり同じように失敗します
(コマンドのヘルプが出る)
コマンド側が対応していないのかもしれないですね
0071デフォルトの名無しさん垢版2021/06/18(金) 14:47:10.03ID:sJhYE6LE
python学習にあたりおすすめの参考書はございますか?
現在はpython1年生という参考書が終わりそうです。
0072デフォルトの名無しさん垢版2021/06/19(土) 16:37:39.93ID:zDrgWeBe
scikit-learn いいよね
0073デフォルトの名無しさん垢版2021/06/20(日) 00:15:38.15ID:md8cXnFb
1回目に実行した内容を記憶しておいて2回目に実行した時は処理を変えたいんですけどなんか良い方法ありますか?
具体的には暗証番号入力するプログラム作ってるんですけど暗証番号の入力に失敗したらロックかけて次に同じプログラム実行したらロックかかってますみたいな表示を出すようなことがやりたいです
0074デフォルトの名無しさん垢版2021/06/20(日) 00:18:01.10ID:md8cXnFb
例えばプラグファイル作るでも良いんですけど消されちゃうのであんまり意味ないしジェネレータみたいな感じで1回目の処理を記憶してくれたら良いんですけど
0075デフォルトの名無しさん垢版2021/06/20(日) 02:40:25.03ID:rz6SzZvo
よい方法はないですね
問題の形式が変わっただけで、つまるところ「アプリケーションが保存したデータをユーザーに触られないようにしたい」でしかないので
素直にサーバーに認証回数を保存してください
0078デフォルトの名無しさん垢版2021/06/20(日) 11:59:36.84ID:2DS4hVGx
なんかメモリー上にアクセスキーを暗号化してキャッシュして保存するみたいのできないんですか?
0079デフォルトの名無しさん垢版2021/06/20(日) 12:10:20.32ID:2jVSj7S9
それじゃ通電中保持するだけでね?
裏で保持プログラム動かしとくのと変わらんのでは
0080デフォルトの名無しさん垢版2021/06/20(日) 16:54:13.54ID:vSSpHRy4
memcached (server だけどローカルPCで動作させても良い)
python-memcached

あるいはレジストリ等

どちらも勝手に消されないように対策すること
0082デフォルトの名無しさん垢版2021/06/20(日) 18:52:22.86ID:fic9DRbI
メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい
金庫の上に鍵状態だって分かってるのか?
0083デフォルトの名無しさん垢版2021/06/20(日) 19:36:06.66ID:Lj9t65si
サーバーサイドなら既存のソリューション利用すりゃいいし
ユーザーサイドならもう違法アクセスされてる時点でパスワードどころの騒ぎじゃないし
何故作るのか見えてこない
0084デフォルトの名無しさん垢版2021/06/20(日) 19:49:24.73ID:akuykRB/
>メモリだろうが何だろうがローカルに暗号化して保存ってのが既に馬鹿馬鹿しい

ここだけ切り取ればどこでも普通に行っていることだが?問題はその鍵をどう守るかであって。
0086デフォルトの名無しさん垢版2021/06/20(日) 20:44:34.12ID:bGnn/scA
他人のプロセスを覗けるのは、そのPC・サーバーの管理者だけ

ただし、サーバーが中国にあれば、中国政府に覗かれる。
そういう法律があるから
0087デフォルトの名無しさん垢版2021/06/20(日) 21:09:32.73ID:4yWZiADR
__name__変数について教えてください。
__name__はグローバル変数でモジュール名が格納されていると思います。
ですが、参照をクラス名.__name__とするとモジュール名ではなくクラス名が取得できました。
これはモジュール名が格納されているものとは別の__name__を参照していると思うのですが、どこにある変数を参照しているのでしょうか。
dir(クラス名)としてもそのクラスは__name__変数を持っていないようでした。
0090デフォルトの名無しさん垢版2021/06/20(日) 22:39:48.64ID:4yWZiADR
ありがとうございます。dirですべて確認できると思っていました。

ちなみにですが、関数について↓のような認識でした。
関数は__name__変数を持っていないが関数名.__name__でモジュール名が取得できる。
これはその上位であるグローバル変数の__name__を参照しているため。

これももしかしたら関数の持っている__name__を表示している可能性があるのでしょうか。
0091デフォルトの名無しさん垢版2021/06/20(日) 23:49:53.27ID:4yWZiADR
>>88
「クラス名.__name__」があるのであれば、
クラス内で__name__のようにして変数名だけで参照したときに、クラス名でなくモジュール名が返ってくるのは何故でしょうか…?

質問ばかりすみません、、訳が分からなくなってきました
0093デフォルトの名無しさん垢版2021/06/21(月) 09:16:37.64ID:b28M8oMP
クラスはスコープを作らない。
パッケージグローバル変数を読んでるだけだ。
別に__name__固有の話ではない。
0094デフォルトの名無しさん垢版2021/06/21(月) 14:06:55.24ID:os4CEfZ3
何かの自動化ツールでpasswordを含むプロジェクトがあるとして
githubにうっかりpasswordあげる事故を防止したい
passwordは入力が面倒なのでローカルに保存しておきたい
こんなとき正しいというか定石ってどんなのがある?
0095デフォルトの名無しさん垢版2021/06/21(月) 15:17:05.73ID:wnQSc3ge
環境変数から入力することを徹底するのと
コミットをgit-secretsみたいなので未然に防ぐことかな
この辺はPythonとあまり関係ないけどね
(どの言語でも守られるべき)
0097デフォルトの名無しさん垢版2021/06/21(月) 15:55:22.95ID:t1WQxVIN
年収調べたいので三井住友bankのソースコードをgitにあげたいんですけどどうしたらバレませんか?^ ^
0099デフォルトの名無しさん垢版2021/06/21(月) 20:00:00.26ID:lEZW5cAy
try-except
って遅くないけど、if-elseのような感じで動いてるわけじゃないのですか?
0100デフォルトの名無しさん垢版2021/06/22(火) 01:12:59.15ID:cAGj2bSl
>>87ですがやっと理解できました。
__name__は単独で使ったときとオブジェクトに繋げて記述したときとで戻り値が違うのですね。
ありがとうございました。
0101デフォルトの名無しさん垢版2021/06/22(火) 23:33:39.51ID:c2+v+nSA
flaskからpostgres操作するライブラリから使うなんちゃらがインストールできない。
後から追加するライブラリが多いとなんだかんだで環境構築の難易度が上がるのでフルスタックのdjangoとかローコードで良いと思った・・・
0103デフォルトの名無しさん垢版2021/06/23(水) 07:48:46.56ID:xA3/S05N
あるひとつのフォルダの中身が一定時間後に変わってないことを確認したいんだけど
中身全部ハッシュとって比較するしかないですか?
0104デフォルトの名無しさん垢版2021/06/23(水) 11:16:11.54ID:Ps8ud9Ds
ファイルのコンテンツ以外に信頼できる情報がないならそうするしかないんじゃない?
コンテンツの更新が必ずst_mtimeの更新を伴うとか、制約が増やせるなら検証範囲は絞れそうだけど
0105デフォルトの名無しさん垢版2021/06/23(水) 12:47:09.88ID:Dblyz7cX
>>94
Ruby on Rails では、credentials という機能があって、

デフォルトで、credentials.yml.enc という暗号化されたファイルと、
その解読キー・master.key がある

master.keyは、.gitignore に書かれているので、
credentials.yml.encを、そのままリポジトリに入れても大丈夫

credentials.yml.encを解読すると、
YML 形式で、AWS の設定などが書かれている

# aws:
# access_key_id: 123
# secret_access_key: 345
0106デフォルトの名無しさん垢版2021/06/23(水) 13:08:26.79ID:6jEPjWCz
OSによるけどフォルダの内容変わったら通知来るAPIがあるものもある
0108デフォルトの名無しさん垢版2021/06/23(水) 19:42:09.00ID:Z7fMxROS
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

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

クソチョンw
0111デフォルトの名無しさん垢版2021/06/24(木) 11:34:57.39ID:H+zrwBY+
x = [1,5,3]
n = 4
のとき
[[1,2,3,4], [5,6,7,8], [3,4,5,6]]
が欲しい

どう書いたら簡潔ですか?
0113デフォルトの名無しさん垢版2021/06/24(木) 12:17:24.20ID:H+zrwBY+
rangeそう使えるの知らなかった…ありがとう
0114デフォルトの名無しさん垢版2021/06/24(木) 12:29:16.33ID:d0WSinGu
>>110

x=[1,5,3]
n=4
y=[list(range(i, i + n)) for i in x]
0116デフォルトの名無しさん垢版2021/06/24(木) 19:03:03.87ID:Kxz6ONml
みんなあたまいいなあ
俺馬鹿だからそんなかっこいいコード思いつかないなあ
参考になるわ
[list(range(x[i], x[i]+n)) for i in range(n-1)]
0119デフォルトの名無しさん垢版2021/06/24(木) 20:26:31.26ID:cBTjhTLo
問題集ていや先日

要素数(size)と折り返し(rep) の引数を取って
例えばsize=5, rep=2のとき
1_1
1_2
2_1
2_2
3_1
って右がrepするたびに左が増えるやつ欲しいって言われたんだけど
一瞬まったく意味わからんくて笑った。死ぬかと思った
0121デフォルトの名無しさん垢版2021/06/24(木) 20:42:19.45ID:H+zrwBY+
size=10
rep=3
for i in range(size):
__l=(i//rep)+1
__r=(i%rep)+1
__print(l, r)

こうか
算数怖い
0123デフォルトの名無しさん垢版2021/06/24(木) 20:50:25.36ID:ev/ZN6Zz
これじゃダメなんけw

size=10
rep=3
[str(i)+'_'+ str(j)for i in range(1, size+1) for j in range(1, rep+1)][0:size]
0124デフォルトの名無しさん垢版2021/06/24(木) 20:54:54.61ID:Uf6wilZL
119を123で書いてきたら俺は殴る
0125デフォルトの名無しさん垢版2021/06/24(木) 21:39:25.89ID:Xj45HSPz
def enumrep(size,rep):
_i=0
_b=0
_while True:
__b+=1
__for a in range(rep):
___i+=1
___yield str(b)+'_'+str(a)
___if i>=size:
____return True

for i in enumrep(10,2):
_print(i)
0126デフォルトの名無しさん垢版2021/06/24(木) 21:44:30.95ID:PG/lAwcj
コードは長くなるけどgenとtake(=islice)を分けたほうがわかりやすいしメンテしやすい
0127デフォルトの名無しさん垢版2021/06/24(木) 21:48:35.74ID:PG/lAwcj
def gen_items(rep):
__if rep < 1:
____return
__i = 1
__while True:
____for j in range(rep):
______yield f"{i}_{j + 1}"
____i = i + 1

for x in islice(gen_items(3), 10):
__print(x)
0128デフォルトの名無しさん垢版2021/06/24(木) 23:27:17.31ID:2xxS1rw4
pathlibのiterdir()でwindowsの$recyclebinやらsystem volume infomationやらといった
隠しフォルダをスキップする方法はありますか?
0129デフォルトの名無しさん垢版2021/06/25(金) 08:30:16.10ID:5m+oUY25
別に内包表記でもインデントさせていいんですよ
0131デフォルトの名無しさん垢版2021/06/25(金) 09:50:24.98ID:gA4+2U8+
>>128
突然難易度上げるな
くだすれだぞ ていうか俺もこれ以外どうやればいいか分からん
import pathlib
import tkinter.filedialog as tkfd
import ctypes
from os import stat
from stat import (
_FILE_ATTRIBUTE_HIDDEN as H,
_FILE_ATTRIBUTE_SYSTEM as S,
_FILE_ATTRIBUTE_READONLY as R)

p = tkfd.askdirectory()
for i in pathlib.Path(p).iterdir():
_attrs = stat(i).st_file_attributes
_check = (bool(attrs&H), bool(attrs&S), bool(attrs&R))
_if any(check):
__print(i, check)
0133デフォルトの名無しさん垢版2021/06/25(金) 13:35:46.23ID:hgpS2vwl
機械学習の数学各分野て分野は紹介されてるけど結局どこまで勉強すればいいのかわからん
例えば線形代数を対角化までやったけどLU分解とか初学者向けの本には乗ってないやつも勉強せんなんの?
0134デフォルトの名無しさん垢版2021/06/25(金) 14:28:27.22ID:Wd+wOk9Z
行列計算のアルゴリズムまで自分で実装(特にpython)することは無いだろう
使い方だけ知ってればOKなパターン
0135デフォルトの名無しさん垢版2021/06/25(金) 15:35:46.76ID:vlMp8RRH
Ruby で作ってみた

numbers = [ 1, 5 ]
size = 3

# to_a で、範囲を配列化する
p results = numbers.map{ |init_num| ( init_num...init_num + size ).to_a }
#=> [[1, 2, 3], [5, 6, 7]]

#--------------

size = 3
rep = 2

# 2次元配列
results = ( 1..size ).map do |left_num|
( 1..rep ).map{ |right_num| "#{ left_num }_#{ right_num }" }
end

puts results

出力
1_1
1_2
2_1
2_2
3_1
3_2
0136デフォルトの名無しさん垢版2021/06/25(金) 16:26:01.91ID:Wd+wOk9Z
どこの誤爆よ
0138デフォルトの名無しさん垢版2021/06/25(金) 17:06:47.97ID:7PD1ckkM
無差別爆撃なので誤爆じゃない
Ruby信者のようで実質Rubyアンチな異常者によるテロ行為
0140デフォルトの名無しさん垢版2021/06/25(金) 18:47:16.58ID:SMv7sy5/
リアル職場ではコミュニケーション取れているのかが気になる
0142デフォルトの名無しさん垢版2021/06/25(金) 19:23:44.62ID:RM0Dpgjh
>>119
f=: 4 : 0
>: ( x , y ) #: i. x
)
___5 f 2

1 1
1 2
2 1
2 2
3 1
0143デフォルトの名無しさん垢版2021/06/26(土) 08:37:57.19ID:92XkTmJ1
機械学習のお勉強始めたは
中卒のおいらにはそもそも微分とかきいたことなさすぎてつらひ
0146デフォルトの名無しさん垢版2021/06/26(土) 11:54:39.83ID:aONBfxlZ
中卒で機械学習て何ができるんや
フレームワーク使うのも指示された通りにしてるだけで何の値操作してるのか理解できなさそう
0147デフォルトの名無しさん垢版2021/06/26(土) 12:08:13.88ID:UhEO8DM5
つかまず前処理で止まるやろ
0153デフォルトの名無しさん垢版2021/06/26(土) 20:42:50.01ID:UhEO8DM5
def 雇用(people):
..if people >= 高卒:
....if people >= 実務経験:
0154デフォルトの名無しさん垢版2021/06/26(土) 21:03:33.77ID:6sjjJ5as
MIT も、Julia へ行ってる。
大学院数学科とかじゃないと採用されない

だから皆、文系はRuby on Rails へ行く。
英語さえ出来れば、文書を読めるから
0155デフォルトの名無しさん垢版2021/06/26(土) 21:05:37.21ID:R2OdYklz
>>154
スレタイも読めないお前が何を言っているんだ
ギャグセンスは一流だな
0156デフォルトの名無しさん垢版2021/06/27(日) 10:27:42.26ID:3P9Fscem
>>153
高卒以下のコード書くなよw
def 雇用(people):
..if people.academicHistory>= 高卒 and people.skill >= 実務経験:

だろ
0157デフォルトの名無しさん垢版2021/06/27(日) 11:03:04.37ID:nIt5B8/A
お前こそ中卒だろ。なんだよHistoryって。
TitleまたはDegreeだろ。
0158デフォルトの名無しさん垢版2021/06/27(日) 11:11:11.64ID:dEiG0OR8
バカはこれだから…
title は肩書、degree は学位でお前みたいな高卒以下に関係ない属性なw
0160デフォルトの名無しさん垢版2021/06/27(日) 12:30:57.00ID:d7u3fSB/
今どきのPythonistはそういうのはまとめてAIにぶち込んでなんとなくいい感じに判断する
0163デフォルトの名無しさん垢版2021/06/27(日) 12:54:10.14ID:ZQs2/men
微分積分なんて概要を理解すればいいんだよ
別に包丁がなんで出来ていてどういう歴史があるかなんて知る必要はなくて俺らに必要なのは包丁で野菜を切るただそれだけなのだから
0164デフォルトの名無しさん垢版2021/06/27(日) 15:37:00.86ID:8YEnojkX
まあわざわざ極限使って計算することはなくて形式微分か形暗記したものを手計算なら使うしpcなら数値計算だもんな
微積の傾きと面積の関係、物理単位なら乗数が増減することが分かってれば困ることはない
0165デフォルトの名無しさん垢版2021/06/27(日) 16:35:57.54ID:QiH1o3Ks
楕円の面積は簡単に求められるのに
外周の長さを求めようとすると結局積分が必要になる。
長いほうの直径が27、短いほうの直径が6の楕円の場合
外周の長さを.以下2桁まで求めるには実際にはどうやる?
0168デフォルトの名無しさん垢版2021/06/28(月) 04:45:13.70ID:mjwjNK+P
pipenv installで環境構築した後に行う
pipenv shellって何なんですか??

構築した環境以外にもcdできたりrmしたcpしたり
よく意味がわからないのですが。。。
0172元気な仔馬垢版2021/06/28(月) 11:46:07.23ID:3eu2Zryg
ラズパイ4でpythonを始めたブログラム初心者です。

python 1年生という書籍の例として入っている文、 PIL.ImageTkというモジュールで悩んでいます。 自分が使っている環境ではこのモジュールが入ってなく、前に進めません。

バージョン違いのものでも動く、これの代わりになるモジュールが ありましたら、 教えていただけませんか?
0176元気な仔馬垢版2021/06/28(月) 14:40:47.37ID:3eu2Zryg
>173
ありがとうございます
しかし試してみましたがインストール中にエラーになったっぽいです…
状況は変わらず…
0177デフォルトの名無しさん垢版2021/06/28(月) 14:52:36.48ID:lNsRTxVu
いや状況は変わってるだろ
エラーになったから諦めるんじゃなく、どういうエラーか確認して対処すればいいじゃん
だいたいのエラーはエラー文そのままでググれば解決法が出るし、
出ない場合はここにどんな環境で何がしたくて何をしてどうなったかとエラー全文貼れば教えてくれる人も居るでしょ
0178デフォルトの名無しさん垢版2021/06/28(月) 16:46:51.40ID:V/YMeLZd
.foo.xxx_var
.foo.foo.yyy_var
この二種類の形式の文字列があるとき
xxxとyyyを正規表現で抜くにはどう書いたらいいですか?
0179デフォルトの名無しさん垢版2021/06/28(月) 16:55:20.40ID:JcAv6JCW
.+[^\.]+\_var
0181デフォルトの名無しさん垢版2021/06/28(月) 18:11:49.59ID:V/YMeLZd
>>180
ああ正規表現スレってあるんですね
失礼しました
0182デフォルトの名無しさん垢版2021/06/28(月) 20:34:53.02ID:kbwv0g/L
正規表現て役に立つけど電話番号とかメアドみたいなよく使われるやつじゃないと他人が見たときわけ分かんないし自分も後で見たらわけ分かんなかったりするよな
よくスクレイピングするやつとか正規表現使う頻度にもよるんやろうけど
0183デフォルトの名無しさん垢版2021/06/28(月) 20:54:22.62ID:uYdbYpLI
共感得てポンコツなのは自分だけでは無いと安心したいのかな?
余程複雑長大なものでも無ければ解釈に大して手間取らないと思うが
0187デフォルトの名無しさん垢版2021/06/28(月) 23:56:15.26ID:G75AEbDR
それこそ正規表現のスレ行ってください
0193デフォルトの名無しさん垢版2021/06/29(火) 07:15:42.92ID:tBEGF5OC
「正しく正規表現で表そうとするとわけがわからんくなる」が伝わらんかったみたいだったからサンプル出したけど、まぁこのレベルの精度が必要なら正規表現じゃやらんわなw
0194デフォルトの名無しさん垢版2021/06/29(火) 07:41:10.41ID:MxyOwUyS
>>191
厳密に言えば「総務省公表のデータにマッチする正規表現」か。
そこに含まれていない範囲だって未割当の電話番号に違いないでしょ。
0195デフォルトの名無しさん垢版2021/06/29(火) 07:46:39.05ID:kJlgCPwb
電話番号と同じパターンの別の番号が出てきたらどうすんだろ
気づかず置換して事故るんかな
0197デフォルトの名無しさん垢版2021/06/29(火) 08:29:49.41ID:tBEGF5OC
>>194
ゆるいバリデーションなら、総務省のやつだろうね
アレは楽

リンクのやつは多分各事業者の情報も加味してある
このレベルで実装するなら、メンテが必要なんで、継続的な更新のあるライブラリが必須だね
個人的にはやりたくないw

他言語の資料だけど、これが面白かった
https://speakerdeck.com/memory1994/li-jie-siteokubeki-php-falsebaridesiyon?slide=78
0200デフォルトの名無しさん垢版2021/06/29(火) 09:05:44.12ID:tBEGF5OC
>>199
お前がどんなに頑張って俺に追いつこうとしても、俺のいた場所にお前がついたときには俺はお前の少し前に進んでる
永遠に追いつけないんだ!
byゼノン
0203デフォルトの名無しさん垢版2021/06/29(火) 19:22:41.33ID:vRfx68y2
なんかたまに名言でドヤって来るやついるけどダサいよな
内容より誰が言うかやからな
あとゲームとか漫画の引用は中学生までや
0206デフォルトの名無しさん垢版2021/06/29(火) 21:30:03.66ID:MxyOwUyS
そういわれると「ゼノンのパラドックス」ってすごい厨二ネーミングに見えてきた。。。
0209デフォルトの名無しさん垢版2021/06/29(火) 23:42:32.20ID:hw58oJ3l
次元の呪い
0212デフォルトの名無しさん垢版2021/06/30(水) 07:48:27.13ID:D9KqFPaB
httpサーバー立てるときに

@route('/')
def index():
_pass

@route('hoge')
def hoge():
_ pass

という風に分けるのですが
index()ではimport sample1を
hoge()ではimport sample2をしたいとき、
一番上(defの外)にまとめてimport sample1,sample2とするのかそれとも
index(),hoge()の中それぞれでimportした方がいいのか
何か慣習はあるのでしょうか?
0213デフォルトの名無しさん垢版2021/06/30(水) 08:54:34.29ID:fR3i2rdt
httpサーバーであるという情報とかデコレーターが付いてるのとかが質問にどう関わるのかよく分からんが、sample1モジュールはindex関数だけから、sample2モジュールはhoge関数だけから使われるケースで何処でimportするか、ということなら、俺の場合
index()やhoge()が__name__ == '__main__'が真であるときにのみ呼ばれるならindexやhogeの中で、そうでないならソースの先頭でimportしてる
つまり、そのソースが単体で実行されるときにしか使わないモジュールは、モジュールとして他のコードにimportされるときにはimportしたくない、という貧乏根性
0214デフォルトの名無しさん垢版2021/06/30(水) 09:39:57.08ID:QIg09vqW
>>212
特別な理由がない限りは全て先頭でimportしたほうがいい
importは重い処理だしエラーを発生させやすいので、なるべく起動時に済ませてしまった方がアプリの挙動が安定する
毎回実行される訳ではないが、初回実行のタイミングの問題だ
Webアプリで特定のアクションが呼ばれたときにエラーで落ちるとか初回実行時だけやたら遅いとかデバッグするの嫌でしょ
逆に、必要になったときに初めて読み込むことで起動時間やメモリ消費を抑えるテクニックもあるが、役に立つのは分散処理フレームワークなど極めて特殊なケースだ
0215デフォルトの名無しさん垢版2021/06/30(水) 10:47:08.67ID:x9tVpfG6
そもそもめったに使わない(まったく使わない)機能のために
依存関係増やしたくないしな
0220デフォルトの名無しさん垢版2021/07/01(木) 09:12:46.98ID:47t/afFm
string = '<001>_<9>'
size = 3
から
strings = ['001_9', '002_10', '003_11']
文字列中のタグ部分を任意の長さだけカウントアップした配列が欲しい
def multiple_counting(size, string):
_pat = re.compile(r'<(\d+)>')
_tags = pat.findall(string)
#カウント作成
_counters = []
_for tag in tags:
__counters.append([str(int(tag)+1).zfill(len(tag)) for i in range(size)])
#書き換え
_strings = [string]*size
_for counter in counters:
__strings = [pat.sub(count, string, 1) for count, string in zip(counter,strings)]

_return strings

なんか便利な関数とか、もっとシュッとしたやり方とかあると思うんですが
知らないので教えてください.あと再帰関数使いたかったけど挫折しました
0221デフォルトの名無しさん垢版2021/07/01(木) 09:53:11.45ID:n7sulsnm
置換マップみたいなのなかったっけ
0222 【ぴょん吉】 垢版2021/07/01(木) 10:36:03.88ID:Ipwd3DUh
>>220
[re.sub(r'<([0-9]+)>', lambda m: f'{{:0{len(m[1])}}}'.format(int(m[1]) + i), string) for i in range(size)]
0223デフォルトの名無しさん垢版2021/07/01(木) 18:34:44.42ID:47t/afFm
>>222
ありがとうございます
0224デフォルトの名無しさん垢版2021/07/01(木) 19:00:33.74ID:s31eTWYH
今日は重回帰分析勉強したわ
スカラーベクトル行列転置をやったけど逆行列って言うのがよくわからねえわ
そろそろ中卒の俺の頭もセグメンテーションエラーだわ
じゃあの
0227デフォルトの名無しさん垢版2021/07/02(金) 08:46:35.95ID:9LnHCrkz
>>224
さきに高校数学と線形代数やれ
0229デフォルトの名無しさん垢版2021/07/02(金) 13:17:37.81ID:9LnHCrkz
それで逆行列が分からんのに何を理解したというねん
0233デフォルトの名無しさん垢版2021/07/02(金) 21:23:10.28ID:SG4SXaSP
Python処理系は今のところdataclassのフィールド生成くらいにしかタイプヒントを利用しない
それ以外のタイプヒントは完全にタイプチェッカー向けで、タイプチェッカーを利用しないならつける意味はない
0235デフォルトの名無しさん垢版2021/07/02(金) 22:17:24.51ID:E59Amcuv
逆元が分からんのだろ
行列やってる段階の奴が群知ってるとは思えないが
0236デフォルトの名無しさん垢版2021/07/03(土) 09:39:19.49ID:UqPPpbRy
>>234
いや単位行列は斜めに1があるやつで
逆行列は普通の行列に逆行列をかけると単位行列になるって言うのはわかるんだよ
ただその後これはスカラーですだのこれはベクトルですだの出てきて記号いっぱいになると途端に訳が分からなくなるのだよ分かる?
行列積があーだのこーだの
0238デフォルトの名無しさん垢版2021/07/03(土) 11:01:50.13ID:gq7PWL9B
>>236
馬鹿には無理
0241デフォルトの名無しさん垢版2021/07/03(土) 12:45:29.69ID:WO4lFPcp
>>236
>分かる?
とか言われてもその気持ちは分からんなぁ

普通に行列やって普通に単位取れたってことは特に苦労しなかったんだから、
ワケが分からなくなることがなかった

記号が一杯でも初見で大丈夫だったからお前の気持ちは一切分からん
0244デフォルトの名無しさん垢版2021/07/03(土) 17:33:35.17ID:KyOEtNLT
pythonってプログラミング言語の中では簡単な方って本当ですか?
最近勉強してるんですが難し過ぎるんですが
0245デフォルトの名無しさん垢版2021/07/03(土) 17:57:04.61ID:2G/hXmzA
[[1,2,3], [1,2,3], [1,2,3]]
がほしいとき
[[1,2,3]*3]じゃなくて[[1,2,3]]*3だけど
感覚的には前者なので違和感が強いです
なんかいい感じに納得させてもらえませんか
0246デフォルトの名無しさん垢版2021/07/03(土) 18:07:23.78ID:bc4tv4Cc
>>244
言語としては簡単な方だよ
ただ言語の難しさとプログラミングの難しさって別だからね
言語の選択ってのは迷路の広い入り口を選ぶか狭い入り口を選ぶかであって、迷路を進み始めると後は同じなんだよ
0247デフォルトの名無しさん垢版2021/07/03(土) 18:15:50.79ID:WO4lFPcp
かんたん言ってる奴は先に別の言語をやってた可能性が高い
それに比べるとかんたんと言ってる
0248デフォルトの名無しさん垢版2021/07/03(土) 19:42:13.76ID:KyOEtNLT
>>246
なるほど
一つの言語を極めると他の言語を覚えるのは簡単と言うのが分かった気がします
pythonを極められるように頑張ります
0249デフォルトの名無しさん垢版2021/07/03(土) 20:08:02.32ID:IMGL3rxE
>>245
'aho'*3は
'ahoahoaho'になる
''や[]は*3に文字列やリストを渡す
役目があって*3の前に役目を終えている
0250デフォルトの名無しさん垢版2021/07/03(土) 21:33:02.67ID:I7Zt9Z8V
合成関数のとことかシグモイド関数の微分とかお前らモヤらんのか?
中卒野俺にはわからんがめっちゃ頭いいな
0251デフォルトの名無しさん垢版2021/07/03(土) 23:09:47.68ID:91vjT9iB
頑張って一般化逆行列を理解しよう
0252デフォルトの名無しさん垢版2021/07/03(土) 23:27:47.89ID:avhnjRXY
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、
初心者は、Ruby on Rails から始める

Python, PHP も勧めていない

バックエンドは、Ruby → Go という路線
0253デフォルトの名無しさん垢版2021/07/04(日) 00:07:57.92ID:DDnLb3K7
ケンタはあわしろ氏の一番弟子。
実力は折り紙付き。
0255デフォルトの名無しさん垢版2021/07/04(日) 08:47:31.64ID:5abFjuPT
範囲内、重複なしのreq_indexでdb(リスト)からデータ取得する
selection = [db[idx] for idx in req]
こういうのの逆で、渡されたreqに含まれてないidxデータ取得するとき、一番スマートなのはどういう書き方?
0256デフォルトの名無しさん垢版2021/07/04(日) 08:50:25.61ID:5abFjuPT
db[あ,い,う,え]
req[0,2]
get[い,え]
ていう場合
0258デフォルトの名無しさん垢版2021/07/04(日) 10:17:54.09ID:pili1Lz/
>>245
[3*3] -> [9]
[3]*3 -> [3, 3, 3]
[[3*3]] -> [[9]]
[[3]*3] -> [[3, 3, 3]]
[[3]]*3 -> [[3], [3], [3]]
0259デフォルトの名無しさん垢版2021/07/04(日) 10:19:32.88ID:pili1Lz/
>>248
>一つの言語を極めると他の言語を覚えるのは簡単と言う

誰が言ったの?
0262デフォルトの名無しさん垢版2021/07/04(日) 15:29:30.76ID:uQBb7zfv
いやプログラムの根底は演算と型と制御だろ
そりゃベースが出来てれば大体何でも出来るわ
0264デフォルトの名無しさん垢版2021/07/04(日) 16:34:17.72ID:i/yFAdE3
>>255
db=[10,20,30,40]
req=[0,2]
a=list(set(db)-{db[i] for i in req})
0265デフォルトの名無しさん垢版2021/07/04(日) 17:11:19.65ID:Thc8jF3i
プログラムの根底とプログラミングの根底は全く別物
その程度の区別が出来ないようなら大体何も出来ない
0266デフォルトの名無しさん垢版2021/07/04(日) 18:27:39.63ID:CJXzLbyo
proxyを通して接続するときに、そのproxyが生きているかどうかだけ確認したいのですが
実際に存在する適当なサイトに接続してステータスコード200を確認すればよいのでしょうか?

今は、
プロキシ経由OKの(なるべくレスポンスの速い)サイトでrequests.getして200返ってきたらproxy生存
みたいにしてるのですが
それ専用のチェックの仕方があるのかな、と気になりました
0269デフォルトの名無しさん垢版2021/07/04(日) 21:43:55.75ID:aHJdtdht
>一つの言語を極めると、他の言語を覚えるのは簡単

これ自体が嘘。
10年以上掛かるし、各言語の特殊性を学んでも、再利用できないから無駄

YouTube で有名な、雑食系エンジニア・KENTA は全く逆の事を言ってる

80 : 20 の法則。
簡単な80% の部分だけを学ぶべき

難しい20%の部分は、特殊だから再利用できない・使う頻度が少ない割に、
学ぶ時間が何倍も掛かるので、効率が悪い

専門学校で必ず言われること

例えば、法律の条文の暗記とか、
15題ずつ、重要度A・B・Cのランクがあったら、
AB だけ暗記して、C を捨てろとか

使う・出る確率が低いから、そこに暗記コストを掛けるのが無駄

ドラゴン桜で言う、京大英語・赤本で英語を学ぶなという格言。
特殊で、誰も使わないようなトリビア表現に、時間を掛けるな

数百人のネイティブがチェックしてる、英検をやれ
0272デフォルトの名無しさん垢版2021/07/04(日) 22:19:49.10ID:YfSOCxWP
そうして簡単な単純労働しかできない人が量産されるんですね
0277269垢版2021/07/04(日) 22:40:16.40ID:aHJdtdht
簡単な80% の部分を、横に進めていく。
Ruby on Rails なんて、まさにそう。浅く広く

Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

さらに、AWS Fargate, Terraform, Vue.js, TypeScript

KENTA のサロン、AWSのくろかわこうへいのサロンに入る。
だから、1年の未経験者が、10年以上のプロよりも技術力が上になる!

時間が掛かる、難しい20%の部分を勉強しないから。
これを、KENTAが勉強方法のチートと言ってる

簡単な80%の部分の勉強時間は、20%しか掛からないのに、
難しい20%の部分の勉強時間は、80%掛かる

つまり、勉強時間では逆になる。
しかも、特殊だから再利用できない・使う頻度が少なく、役に立たない

例えば、C を10年やってる香具師の大部分の時間が、ポインターを追っかけている時間

だから、時間が掛かるだけで、何も学べていないから、
Railsを1年やっただけの未経験者に負けてしまう

Rubyの女神・池澤あやかも言ってる。
大学生がプログラミングで挫折するのは、Cをやるからだって

つまり、ほぼ無意味なことを長時間やるから、しょーもない
0279デフォルトの名無しさん垢版2021/07/04(日) 22:48:09.20ID:1R4z78Cs
統失煽りで文化人を一人殺したので
名前が同じだけでもてはやされてたKENTAは用済み
0281デフォルトの名無しさん垢版2021/07/05(月) 00:27:11.73ID:SA0zdM26
> だから、1年の未経験者が、10年以上のプロよりも技術力が上になる!

プロ舐めすぎやろ
自分のレベルすら正確に把握出来てないだけじゃん
0282デフォルトの名無しさん垢版2021/07/05(月) 01:30:50.54ID:cyuSl6kj
>>245
演算規則を考えよう
1 * 3 = 1 + 1 + 1 = 3
[1] * 3 = [1] + [1] + [1] = [1, 1, 1]
であるので、
[[1]] * 3 = [[1]] + [[1]] + [[1]] = [[1], [1], [1]]
となる
加算と乗算に一貫性をもたせるとしたらこうするか、
1 + 1 = [1, 1]
[1] + [1] = [[1] + [1]]
のような規則にするしかないけど、明らかに1 + 1がリストになっちゃうのは使いにくいでしょ
0284デフォルトの名無しさん垢版2021/07/05(月) 08:07:41.22ID:308oM4PQ
>>255
db=[10,20,30,40]
req=[0,2]
a=len(db)
for i in req: db.pop(i-a)
0286デフォルトの名無しさん垢版2021/07/05(月) 11:52:44.70ID:DJ8mSFAE
Railsはすべて分かっている人にとっては楽
初心者は設定や、細かいチューニングで必ずつまずく
0287デフォルトの名無しさん垢版2021/07/05(月) 14:49:22.59ID:WfBg4Dd7
pandasで特定の列(横)の重複した値を削除して一つだけにするのってどうするの
例えばA,B,C,B,C,DってあったらA,B,C,,,Dにしたい(BやCのみでも可)
0288デフォルトの名無しさん垢版2021/07/05(月) 14:56:34.11ID:zfQ+6anv
kwsk
0289デフォルトの名無しさん垢版2021/07/05(月) 17:20:56.75ID:rH8GS2yx
>>287
あえてPandas使ってとなるとむずいな
0290デフォルトの名無しさん垢版2021/07/05(月) 18:56:50.40ID:+tp9LwEv
BやCのみでも可なら
df.replace('B','').replace('C','')

それとは別にdf.duplicatedで空白にしたいインデックスがTrueになる
データフレームが得られる

データフレームにSQLほどの機能はないようだ
0291デフォルトの名無しさん垢版2021/07/05(月) 20:17:35.08ID:41zUyXOD
dfの横はlist的に扱えるから一次元リストの重複要素を任意の値に置き換えるという操作をするだけでは?
0293デフォルトの名無しさん垢版2021/07/06(火) 00:10:38.82ID:c1bms/+C
みんなのPythonで勉強しているのですがP340のwith文の説明がよくわかりません
私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています
この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか
openするファイルが存在しないと普通にエラーになるのですが
0294デフォルトの名無しさん垢版2021/07/06(火) 00:38:25.59ID:wcT5LwJn
modeによるとしか
readならその通り。writeはファイルが存在しなければ作成される。
0295デフォルトの名無しさん垢版2021/07/06(火) 00:48:09.74ID:IX8Wt/RA
modeの話?
0296デフォルトの名無しさん垢版2021/07/06(火) 00:52:21.13ID:AJxevGXU
Ruby では、存在しないファイルを読もうとしたら、エラーになる。No such file

print File.read 'abc.txt'

出力
No such file or directory @ rb_sysopen - abc.txt (Errno::ENOENT)
0297デフォルトの名無しさん垢版2021/07/06(火) 01:06:54.99ID:c1bms/+C
参考書の例文はモード指定しない既定なのでreadです
with文のreadモードで開いたファイルをfor文で一行ずつprintしています
説明によると、ファイルが存在していたら処理を行うという意味のコードになるとのことです
0299デフォルトの名無しさん垢版2021/07/06(火) 01:33:10.58ID:M25Qh6q2
>>293
>私の理解では、with文でopen()した場合は、ファイルを最後まで読み切ったら自動的にclose()する処理になると思っています

違うよ

>この参考書には、openするファイルが存在しなかったらファイルを開かないで処理を終了する、ということが書いてあるのですが間違っていないでしょうか

サンプルコードではFileNotFoundErrorをハンドリングしてるね
https://colab.research.google.com/github/shibats/minpy_samplecodes_4th/blob/master/Chapter10/10-01.ipynb
0300デフォルトの名無しさん垢版2021/07/06(火) 16:37:29.04ID:ewE8N/dz
def test():
__return random.randint(2,5)

obj=[test(), 0, 1]
l = random.choices(obj, k=3)
# -> [4,2,0]

testが毎回実行されて(lに違う数字で入って)ほしい
どう書けばいいの?
0301デフォルトの名無しさん垢版2021/07/06(火) 16:45:42.95ID:Fj5fpx8O
>>293
withブロックを出るときにclose
open関数の中で
ファイル確認して
ファイルを開く
ファイル確認でエラー
開いてない
ないのに開けない
0302デフォルトの名無しさん垢版2021/07/06(火) 16:46:46.00ID:8bcWgGBz
def test():
__return random.randint(2,5)

def exectest():
__obj=[test(), 0, 1]
__l = random.choices(obj, k=3)

exectest()
0303デフォルトの名無しさん垢版2021/07/06(火) 18:44:35.16ID:yuAoY/NP
numpy.loadtxtでcsvファイルを読み込むんだが、csvファイルのデータが崩れていることがある。
で、何行目にエラーがあって取り込めなかったのかを知りたいんだが、いい方法ない?

データが崩れているというのは、例えば、
-1.234,123.45.789,
みたいに、ありえない数値表現が紛れているということなんだが

csvファイルが崩れないようにするのが本筋だけどそっちに頑張る気がないので
おかしな行を見つけたら手動でその行を削除して再度処理という感じで運用したい
0305デフォルトの名無しさん垢版2021/07/06(火) 20:02:32.04ID:MGYt6+tS
通常はどういう数値が入るのか分からんとなんとも言えないな
0307デフォルトの名無しさん垢版2021/07/07(水) 00:12:50.55ID:eWdID8i0
>>303
1pandasで文字列としてロード
2走査しつつ数値にパース
3失敗したらスキップ
0308デフォルトの名無しさん垢版2021/07/07(水) 00:17:53.03ID:bUHYGk47
例えば、Ruby では各列を、変換器・converter で変換して、
変換できたかどうか、型を確認するとか

require "csv"

input_str = <<"EOT"
-0.0,1.2.3
9..9,-0
EOT

csv = CSV.new( input_str )
csv.convert( :numeric ) # 数値型へ変換する

line_num = 0 # 行番号
csv.each do |row|
line_num += 1
p [ line_num, row[ 0 ].class, row[ 1 ].class ]
end

出力
[1, Float, String]
[2, String, Integer]

1.2.3, 9..9 が、変換に失敗して、文字列型のまま
0309デフォルトの名無しさん垢版2021/07/07(水) 00:41:11.10ID:DonMIAPH
>>293です
よく分からなかったのは私の勘違いが原因でした
P340に記載されている内容はP338の差分だったことが分かりました
やっと理解できました
失礼いたしました、皆様ありがとうございました
0311デフォルトの名無しさん垢版2021/07/07(水) 14:46:15.07ID:JFEXb6g2
pep8に
単一の文字 'l' (小文字のエル)、'O' (大文字のオー)、'I'(大文字のアイ) を決して変数に使わないでください。
フォントによっては、これらの文字は数字の1や0と区別が付かない場合があります。

ってあるけど、上のような理屈であれば、単一の文字でなくても同じ理由で使うべきではないことになるんでは?
0312デフォルトの名無しさん垢版2021/07/07(水) 15:11:46.21ID:49748z4f
10ng と long と IONG を間違うかって話だな
0313デフォルトの名無しさん垢版2021/07/07(水) 16:43:31.83ID:2KJNjcti
$python hoge.py 10 | python hoge2.py | python hoge3.py

### hoge.py ###
import sys
for i in range(int(sys.argv[1])):
_print(i)

### hoge2.py ###
import sys
a=''.join(sys.stdin.readlines()).strip().split('\n')
a.append(len(a))
for n in a:
_print(n)

### hoge3.py ###
import sys
print(len(''.join(sys.stdin.readlines()).strip().split('\n')))

ざっくり
(1)hoge.py 10で10個数字を出力
(2)hoge2.pyで受け取り、値を追加して出力
(3)hoge3.pyで受け取り、1個増えたことを確認
なのですが、受け取った値を成形する
''.join(sys.stdin.readlines()).strip().split('\n')
の部分はこの書き方でよいでしょうか?
そもそも標準出力をprintでやるのかもわかりません
それ専用の標準ライブラリとかあるのかな
0314デフォルトの名無しさん垢版2021/07/07(水) 17:49:17.95ID:vUBZA2na
>>313
標準出力はprintでやるのでいいよ
1行ごとに処理したいわけじゃなければ.read().splitlines()すればいいと思う

#hoge2.py
import sys
a = sys.stdin.read().splitlines()
a.append(len(a))
for n in a:
__print(n)

#hoge3.py
import sys
print(len(sys.stdin.read().splitlines()))
0316デフォルトの名無しさん垢版2021/07/08(木) 21:41:26.17ID:g5ngXWNu
raspbian buster上のpython3.7.3で、
subprocess上で読み込むcsvファイルをStringIOにするとうまくいかず困っています。

以下2つのソースで、異なるのは1行目だけです。

[test1.py]
CSVFILE = '/tmp/1.csv'
with open(f'{CSVFILE}', 'a') as CSV:
writer = csv.writer(CSV)
writer.writerow([12,34,56])
CSV.close()
cmd = (f'cat {CSVFILE}')
proc = subprocess.run(cmd, shell=True)

[test2.py]
CSVFILE = io.StringIO()
with open(f'{CSVFILE}', 'a') as CSV:
writer = csv.writer(CSV)
writer.writerow([12,34,56])
CSV.close()
cmd = (f'cat {CSVFILE}')
proc = subprocess.run(cmd, shell=True)

$ python3 test1.py
12,34,56

$ python3 test2.py
/bin/sh: 1: Syntax error: end of file unexpected

何を見落としてるんでしょうか…?
0317デフォルトの名無しさん垢版2021/07/08(木) 22:38:29.83ID:PyDOiOef
何をしたいかが全く分からないがとにかく
そのエラーは/bin/shが
cat <_io.StringIO object at 0x7f1360de01f0>
とかいう文字列を実行しようとして
>が出力のリダイレクトと解釈してその後にファイル名がないからエラーになってる
0318316垢版2021/07/09(金) 07:49:00.55ID:6wIK8ZSE
>>317
ありがとうございます!
例で実現したいことは、
$ python3 test2.py
12,34,56
この結果が出るにはどうしたら良いかが知りたいです。

シェルから見て実体のあるファイル名でないとダメってことですね。それはそうか。
一度ファイルシステムに書き出せば良いのでしょうが、それ以外の手はないでしょうか。

なお、例では長くなるのでcatコマンドに書き換えましたが、実際にやりたいことは
「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」というプログラムです。
処理結果の数字は毎秒積み上がっていくのと、プログラム終了時には実体のcsvファイルに書き出したいのとで
プログラム上では、StringIOを使ったcsvファイルとして処理したいです。
0319デフォルトの名無しさん垢版2021/07/09(金) 08:12:26.61ID:2AR12dC9
>>318
>「pythonの前段処理結果をcsvに書き込み、そのcsvをgnuplotで読み込んで作図(を毎秒繰り返し)」
だったら質問の意味が尚更分からん
上記の処理を1プログラムでやりたいなら
Pythonで前処理⇒直接前処理結果をグラフ作画⇒作画後に必要に合わせてデータをcsv出力
っていう流れの方が良くね?
書き込んでから読み込む必要性が全く分からん
0320316垢版2021/07/09(金) 08:30:32.97ID:6wIK8ZSE
>Pythonで前処理⇒直接前処理結果をグラフ作画
前処理では複数行複数列の数字(時間と温度です)を積み上げていくので、
その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです。

それとも、そもそもpythonスクリプトとしては前処理のアウトプットだけでexitし、
gnuplotはOS側シェルで普通に動かして前処理結果を使えば?という意味だとすれば、
今回はpythonスクリプト内でgnuplotを動かしたいです。
0321デフォルトの名無しさん垢版2021/07/09(金) 08:51:54.66ID:sj/mydTS
データが来るたびにファイルに追記していく(writeのあとにflush)
gnuplotは別に起動して毎秒ファイルを読み直す
と分けるのがよさそうに見える
0322デフォルトの名無しさん垢版2021/07/09(金) 09:04:12.08ID:2AR12dC9
>>320
>その前処理結果のgnuplotへの渡し方としてcsvが適当かな、と思ったためです
gunplotのマニュアル確認したけど、それなら素直にCSVファイルとして書き出さないと無理じゃないか?

大学か会社の都合か分からんけど
Pythonで素直に一連の動作をさせるなら
matplotlibの方がよっぽど楽だけど、それだとダメなんだよな
0323316垢版2021/07/09(金) 09:08:57.43ID:6wIK8ZSE
もともとはシェルスクリプトでそんな感じでやっていて、
拾ってきたpythonで温度を測定し、結果を/tmp/temp.csvに書いてそれをgnuplotに読ませてました。
実はgnuplotが書いたグラフ(png)をまた(拾ってきた)pythonでOLEDに描画するという後処理もあって、
全工程で1秒ちょっとかかってました。
そこで、おっしゃ自前でpythonの1スクリプト化して高速化や!コピペマンから脱却するやでー!
という素人考えで今に至っています。
pythonの1スクリプトで、>>316に書いたtest1の方法(中間ファイル書く)でも
シェルスクリプト版の倍は速く動いてるので、あとはStringIOさえできれば…と思ってました。

何分素人なのでそもそもの考え方が間違ってるところもあるとは思いますが、
なぜそう思うに至ったか、という話でした。
0324316垢版2021/07/09(金) 09:14:25.66ID:6wIK8ZSE
>>322
やっぱ実体としてのcsvファイルがないとダメですかね…ありがとうございます。

matplotlibはグラフ描くがgnuplotより難しそうだから見なかったことにしてました。
いい機会だから、もう一度調べてチャレンジしてみます。
0325デフォルトの名無しさん垢版2021/07/09(金) 09:20:09.59ID:2AR12dC9
>>323
すげえ面倒な方法で見える化やってるなwwwwww
慣れたらmatplotlibも描くの簡単だぞ、Pandasとかnumpyとの相性も良いし

ただ根本的な所で言えば、既存の見える化フローが結構ヤバイな
(グラフ画像をOLEDで映し出すっていうのが衝撃だわ)

抜本的に改善したいなら
Pythonでデータ処理⇒データベースに書き込み⇒データ系の見える化ツール
っていうのが理想形だな
TableauとかPower BIみたいなツール使うと見やすくなる(有償だけど)
無償ツールなら英語だけどGrafanaとかかな?
0326316垢版2021/07/09(金) 09:39:34.13ID:6wIK8ZSE
>>325
今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
趣味の焙煎釜の温度変化を熱電対で計測し、手元でリアルタイムにグラフ描画したい、
そして記録をcsvに残したい、というのが目的です。
今は単機能の熱電対プローブでやっていて、温度変化が全くわからないので。

そこでまずはアリエクで300円しないOLEDを買ってラズパイに繋いで
gnuplotのpngをSPI接続のoledに送り出し続けるという形にしました。
ほんとはpythonからoledのライブラリとか使って直接描画とかもできるのかもしれませんが、
matplotlibともどもフタをしてました…
これがうまくいったら、OLEDやめてラズパイケース一体液晶にしても良いかなとは思っています。

GrafanaやPowerBIは別件で使ったこともあって、後分析には良いですよね。
0327デフォルトの名無しさん垢版2021/07/09(金) 09:47:38.88ID:2AR12dC9
>>326
>今回はラズパイローカルでグラフを物理画面に即描画したいんですよね。
あーなるほど、そういう使い方もあるのか……俺の知識不足だったすまん
ただ結局グラフのpng画像を生成出来れば問題なさそうだし、matplotlibの差し替えが無難な気はするな
0328デフォルトの名無しさん垢版2021/07/09(金) 23:58:06.76ID:dI9qqvw1
int型の足し算ではintクラスの持っている__add__メソッドが暗黙的に呼び出されていると思います。
ですが、
1.__add__(2)
のようにすると1+2が実行されず構文エラーになります。これは何故でしょうか?

str型の場合は問題なく実行され、以下の場合"aabb"が返ってきます。
"aa".__add__("bb")
0329デフォルトの名無しさん垢版2021/07/10(土) 00:16:00.86ID:8UKJFvZ/
詳しくないが 1. が小数になるのが原因だろう
(1).__add__(2)
とか
1..__add__(2)
ならエラーにならない
0330デフォルトの名無しさん垢版2021/07/10(土) 00:16:24.03ID:Rm9mfcPV
1.x(float)か1のメソッドなのか決まらないから
1.1.__add__とかはメソッドなのが分かるから通る
0332デフォルトの名無しさん垢版2021/07/10(土) 10:33:46.40ID:chyfa+iT
Python3.7で、pdbのtrace中とそれ以外でプログラムの挙動が異なるという問題に悩んでいます。
■現象
PySimpleGUIのpng画像をwhile True:で延々と更新し続ける処理が、
・pdb set_trace中は想定通りに画像が更新され続ける(ただし途中でpdbが止まる)
・traceを外すとそもそも画像が表示されない

■処理
"conv_image"を別関数で更新し続け、
このwindow更新行をwhileで回すだけの処理です。
window['-image-'].update(data=get_img_data(conv_image))

■pdbが止まる件
不思議なのは、通常pdbはデバッグ中に一度nで次に進むと、次行からはEnterだけでエラーのない限り進みますよね。
でもEnter押しっぱなしにしてると、この行でエラーの表示もなくpdbがいったん止まります。
nを押すと進み、画像が更新されます。
そこが問題のポイントなのかなと思いますが、それ以上の手がかりがありません。
0336332垢版2021/07/10(土) 14:33:07.51ID:chyfa+iT
>>333
すみませんでした…
ttps://dpaste.com/AQL5WPNUS
手元のraspbian buster python3.7.3では、ここまで削っても
後ろから4行目のpdb.set_trace()有無で、>>332に書いた現象が出ます。

>>334
window['-image-'].update(data=conv_image)
こうでいいんじゃないの?と思って最初はこう書いてたんですが、
BytesIOが生で見えてるのか何なのか、"TypeError: 'int' object is not callable"エラーが出ます。
ググったところ、get_img_data関数(割と一般的らしい)を使えとあったのでそのようにしたところ、表示できるようになりました。

>>335
試しに2ヶ所あるwindow.updateの直後にtime.sleep(1)を入れてみたんですが、変化なしでした。
0337デフォルトの名無しさん垢版2021/07/10(土) 16:36:24.47ID:c5RJ/qlV
>>336
PySimpleGUIでメッセージ処理させるのはwindow.read()
メッセージ無くても回したいならtimeoutを指定する
0338デフォルトの名無しさん垢版2021/07/10(土) 18:01:51.33ID:lk+ovMEl
window.read()してないのでtk.update()が呼ばれず画面が更新されない
window.TKroot.update()を呼べば画面が更新されるが
直接呼ばずにwindow.read()を使ってメッセージループを作るほうがいい

デバッグセッション時はそれだと使いにくいから何か対処されてるっぽい
0339332垢版2021/07/10(土) 18:38:29.97ID:chyfa+iT
ありがとうございます。なるほど…!
どこかでサンプルプログラムをコピペしつつ、ボタンはどうでもいいから
とりあえず画像表示ループだけ回そうと適当かつ中途半場に行を削除してしまったので、
その結果イベント処理が進まない状態ということですね。
すごく良くわかりました。
どう処理するかよく考えて書き直してみます。
0340デフォルトの名無しさん垢版2021/07/11(日) 08:30:07.56ID:k6naGpL9
ユニークな長いリスト src があって
おのれはユニークだけどsrcと重複しうるリスト reqがある
reqの要素がひとつでもsrcにあれば云々したい
速いのを探しています。外部ライブラリは使えない

test = set(req)
bool([i for i in req if i in test])
?
0341デフォルトの名無しさん垢版2021/07/11(日) 09:23:01.16ID:FD6lxZ3g
any()かfor-loopのearly breakを使う

srcは長くて固定的、reqは短くて毎回変わるなら
srcのほうをsetにして管理したほうがいい
0342デフォルトの名無しさん垢版2021/07/11(日) 10:48:10.63ID:k6naGpL9
いや冷静に考えたら
フツーにset(src)&set(req)か
0343デフォルトの名無しさん垢版2021/07/11(日) 10:50:02.39ID:BLRKNf/m
共通要素を全て調べ上げる必要が無いなら>>341の方が速いな
0345デフォルトの名無しさん垢版2021/07/11(日) 12:26:28.31ID:k6naGpL9
>>341
set(src10万)
req300 重複0〜5
ではany()と&はほぼ誤差
bool([i in set])がわずかに遅い感じでした
センキュー
0347デフォルトの名無しさん垢版2021/07/11(日) 19:05:49.41ID:akfEDp81
違和感というのは[]を()のように捉えてるから
リストや文字列に対する*は数学の掛け算とは無関係
要素数を増やせという機能


> [3*3] -> [9]
数学の掛け算
> [3]*3 -> [3, 3, 3]
リスト内の要素3を数で3つに増やせ
> [[3*3]] -> [[9]]
掛け算
> [[3]*3] -> [[3, 3, 3]]
内側のリストの要素3の数を3つに増やせ
> [[3]]*3 -> [[3], [3], [3]]
リストの要素[3]を3つに増やせ
0350デフォルトの名無しさん垢版2021/07/12(月) 00:05:06.94ID:hfOyhNhX
サブクラスからスーパークラスのメソッドを呼び出す場合、次の@とAは同じ意味ですか?
同じならどちらで書いた方がいいとかありますか?

class MyClass1:
def __init__(self, name):
self.name = name

class MyClass2(MyClass1):
def __init__(self, name):
@ super().__init__(name)
A MyClass1.__init__(self, name)
0351デフォルトの名無しさん垢版2021/07/12(月) 00:29:53.14ID:2Zpr4/N8
わざわざsuper というキーワードが用意されているのだから使わない理由ないだろ
クラス名を変更した際の影響範囲を考えてみよう
0354デフォルトの名無しさん垢版2021/07/12(月) 20:27:18.44ID:HIUYKm1A
それは*3が同じものを3つ足し合わせなさいという
常識的な意味合いをわかりやすさのために利用してるだけで
数学的なことなら割り算もあるでしょ
0356デフォルトの名無しさん垢版2021/07/13(火) 01:00:18.86ID:o9TqNFAF
>>351
>>352
ありがとうございました
ある本に説明もなく両方の記載があったので悩んでました
この機会に多重継承も勉強しようと思います
0359デフォルトの名無しさん垢版2021/07/13(火) 11:39:29.89ID:Oq4/PEVt
pythonバージョン3.8.1で次のようなことをしようとしていますが、関数の配置に困っています。

次にするイベントを抽選する

イベントを実行する

イベント終了後にイベント抽選へ戻る

しかし、これだとイベントを抽選する関数をイベントの関数より上に置くとイベント抽選の関数がイベントの関数を認識してくれず、
下に置くと、各イベントの関数がイベント抽選の関数を認識してくれません。
なんとか動かす方法はないものでしょうか?
0360デフォルトの名無しさん垢版2021/07/13(火) 11:45:58.98ID:uAPVX+Xy
5chのこの板のAndroid版のスレタイトル一覧を取得したいのですが、スレタイトル部分だけ抜けてしまいます。
htmlを見ると、スレタイトル部分はjava scriptを呼び出して(?)表示しているようです。
このような別から呼び出す仕組みの検索語だけでも知りたいです。

実行環境はWindows10のcolabです。
何卒よろしくお願いします。

以下がソースとhtml抜粋です。

https://pastebin.com/dq4FFsM3
0361デフォルトの名無しさん垢版2021/07/13(火) 11:52:22.48ID:eWSxSU0S
相互参照は常に避けるよう心がけるべき。
回避する方法はいろいろあるけど、
イベント抽選関数はイベントの関数に引数として渡してあげるとか、
イベントの関数はすべて同じ引数、戻り値にしておいて、イベント抽選システムへ予め登録しておく方式にするとか
0362デフォルトの名無しさん垢版2021/07/13(火) 11:55:28.21ID:I5G4+d/9
知らんけどmain関数のなかにwhile True: 抽選関数()
みたいにしてループさせて抽選されたイベント自体は抽選関数を呼ばなければいいだけじゃないの
0363デフォルトの名無しさん垢版2021/07/13(火) 11:59:46.95ID:0QNuXsy/
ttps://mevius.5ch.net/tech/subject.txt
> スレタイトル一覧を取得したい
> このような別から呼び出す仕組みの検索語だけでも知りたい
どっち?
スレタイ取得ならsubject.txt読ませればいいじゃん
わざわざしかもitestのhtmlをスクレイピングする理由あるの?
0364デフォルトの名無しさん垢版2021/07/13(火) 12:22:40.44ID:WUJYnH4r
>>354-355
*3がどう展開されるかより
もっと深刻な問題は
[[?]]*Nの内側の[?]はコピーされていないということだろ
0365デフォルトの名無しさん垢版2021/07/13(火) 12:24:59.10ID:WUJYnH4r
>>359
前方参照でぐぐれ
0366デフォルトの名無しさん垢版2021/07/13(火) 12:26:33.03ID:WUJYnH4r
>>360
5chはスクレイピング禁止
0367デフォルトの名無しさん垢版2021/07/13(火) 12:31:27.78ID:QsXB5/qu
>>359
イベントの関数定義と、抽選・実行をする処理とはファイルを分けて
前者を後者のファイルでimportして使う

1ファイルでできなくもないけど
モジュール分割を早めに覚えておいたほうが散らかりにくい
0368デフォルトの名無しさん垢版2021/07/13(火) 12:43:35.25ID:dtNqNBdW
>>360
Ruby, selenium-webdriver では、
execute_script で、そのまま、JavaScript ソースコードを実行できる

ただし、5ch で頻繁にスクレイピングすると、アク禁にされるかも

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り放す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout

url = "サイトのURL"
driver.navigate.to url # 移動する

js_code = <<"EOT"
var elem = document.getElementById( 'abc' );
EOT

driver.execute_script js_code # JavaScript を実行
0369368垢版2021/07/13(火) 13:03:34.95ID:dtNqNBdW
5ch は最初に、空のHTML を送ってきてから、
その後、JavaScript(Ajax)で通信して、内容を取り込む

だから単に、Ruby のNokogiri などでスクレイピングをしても、
空のHTML が取れるだけで、まだ内容が読み込まれていない

だから、15秒ぐらいスリープして、内容が読み込まれるまで待つ必要がある

または、selenium-webdriver で、ブラウザを自動操作して、
driver.manage.timeouts.implicit_wait = 15 # 要素の検索の timeout
みたいに、要素が存在しない場合に、何秒待つか指定する
0370359垢版2021/07/13(火) 13:16:57.35ID:Oq4/PEVt
ご回答ありがとうございました。
私があまりに初心者過ぎて、せっかくの具体的なご回答をほぼ理解できませんでしたが、
この状態を相互参照と呼ぶことが分かってようやくググることができ、
>>362さんのレスから着想を得て、main関数を作ってプログラムを全部括れば動くということが判明しました。
以上ご報告と御礼申し上げます。
0371360垢版2021/07/13(火) 17:54:03.79ID:28i3hfQd
>>368
ありがとうございます。
Ajaxという技術なのですね。
webdriverでwaitを入れたところ取得できました。


>>363
すいません説明不足でした。
実はPC版はシンプルなため取得できていました。
勉強のためにAndroid版も見てみようと思いやってみたところ、取得できなかったためお聞きしました。

皆様、勉強になりました。
ありがとうございました。
0372デフォルトの名無しさん垢版2021/07/13(火) 18:33:25.76ID:KwvhlQcy
>>354
そのツッコミをするなら、群と体の違いについて理解しようか。
掛け算があっても、割り算が必ずしも定義できるとは限らない。
0374デフォルトの名無しさん垢版2021/07/15(木) 02:12:23.66ID:0WF/Cs9d
スクレイピングでrequestsで上手く取得できないサイトはSeleniumで取得するようにしてるんだけどこれにThreadPoolExecutorを使用するとしたらどういう書き方すればいいの
今までは複数のサイトのURLが入ったリストをfor文で回しつつif文でドメインが一致するかどうかでrequestsとSeleniumを使い分けていたけど非同期にするとなるとさっぱりわからん
0375デフォルトの名無しさん垢版2021/07/15(木) 12:00:52.16ID:Rdfymp1t
クラスのメンバをforループのように回す方法はないですか?イメージは、
class Test:
a=0
b=0
c=0
def _print(self):
for member in self:
print(member)

みたいなことをやりたいです。
0379デフォルトの名無しさん垢版2021/07/15(木) 16:37:18.28ID:0u9iXN8m
そういうクラスのためのdataclass
astuple, asdictでイテレートもできる。
自分で用意できないクラスのオブジェクトの時は、dir()で列挙した後にごにょごにょしていく必要があるけど。
0380デフォルトの名無しさん垢版2021/07/15(木) 16:50:42.66ID:TtIRjd2i
この度pyinstallerでどのshell環境でも動作するコマンドを作成しました。

しかし5年前くらいのIntelMacでさえ快適に動作しますが、
M1macbookではかなりもっさりして遅いのです。

これはarm64アーキテクチャのせいで遅い可能性はありますか??
またこういったケースでの改善策などありますか??
arm64用にコンパイル方法などありましたら教えてください。

コマンドはスクレイピングした結果を別ファイルに落とす
シンプルなコマンドです。
shellscriptだとちょい面倒だったのでpythonで書きました。
0381デフォルトの名無しさん垢版2021/07/15(木) 20:50:47.41ID:Rdfymp1t
ありがとうございますが、
>>377だと順番が毎回ランダムになる
>>378だと順番がアルファベット順になる?(多分)
csvの要素と対応付けたいので定義順に出てくれないと困ってしまうのです・・
>>379はバージョン不足で不可。(3.5系)
1番目が順不定になるのも多分dictの順番が保持されてないせいだと思いますしやっぱり素直にアプデですかねぇ。。。こんな仕様にしたのほんとに誰ですか
0384デフォルトの名無しさん垢版2021/07/17(土) 15:16:05.35ID:eTC1af8g
定義順に出てくれないと困ってしまう

source を parse 汁
0385デフォルトの名無しさん垢版2021/07/17(土) 15:16:05.74ID:eTC1af8g
定義順に出てくれないと困ってしまう

source を parse 汁
0386デフォルトの名無しさん垢版2021/07/17(土) 17:21:49.51ID:6TQt0Sye
seleniumって、3つくらいタブを開いて作業して、そのままwindowsを休止状態にして翌日立ち上げ直すと、開いていたタブを忘れるよね。

no such window とかエラー吐く
0388デフォルトの名無しさん垢版2021/07/18(日) 16:26:22.10ID:8WwhxwTZ
質問です。
https://docs.python.org/ja/3.10/library/typing.html
に記載の
-----
@overload
def process(response: None) -> None:
...
@overload
def process(response: int) -> tuple[int, str]:
...
@overload
def process(response: bytes) -> str:
...
def process(response):
<actual implementation>
-----
の「...」はどういう意味でしょうか。
vscodeでそのまま...で書いたら特にmypyやflake8はエラーも吐かずに、
そのまま実行できたので、何かしらの文法かとは思っていますが、検索して見つからず、passとの違いが気になりまして。
0389デフォルトの名無しさん垢版2021/07/18(日) 16:35:53.43ID:sC7cbule
インタプリタを起動して...だけ入力してEnterしてみれば分かるよ
答え言っちゃうと...はEllipsisオブジェクトを作る省略記法だな

ただし引用されてるコードはEllipsisオブジェクトを作ることを意図してる訳ではなく
単に「ここには任意の実装がありますが、説明したいことの本質とは無関係なので省略しますよ」という意味で書かれているだろう
プログラムの話というよりは国語の話だ
0390デフォルトの名無しさん垢版2021/07/18(日) 16:53:56.22ID:8WwhxwTZ
>389
ちょっとEllipsisでしらべてみましたが、オブジェクトを返すんですね。
理解しました、ありがとうございました。
0391デフォルトの名無しさん垢版2021/07/18(日) 17:44:08.93ID:UkQCwsAx
お聞きしたいことがあります。変数の定義に1以上□以下。とやりたいのですが、□にまた別の変数を入れたいのです。この場合どうすればいいのでしょう。別の変数はちゃんと整数で定義してあります。
そして、その定義内の全部の数字を一つずつ代入して計算する。というのもやりたいです。立式はもちろんできるんですけど、プログラムに反映させるのがどうにも難しくて。調べてもよくわからないのです。恐らく調べ方が悪いだけなのかもしれませんが。。よろしくお願いします。
0392デフォルトの名無しさん垢版2021/07/18(日) 18:00:24.58ID:jPlpwmso
numpy 使え
linspec
0394デフォルトの名無しさん垢版2021/07/18(日) 18:19:36.49ID:UkQCwsAx
>>392>>393
申し訳ないです。numpyは入れましたが分かりませぬ。そして393さんの式が何を意味してるのかも分かりません。
当方中学生なもので。プログラミングの知識が皆無と言って良いほどなんです。すみません
0395デフォルトの名無しさん垢版2021/07/18(日) 18:54:09.31ID:Xl9gD1Ws
>>394
中学生が5chのプログラム板に流れ着くっていうのも凄いな

簡単なサンプルコードをとりあえず出しておくけど
入門書とかまだやってないなら、一旦そっちやった方が良いかもな
(質問の内容ぐらいだったら、ライブラリとかは不要で基本を組み合わせるだけで出来る)
https://ideone.com/q7v4da
0398デフォルトの名無しさん垢版2021/07/20(火) 09:21:51.96ID:2ecX9oPq
自称中学生のおっさん臭プンプン投稿
0399デフォルトの名無しさん垢版2021/07/20(火) 09:31:55.38ID:2ecX9oPq
>>391
>>394
import numpy as np
s = 15
list1 = np.linspace(1, s, s)
print(np.power(2, list1).astype(np.int))
0400デフォルトの名無しさん垢版2021/07/20(火) 12:30:08.20ID:Mdyk1C1W
命名規則スレに書くか迷ったんだけどとりあえずこっちで…

tkinterでラベルとかボタン複数作るとき
各々text埋め込むんじゃなくて、名前テーブル参照するようにしたい
このときたとえば
self.x_btn = tk.Button(root, text=self.db.name[0])
てすると、これインデックスがマジックナンバー化すると思うんだけど
通常どのような呼び出し設計にするのですか?
self.db.name["ウィジェット名"]とか?
0401デフォルトの名無しさん垢版2021/07/20(火) 18:51:14.03ID:zCG2UJGN
通常はリテラルで直接textに代入して
数が多かったらwidth等と合わせてリスト化して
for i inで回すかな
0402デフォルトの名無しさん垢版2021/07/20(火) 19:37:39.84ID:b4jpo/5+
テーブルにする必要があるのか?
直でいい気もするけど、それが嫌ならどこかに
BUTTON_NAME_XXX = "XXXのボタン名"
・・・
とか羅列していってそこ参照して終わり
テキスト以外にフォントや背景色とか配置情報まで全部まとめてdbのように管理して自動配置したいってなら分からなくもないけど
テキストだけならいらない、やってる感出るだけで意味があまりない
0403デフォルトの名無しさん垢版2021/07/20(火) 21:14:39.90ID:Mdyk1C1W
あー定数のようなものにして
テーブル相当の場所に列挙しとく感じですね
なるほど
0404デフォルトの名無しさん垢版2021/07/24(土) 07:46:47.19ID:7TtC0ooc
requestsでtry:except:で特に問題なく使ってたけど
なぜかプログラムが止まることがあってどこでループでもしてるのかと探してたらrequestsのタイムアウトが原因だった
今までのサイトでtimeout設定なしで止まったことなかったので新たな発見だった
0405デフォルトの名無しさん垢版2021/07/24(土) 14:55:00.78ID:hiQTHxs1
Scrapyくわしい人おるか?
Spiderにインスタンス変数持たせたいんだけど
__Init__をオーバライドしてやるしかないの?
スパイだのobjectが変数持ってくれたら何でもいいんだけど
0406デフォルトの名無しさん垢版2021/07/24(土) 16:34:15.11ID:rOUP+Gb+
__init__が要件を満たさない理由を書けよ
それが明らかでないと、別の方法を提案しても同じ理由で要件を満たさないかもしれないし
そうなると二度手間だろ
0407デフォルトの名無しさん垢版2021/07/24(土) 17:01:57.99ID:hiQTHxs1
>>406
単純にSuperするのがマンドクセからです
重厚なフレームワーク使ってるんだからなんか他の方法あるかなーと思いました。
Response.meta に入れたら次のResponse にも引き継げる?
0409デフォルトの名無しさん垢版2021/07/24(土) 19:18:50.35ID:vC93mKDQ
馬鹿には無理
0410デフォルトの名無しさん垢版2021/07/24(土) 19:22:14.64ID:zcVNczsi
pythonしか知らないんですが
普通のアプリケーションってリリース後にパッチ当てれますよね
pythonをpyinstallerしたやつを公開したあと
パッチリリースってできるんですか?
検索ワードすら思いつかない(モンキーパッチばかりヒットする)ので、ヒントだけでもください
0411デフォルトの名無しさん垢版2021/07/24(土) 19:23:20.77ID:zcVNczsi
失礼
普通のアプリケーション ☓
普通の(Cとかの)言語のアプリケーション ○
0412デフォルトの名無しさん垢版2021/07/24(土) 19:43:03.25ID:LBBZ+Kmj
可能かどうかで言えば可能だがやる価値があるかは分からんな
パッチプログラムにバイナリ差分を持たせてパッチしたいファイルに書き込めばよかろうさ
0414デフォルトの名無しさん垢版2021/07/24(土) 20:22:46.33ID:/Rm8B1//
pythonって案件ないのにどうして人気なの?
稼げない言語を極めても意味ないと思うんだけど
0418デフォルトの名無しさん垢版2021/07/25(日) 08:02:14.79ID:Ie3kKwwU
>>404
Ruby, Selenium Webdriver で、ブラウザを自動操作する時には、
長めに、timeout を設定する事もある

設定しなければ確か、10秒ぐらい。
timeout 時間内に、指定した要素が取得できなければ、timeout エラー

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new
options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # default timeout

driver.navigate.to "どこかのURL" # サイトを開く
0419デフォルトの名無しさん垢版2021/07/25(日) 12:20:12.59ID:Xu27tChN
つーか普通に新版exeで置換すればいいだけでは?
パッチってあらゆるリソースケチりまくってた過去の時代の遺物って印象
現代でもメリットあるんか?
0420デフォルトの名無しさん垢版2021/07/25(日) 14:35:17.23ID:Rm4fQ9D9
>>414
Pythonはログ解析とかデータ生成とかちょっとした作業に便利だから愛用してた

ウォーターフォール型の大型案件ばかりで開発マシンも自由にできないような職場が好きなら
勉強しても無意味かもしれない
0422デフォルトの名無しさん垢版2021/07/25(日) 20:53:00.06ID:Q6f/SFdd
Pythonの言語指定の案件があるわけじゃなくて、
データ分析とかPOCとかの言語はなんでもいい案件ではPythonが使われることが多いというだけだね
ある言語、資格、ドメイン知識さえあればとりあえず食っていけるだろうという算段でプログラマーになる人には向いてないかもね
0423デフォルトの名無しさん垢版2021/07/25(日) 22:08:57.17ID:Ie3kKwwU
YouTube で有名な、雑食系エンジニア・KENTA のサロンでは、Ruby on Rails のみ。
時給1万円のキャリアパスも、Rails → Go だけ

PHP は低時給。
Python も、Django も使われていないし、採用に無関係

Python・Julia は、MIT みたいな大学院数学科みたいな学歴で採用されるから、
プログラミング能力は無関係。
一方、ハーバードみたいな英語ができる文系は、Rails 一択

たぶん、KENTAが、PHP・Python を教えないのは転職できないから。
プログラミングを教えても、それで採用されない。
数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない

それで、転職できない文系がサロンに居座ると、サロンが崩壊するから、Railsのみ。
そもそも、KENTAは文系だし、数学を教えられないし
0424423垢版2021/07/25(日) 22:12:36.27ID:Ie3kKwwU
YouTube で有名な、たにぐちまことも言ってる

Python の動画も作りたいけど、
内容が数学だから、数学の勉強しないと作れないって
0426デフォルトの名無しさん垢版2021/07/26(月) 09:09:51.50ID:/SQnPJdV
> 数学・統計・行列・微積分など、大学院数学科の内容だから、プログラマーじゃない
工学部の1,2年の内容なんですが
0427デフォルトの名無しさん垢版2021/07/26(月) 09:44:59.71ID:UUQ7nGaW
昔はその程度は高校の範囲だったな
0429デフォルトの名無しさん垢版2021/07/26(月) 12:21:49.83ID:J2jKaJpL
Rubyガイジはこの板全域にいるからPythonコンプってわけでもなかろう
bashスレとかにもいる
0432デフォルトの名無しさん垢版2021/07/26(月) 17:44:49.37ID:LrxxSQmZ
>数学・統計・行列・微積分など、大学院数学科の内容だから
この発言はだいぶやばい
0433デフォルトの名無しさん垢版2021/07/26(月) 20:30:55.36ID:h1Ogbfx6
自分の名前さえろくにかけないヤツが行く大学inの予感
0438デフォルトの名無しさん垢版2021/07/27(火) 07:07:18.65ID:ootWstZS
windows10でtkinterを使ってclipboard.append()したやつが
tkinter上で手動コピペしないと外部に持ち出せない(空になる)やつ
なにかうまい解決法ありませんか?
0439デフォルトの名無しさん垢版2021/07/27(火) 07:09:13.12ID:ootWstZS
できればpyperclipとかの外部ライブラリなしで…
0442デフォルトの名無しさん垢版2021/07/28(水) 01:27:20.65ID:Ky1rxZdm
>>436
花園目指す系は東大阪かな
あの辺は北河内あたりの中学ラグビー強いから高校が強いだけであって
高校の手柄だっていうのはちょっと違う気がするよ
公立中学でも元全日本の選手が教えてたり、私立は中高一貫でラグビー部を育ててるチート状態だからね

NC旋盤は機械科だろうね
NC旋盤ってやる内容はほぼプログラマなのにあまりプログラマの選択肢だと思われてないね

工業高校って情報系や電気電子系はひたすら数学、法律、プロジェクト管理、あとは専門分野の実習だよ
英語や一般科目をほとんどやらないのと専門分野の科目数が少ない以外は大学とほとんど内容一緒
難易度に関しては全く一緒だよ
もちろん学校によって差はあるんだろうけどね
0443デフォルトの名無しさん垢版2021/07/28(水) 12:04:34.29ID:7xBR4eEd
pandasで行の範囲で重複要素を一つだけ残して削除するのってどうしたらいいの
具体的には以下のようにしたい
0, A, B, A
1, A

0, A, B
1, A
0447デフォルトの名無しさん垢版2021/07/28(水) 13:58:10.87ID:1o5b32fv
答えてくれた人が居るんだから何が原因でどう解決したかくらい書いてから逝ってほしい
0448デフォルトの名無しさん垢版2021/07/28(水) 14:13:33.40ID:DsKbXt6n
>>422
>データ分析とかPOCとかの言語はなんでもいい案件

こういうのは場末の新規極小案件しかないやろ
一括受託100万くらいの
0449デフォルトの名無しさん垢版2021/07/28(水) 14:17:00.06ID:DsKbXt6n
>>442
>NC旋盤ってやる内容はほぼプログラマなのに

プログラムっちゃープログラムだが、あの程度ができるからといって
プログラマを名乗るのも恥ずかしいからなぁ
0450デフォルトの名無しさん垢版2021/07/29(木) 13:34:17.35ID:AbVaSjDV
タプルを辞書のキーにするとメモリを食いますか?
アンダーバーでタプルの要素を連結して1次元の文字列にした方がマシですか?
0453デフォルトの名無しさん垢版2021/07/29(木) 17:14:46.30ID:QD9Lxy/Q
タプルをキーにする
内部ではタプルをそのまま文字列に変換しているだけなのでは?
0454450垢版2021/07/29(木) 17:20:06.10ID:pNM23k+3
ID変わったので改めてご報告します。
メモリを確認しましたがタプルでも文字列でもかわりませんでした。
0455デフォルトの名無しさん垢版2021/07/29(木) 17:41:54.14ID:nJwJ/p+N
>>448
そりゃ市場に出回ってるのはそういうのだろうけどね、一旦上流と繋がっちゃえば関係ないね
手段はなんでもいいから問題が解決できる人材が求められているので
0456デフォルトの名無しさん垢版2021/07/29(木) 18:46:36.83ID:8SBcxtDC
プログラム内で安易にprint出力すると
シェルで実行して標準出力で受け取りたい場合に
関係ないprint出力まででてきてしまうのですが
そういうときはファイル出力すればいいのでしょうか?
それとも標準出力専用のprint的なのがあるのでしょうか
0457デフォルトの名無しさん垢版2021/07/29(木) 19:05:55.02ID:3asw//Zv
標準エラー出力使え
0458デフォルトの名無しさん垢版2021/07/29(木) 19:06:32.21ID:200xoZ3M
Pythonを1行しか実行できない環境で使いたいです。
以下のコードを1行にまとめたいのですが、どうしたらできますか?

from socket import socket, AF_INET, SOCK_STREAM
with socket(AF_INET, SOCK_STREAM) as s:
  s.connect(("192.168.1.15", 49994))
  s.sendall("test".encode())


with以外の部分は、以下のようにセミコロンで区切れば良いと思うのですが
withと改行&インデントをどうやって1行で扱えば良いか分かりません。

from socket import socket, AF_INET, SOCK_STREAM;s.connect(("192.168.1.15", 49994));s.sendall("test".encode());
0459デフォルトの名無しさん垢版2021/07/29(木) 19:09:27.00ID:3asw//Zv
exec(“from socket … \nwith … as s:\n\ts.connect….”)
0460デフォルトの名無しさん垢版2021/07/29(木) 21:18:08.02ID:200xoZ3M
>>459
ありがとうございます。
ちなみに、socketでwithを使う場合ってs.close()の処理をしてくれるというだけと考えて良いのでしょうか?

>>458と以下のコードは、やっていることは完全に同じですか?

rom socket import socket, AF_INET, SOCK_STREAM
s = socket(AF_INET, SOCK_STREAM)
s.connect(("192.168.1.15", 49994))
s.sendall("test".encode())
s.close
0462デフォルトの名無しさん垢版2021/07/29(木) 21:53:02.31ID:200xoZ3M
>>461
ありがとうございます!
なぜかwithが使えない環境だったみたいなのでこっちで試してみようと思います
0463デフォルトの名無しさん垢版2021/07/30(金) 14:15:53.69ID:PlrV13FK
超超超初心者です
Youtubeの動画のダウンロードだけで使用していましたが
いつからかエラーになって使えなくなりました。

再インストールし直して
Python 3.9.6とpytube入れましたがやはり同じエラーが出てしまいます。
pipバージョン21.1.3

from pytube import YouTube
yt = YouTube('動画のurl')
s = yt.streams.all() ←ここでenter押すとエラーになってしまいます
for i in s:
print (i)
download_directory = "/home/????/video"
yt.streams.get_by_itag('????').download( download_directory )
(動画、音声をそれぞれダウンロードし後で合成する感じです)
エラー文の一部です
File "C:\Users\????\AppData\Local\Programs\Python\Python39\lib\urllib\request.py", line 641, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found
情報が少なかったでしょうか?
他にも使用するプログラムもありましたか?
pipバージョンを21.2.1にしたらいいのかなぁ・・
何が悪いのかがまるで分かりません
どうか皆様のお知恵をお貸し下さい、よろしくおねがい致します。
0466デフォルトの名無しさん垢版2021/07/30(金) 17:21:42.31ID:ULQnvNeP
先生pythubeはゴミだからyoutube-dlを使いなさいと1000万回言いました!
0467デフォルトの名無しさん垢版2021/07/30(金) 18:18:30.97ID:7AkGA5GJ
スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
0470デフォルトの名無しさん垢版2021/07/30(金) 19:05:58.12ID:XNMtwXjX
Windows10 64bit/Python3.9.6/VS Codeから実行

要点がうまくまとめられず長文になってしまい申し訳有りません。
任意の起動中のアプリケーションをアクティブ化し、最前面に表示したいです。

まず、こちらのサイトを参考に
【Python】ウィンドウをアプリ名指定しアクティブ切り替えする簡単な方法
https://pentan.net/python-windowactive/
下記の通り記述しました。
https://techiedelight.com/compiler/?OlKU
実行すると、メモ帳を最小化していない限りは望んだ結果が得られました。

ここから更に、"○○○ -- Mozilla Firefox"のような、可変部を含むウィンドウタイトルについて、
可変部が変わっても動作するようにしたいので、
ウィンドウタイトルに"Mozilla Firefox"を含むアプリケーションを
アクティブ化する、という処理になるかなと思い
ググって出てきたこちらの記事を参考に
Python - ctypes.windll.user32.FindWindowWでフルネームではなく名前の部分一致でウインドウを検索したい。|teratail
https://teratail.com/questions/157495
下記の通り記述しました。
https://techiedelight.com/compiler/?wciE
実行すると、サイトでも書かれている通りエラーが発生し、
また、指定する文字列によっては(Firefox、Kindleなど)
アクティブ化しないこともありました。

何が原因でエラーになっているのか解りません。
ここからどうすれば目的の動作が行えるようになるでしょうか。
また、teratailで提示されていた方法以外でも何かありましたらご教示ください。
0471デフォルトの名無しさん垢版2021/07/30(金) 19:22:19.78ID:PlrV13FK
超超初心者です
464さん 465さん 466さん
教えてくださってありがとうございました。
色々難しいんですねぇ・・
youtube-dlっていうの調べてみて
使えたらいいなって思います。

皆様ありがとうございました!
0472デフォルトの名無しさん垢版2021/07/30(金) 19:29:01.40ID:cG1LCTVi
>>467
取ってきたデータの検証方法を学んでください
うちのサイトだと、初心者丸出しのクロールにはプロバイダ経由の警告、本格的なのは嘘のデータを返してるんですけど、後者はなかなか気がついてもらえない。
半年以上、同じやつからと思われるアクセスが続くとホント嫌になる。
0474デフォルトの名無しさん垢版2021/07/30(金) 19:53:21.30ID:ULQnvNeP
>>471
あなたは多分、 qiitaにある「youtube-dlでダウンロードソフト作ってみた」を
ダウンロードして使うだけで満たされるのではないか
0475デフォルトの名無しさん垢版2021/07/30(金) 21:21:02.94ID:XNMtwXjX
>>473
できました!ありがとうございます!
コールバック関数がまだうまく理解できないのですが、これを元にやりたい操作をできるよう改修してみます。
ありがとうございました!
0476デフォルトの名無しさん垢版2021/07/31(土) 10:58:14.89ID:c5O8qSbM
数日前からPythonを学習し始めたけど、このプログラムってベーシック語言みたいだね
0481デフォルトの名無しさん垢版2021/07/31(土) 21:00:00.51ID:llJ9dkNq
>>476
本当に学習し始めたばかりなんだね
0483デフォルトの名無しさん垢版2021/08/01(日) 06:31:19.80ID:zyctpkQA
each_names = ([f'"{self.tree.item(iid)["text"]}",' for iid in self.tree.get_children(_id)] for _id in self.tree.selection())

読みづらいですか?
どう書いたらサイコー?

やっぱり丁寧な方が強いですか
each = []
for _id in self.tree.selection():
__names = []
__for iid in self.tree.get_children(_id):
____name = self.tree.item(iid)['text'] # string
____names.append(f'"{name}",') # to csv
__each.append(names)
0484デフォルトの名無しさん垢版2021/08/01(日) 12:06:41.70ID:SN6JurZf
>>483
>____names.append(f'"{name}",') # to csv
カンマを付け足す意味がよくわからないけど
とりあえずリストを生成する処理とリストをCSVにする処理は分けたほうがいいと思う

あと今のコードだと
['Foo', 'Bar', 'Baz', 'Qux’]みたいなリストじゃなくて
[['"Foo",', '"Bar",'], [], [], ['"Baz",', '"Qux”,’]]みたいなリストになるけど
これが本当に欲しい形?
0485デフォルトの名無しさん垢版2021/08/01(日) 12:50:26.40ID:zyctpkQA
>>484
なるほど
リストのリストなのは問題ないです
treeはフォルダ−ファイル群の一覧になってて
親リストがカラム、子リストがフォルダ、値がファイルの予定です

カンマは他のカラムを処理したのと連結する用だったんですがCSV変換する関数作ってそっちでやりますね
0486デフォルトの名無しさん垢版2021/08/01(日) 12:54:09.13ID:zyctpkQA
なんか長すぎるのはよくないと聞いたんですが
(個人的には)折っても逆に見づらいし、丁寧に書いても冗長だし と思って聞いてみました
0488デフォルトの名無しさん垢版2021/08/01(日) 18:35:11.06ID:/PJrMDbF
先日に書き込みした超超初心者です
教えてくださったyoutube-dlが無事に使えるようになりました。
ffmpegが難しいですけれど色々と試してみたいと思います。
また何かありましたら、よろしくおねがい致します。
0490デフォルトの名無しさん垢版2021/08/02(月) 11:26:05.66ID:NrUL+nG3
ごめん、この選択ソートのプログラムで
出力 1 2 3 になる理由を行ごとに分かりやすく解説してくれると助かりまっす

https://i.imgur.com/d5ppkHW.jpg

先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど、プログラム構成を理解し損ねてて困ってる
0492デフォルトの名無しさん垢版2021/08/02(月) 11:49:39.33ID:0Fs630bp
>>490
1行目:配列の要素の区切り文字がコンマじゃなくピリオドになってる
2行目:小文字のrがデカい
3行目:小文字のmがデカい
4行目:小文字のrがデカい
8行目:角括弧の角度が45°になってる
9行目:角括弧が山括弧みたいになってる
10行目:小文字のrがデカすぎる
0493デフォルトの名無しさん垢版2021/08/02(月) 12:07:32.42ID:7hVL2dqc
>>490
ざっくりと説明するなら
@リストの中から最小の値を探して先頭に移動させる
[3.1,2])なら[1,3,2]になる
A@で最小値は決まったから、それ以外の所で最小値を探して、
  また位置を移動させる
 (ようは残った3,2で小さい方を選んで、1は動かさないように2を先頭の方に持ってくる)


で、こういうアルゴリズムの奴は実際の動き見ない
絶対に理解できないから、
大人しくアルゴリズム図鑑のアプリ(370円)を買うか
その金も無いなら図解が乗ってる解説を探せ
https://www.codereading.com/algo_and_ds/algo/selection_sort.html
0494デフォルトの名無しさん垢版2021/08/02(月) 12:24:25.25ID:lJJomUVT
>>490
youtubeで「selection sort」で検索
アニメーションで解説してくれてる動画がたくさんあるからそれを見るといい
プログラムの動きで理解したければ最初はprint debugで

for i in range(len(a)-1):
__print(i, a) # <― print結果を見れば各イテレーションで配列aのどの値とどの値がswapされてるかわかる
__mini = i
0495デフォルトの名無しさん垢版2021/08/02(月) 12:33:54.89ID:WC1B7KX+
配列を入れ換えて1 2 3 になる仕組みを聞いてるのだが
「検索しろ」とか最低な答えをありがとう、あんたらに聞いた俺が間違ってたわ
0497デフォルトの名無しさん垢版2021/08/02(月) 13:38:20.68ID:t5Br6g5D
Debian strechのpython 3.5.3で

from signal import *
print(sigwait([SIGINT, SIGTERM]))

という2行のスクリプトを走らせました
フォアグラウンドで走らせてCntl-Cを押す あるいは バックグランドに回してkill -INTする などでは、送ったシグナルの番号が表示されます
が、kill -TERMではシグナル番号は出てこず「Terminated」とだけ表示されます
SIGINTとSIGTERMで、どうしてこのような違いが出るのでしょう?
0499デフォルトの名無しさん垢版2021/08/02(月) 15:27:23.53ID:t5Br6g5D
>>498
早速ありがとうございます
教えていただいたとおり、sigwait()の前に

pthread_sigmask(SIG_BLOCK, [SIGTERM])

を入れたら、期待通りの動作となりました。SIGINTとSIGTERMの違いについてはまたこれから調べようと思いますが
とりあえずやりたいこと自体は無事に達成できました。ありがとうございます
0501デフォルトの名無しさん垢版2021/08/02(月) 16:33:16.98ID:t5Br6g5D
>>500
何故かブロックの対象にSIGINTを入れなくてもsigwait({SIGINT, SIGTERM})でCntl-Cやkill -INTはキャッチできるんです
で、いろいろググって見たところ、なんとなく理解できた気がします
getsignal(SIGINT)とgetsignal(SIGTERM)を比べると、前者は<built-in function default_int_handler>で後者はSIG_DFL
てことはSIGINTはPythonの内部でKeyboardInterruptをraiseする処理が予め登録されてる、つまりキャッチする用意が出来てる
しかしSIGTERMはなにもせずOS標準の動作になる、つまりキャッチする対象になってない
みたいな感じ、かと
というか、SIGPIPEとSIGINTだけは特別にハンドラを用意してるって、signalモジュールのドキュメントの最初の段落に書いてありますね
まずちゃんとドキュメントを読めよ >俺
0502デフォルトの名無しさん垢版2021/08/02(月) 17:23:26.28ID:7hVL2dqc
>>495
そりゃ仕組みもクソも何も
コード実際に書いてデバッグ実行すりゃ、どういう風に動いてるかは分かるし
それが最終的にどういう結果を目標に動いてるかを調べるもんだろ

ぶっちゃけプログラミング勉強したいなら紙ノートなんてナンセンスも良い所だぞ
実際に書いて動かして動きをちゃんと追わなきゃ絶対に理解できん
0504デフォルトの名無しさん垢版2021/08/02(月) 22:00:07.06ID:Mbtm4jOU
>>490
>先頭の2を隣の3と比較して段々小さいのを前に持ってくのはわかるけど...

その考え方で画像のコードを見ても理解できないと思います。

隣の値と比較して段々と前に持っていくアルゴリズムはバブルソートでは?

まずは、要素の値を交換する方法と最小値(または最大値)を探索する方法を
勉強してください。※そもそもこれがわかってないのでは?

あと、要素の値と位置の違いを理解できてますか?

i,j,miniは要素の値?それとも要素のの位置?
tmpは要素の値?それとも要素のの位置?

この辺りがわかれば、選択ソートが理解できるはずです。
0507デフォルトの名無しさん垢版2021/08/03(火) 15:21:44.56ID:g8ZbJqDY
sklearn.linear_model.LinearRegressionのscore(x,y)で近似直線の決定係数を出そうとしたんだけど
reg=Linearregression(fit_intercept=False)
reg.fit(x,y)
print(reg.coef_)
print(reg.score(x,y))
だと明らかにおかしい数値(1以上だったりマイナスだったり)が算出されちゃって困ってます(傾きの方は問題なし)
fit_intercept=Trueで切片有りの近似直線だと恐らく正確であろう決定係数が出てくるんだけど
切片無しにして原点を通る場合だとscore()って役に立たなかったりします?
0509デフォルトの名無しさん垢版2021/08/03(火) 21:29:51.30ID:RK9HE0GW
>>506
あなたはその程度のコードも目で追って解釈できないほど頭が悪いのに、なんで実際にコード打ち込んで一行ずつ確認しないの?
0510デフォルトの名無しさん垢版2021/08/04(水) 13:50:33.89ID:mvZGqxpi
>>507
切片なしの単回帰モデルに乗らないようなデータなら、決定係数がマイナスってことはあるのでは?
0511デフォルトの名無しさん垢版2021/08/05(木) 09:01:28.24ID:EZ1IxHo4
Python2.x系の標準機能で利用できる圧縮・解凍のアルゴリズム/ライブラリってどんなものがありますか?
0517デフォルトの名無しさん垢版2021/08/07(土) 00:32:45.52ID:rXkekRAR
自演乙ωωω
0520デフォルトの名無しさん垢版2021/08/09(月) 18:33:09.38ID:qllYLnEb
インタプリタのきもちになるですよ
0524デフォルトの名無しさん垢版2021/08/09(月) 21:07:18.76ID:JfaUnRB2
紙でコーディングする有用性のわからないやつは素人
昔々のコーディング用紙に書いてたのとは目的が違う

ペーパーコーディングはホワイトボードコーディングの一人プレイ
0528デフォルトの名無しさん垢版2021/08/10(火) 11:01:19.31ID:9Jx01spV
いつまで紙とか言ってんだよ
そんなこと言ってるからにっぽんのITはまじ低レベルってバカにされるんだよ
プログラムの前に頭使えって
0529デフォルトの名無しさん垢版2021/08/10(火) 15:13:06.11ID:QlDWWv1x
sqlalchemy使ってるんだけど、
flask使ってないバックエンドのみで完結する方のスクリプト

webアプリ側のスクリプト
それぞれsqlalchemyとflask_sqlalchemy分けて使ってると
コーディングも微妙に変わってきて書き直すの面倒なんだけど
そういうものなのでしょうか?
0530デフォルトの名無しさん垢版2021/08/10(火) 16:38:31.12ID:QOeLlU4q
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

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

強姦と窃盗はできるんだね!
すごいぞ朝鮮ゴキブリBot君!

クソチョンw
0532デフォルトの名無しさん垢版2021/08/10(火) 17:49:01.89ID:IfqoqUXV
お前さあ、ガイジを見かけるたびに近くにいる人に
「この可哀想な子は何なの?」って聞いてるの?
0533デフォルトの名無しさん垢版2021/08/10(火) 18:00:15.65ID:9wi/dlAk
>>1
に書いてる、荒らし

>「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。
荒らしは、完全スルー放置が一番きらいです

あちこちのスレの1を改変して、勝手に書いてる荒らし。
確か、工学部というコテハン。
プログラマーじゃない。ソースコードを見た事ない

あちこちのスレの1を勝手に改変して、荒らしている。
こういう勝手に追加したものは、削除した方が良い
0534533垢版2021/08/10(火) 18:04:12.44ID:9wi/dlAk
荒らしは、他のスレのテンプレも、勝手に改変して、新しく立てたりする

漏れらは、そういうスレを削除して、立て直したりしてた。
次スレからは、1のテンプレを元に戻した方がよい
0537デフォルトの名無しさん垢版2021/08/10(火) 20:42:13.30ID:PJ1bHB/F
このキチガイ文体はAI使うまでもなく分かるだろ
0538デフォルトの名無しさん垢版2021/08/10(火) 23:16:26.34
pythonファイルの名前が目的になってる場合
【sumAB.py】
def ◯◯(a,b):
_return a+b

この◯◯の命名はどうしたらいいの?
無難にpythonファイル名と同じでいいのかな
で、importしたときに
from samAB import samAB
みたいな

そもそもあんまり細かくわけないほうがいい?
例えば
【calc.py】
def sumAB(a,b):
_return a+b
def mulAB(a,b):
_return a*b
from calcAB import sumAB,mulAB
みたいな
0540デフォルトの名無しさん垢版2021/08/11(水) 08:24:03.86ID:bsI09qNM
プログラム初心者ですが、みんなのpythonを一通りやりました
2冊目におすすめの本などあれば教えてください
0541デフォルトの名無しさん垢版2021/08/11(水) 08:41:39.09ID:2aR8J+Za
1冊分やったならそろそろ実演経験積めとしか
何やりたいんだよ
例えば機械学習やりたいとか簡易サーバー立てたいとか何かあるでしょ?
0542デフォルトの名無しさん垢版2021/08/11(水) 08:54:39.67ID:qGuH144a
pip install をするとこういうエラーが出てきてインストールに失敗するんだけど、なにかわかる人がいたら教えてくれ。
多分Python2のスクリプトが悪さをしているところまではわかったけど、そこから先そうすれば良いか分からん。
スレチだったらすまん。

環境:
Linuxmint 20.2
Python 3.8
pip 20.02

ERROR: Command errored out with exit status 1:
command: /usr/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-j4aygllu/pysmell/setup.py'"'"'; __file__='"'"'/tmp/pip-install-j4aygllu/pysmell/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-install-j4aygllu/pysmell/pip-egg-info
cwd: /tmp/pip-install-j4aygllu/pysmell/
Complete output (6 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-j4aygllu/pysmell/setup.py", line 27
print post_install_message
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(post_install_message)?
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
0544デフォルトの名無しさん垢版2021/08/11(水) 09:04:29.85ID:2aR8J+Za
知らんけど2のpip呼ばれてるのでは?
3のpipの実行パスコマンドラインに直打ちすればいーんでね(鼻ほじ)
0545デフォルトの名無しさん垢版2021/08/11(水) 09:40:36.88ID:Z6PNV5dP
Ruby なら、print( a ) を、print a と書けるけど、
Python は知らない

print post_install_message
^
SyntaxError: Missing parentheses in call to 'print'.
Did you mean print(post_install_message)?
0547デフォルトの名無しさん垢版2021/08/11(水) 11:27:09.73ID:0GbSOwJG
>>538
__init__.pyを書けば import方法は変更できる
0548デフォルトの名無しさん垢版2021/08/11(水) 12:30:56.86ID:clru1KUg
>>542
Pysmellについて軽くググったけど、これ13年前のライブラリか
単純にPython3に対応してないんじゃねこれ
0549デフォルトの名無しさん垢版2021/08/11(水) 13:28:39.01ID:ov//wDX1
tに何か入ってきたときと、こなかったときとで
受け取り方を変えたいので
↓のように書いたのですが、returnの部分はこれでいいでしょうか?

def hoge(t=[]):
_x=111
_y=222
_items=[]
_for n in t:
__items.append(n)
_return [x,y,*items]
x,y=hoge()
print(x)
print(y)
print()
x,y,a,b=hoge(["aaa","bbb"])
print(x)
print(y)
print(a)
print(b)
0551デフォルトの名無しさん垢版2021/08/11(水) 13:36:27.88ID:ov//wDX1
もしr=hoge()で受け取った場合、rに配列が入りますが、

return x,yだった場合は、タプルで返されますよね
なのでreturn (x,y,*items)みたいに
タプルで返した方がいいのかな?と思いまして >>549
0552デフォルトの名無しさん垢版2021/08/11(水) 13:40:42.37ID:ov//wDX1
>>550
本来の用途は、tを再帰して使う
ってことです、しかしそこは冗長なので省略して
何がしたいのかわからないようなhogeという関数名にしています
0554デフォルトの名無しさん垢版2021/08/11(水) 13:49:24.55ID:aGarSqMh
どんな計算をするかわからないけど
もし一つのリストにappend/popしていくやり方ができるならそれが効率的だよね
そうでないなら好きにすればとしか言えない
mutableである必要がないならタプルのほうがいいかも
0555デフォルトの名無しさん垢版2021/08/11(水) 13:56:30.88ID:ov//wDX1
>>554
なるほどありがとうございます
(受け取った先の)格納された変数をそのまま扱うことが目的なのでとりあえずタプルにしておこうかと思います
0557デフォルトの名無しさん垢版2021/08/12(木) 00:46:08.61ID:xG1RPqdX
スクレイピングは逮捕される危険があるって聞いたんだけどマジ?
0559デフォルトの名無しさん垢版2021/08/12(木) 11:21:51.21ID:s+UN3BdM
スクレイピングでは、そのサイトのrobots.txt を遵守する必要がある

初心者がスクレイピングすると、プログラムのバグで無限ループしたりして、
そのサイトを落としてしまう事があるので、超危険!

だから、必ずテスト中は、ローカルPC に対して行うこと!
絶対に、本番サーバーに対して、テストしてはいけない

Udemy の山浦清透、2021/6 の動画を参照。
マイナビ転職をスクレイピングしてる

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI
0560デフォルトの名無しさん垢版2021/08/12(木) 15:45:04.99ID:YXlgEKkk
requestsだと<br>タグはそのままなんだけど
Beautifulsoupに読み込ませると<br/>タグに置き換えられてしまう
html.parserもlxmlも同じ。<br>のままsoupにする方法ないんかな
0562デフォルトの名無しさん垢版2021/08/13(金) 05:59:00.03ID:OVgnWf25
逆にスクレイピングしてほしいんだよ
Google botがクロールできなくてGoogleで検索できなかったら困るだろ?
個人にスクレイピングされても不利益しかないが な

robots.txt守っててもあんまりアクセスしすぎても相手に負荷与えちゃうから一回のアクセスにつきどのぐらい待てばいいか考えて常識の範囲内でお楽しみください
「岡崎市立中央図書館事件」のことも調べてみ
0565デフォルトの名無しさん垢版2021/08/13(金) 16:18:25.34ID:K9p8aCtq
flaskのテンプレートで
{{ ここでコード実行できるけど }}
{{ hensu=dict.x }}
{{ hensu }}
みたいに変数に格納ってできないのかな
dict.xをあれこれ加工した値を使いたい時
毎回dict.xを加工しなくちゃいけないのだろうか?
もちろんdict.xが単一であればテンプレートの外で加工したものを渡せばいいだけなんだけど
0567デフォルトの名無しさん垢版2021/08/14(土) 16:50:13.84ID:hrfYhF/k
l1 = [[0 for i in range(7)] for j in range(2)]
で作った [[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]] を宣言の後で拡張して、
[[0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0]]
にする方法を教えて下さい。
0570デフォルトの名無しさん垢版2021/08/14(土) 20:33:25.96ID:V/kafYgI
f = open('listfile.txt', 'r')
line = f.readline()

while line:
print(line.strip())
line = f.readline()
f.close()

↑上記のようなコードで、数千文字×数万行のテキストファイルを読み込んだ場合
 メモリ効率というのはどうなるんでしょうか?
 line変数に全ての行が格納されているとしたら、そこが全部メモリを占有してしまったりするのでしょうか?
 それとも、Pythonの場合はそこらへんのメモリ処理をイイ感じに処理してくれるのでしょうか?
0573デフォルトの名無しさん垢版2021/08/15(日) 01:12:22.32ID:rOIXbdCv
今までVBAしか経験なかったんだけどpythonてVBAより簡単までありますね
今まで頑張ってCSV編集してたのが馬鹿みたい
0574デフォルトの名無しさん垢版2021/08/15(日) 02:21:34.96ID:Ua8YLJnm
windowsです
指定したフォルダ内にいくつフォルダがあるか調べたい
len(p for p in src.iterdir() if p.is_dir())
だと、max_path越えてるpをFalse判定します
なにかいい手段はないでしょうか
0575デフォルトの名無しさん垢版2021/08/15(日) 02:27:06.28ID:Ua8YLJnm
すいません
max_path解除不可です
0576デフォルトの名無しさん垢版2021/08/15(日) 04:39:27.95ID:7SSKhdI7
a = [(lambda x: x * i) for i in (1, 2)]
>>> a[1](1)
2
>>> a[0](1)
2

これがxがundefinedにならない理由はなんですか?またx:の部分は引数ですよね?何も受け取らなくてもエラーにならないんですか?
0577デフォルトの名無しさん垢版2021/08/15(日) 05:05:10.89ID:tz+DZcyH
>>574
長さチェックしてMAX_PATHを超えてるなら
絶対パスに"\\?\"を付けて試してみたら
(escapeが必要なら"\\\\?\\")
0580デフォルトの名無しさん垢版2021/08/15(日) 08:18:33.41ID:Ua8YLJnm
>>577
んー層浅いのに名前だけ超長いみたいな例がありうるんです…
なんか短縮?するのってなかったでしたっけ
c:¥foo~¥bar~みたいなやつ
名前が分からないんだけど、windllあたりを叩いてどうにかならんものか
0581デフォルトの名無しさん垢版2021/08/15(日) 13:14:30.49ID:6uWudvu4
馬鹿には無理
0582デフォルトの名無しさん垢版2021/08/15(日) 13:58:20.70ID:v+aZA8Y6
馬鹿じゃないもん!
0583デフォルトの名無しさん垢版2021/08/15(日) 15:47:33.56ID:si7Mpb2N
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

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

クソチョンw
0584デフォルトの名無しさん垢版2021/08/15(日) 17:05:24.89ID:7SSKhdI7
>>576
しかしこれiの値が違う関数が2つ作られたと思わせておいて都度iが上書きされてるってやばいな
Python特有の謎挙動他にもあるんだろうな
0585デフォルトの名無しさん垢版2021/08/15(日) 17:34:12.53ID:tz+DZcyH
>>584
変数のスコープを理解すれば謎挙動でもない

for i in range(5)
__pass
print(x) // xは4

FAQにも出てるけど変数のスコープについて詳しく解説されてる入門書を1冊読むといいと思う
クラス変数とインスタンス変数のごっちゃに比べれば理解しやすい
0587デフォルトの名無しさん垢版2021/08/15(日) 18:38:17.55ID:huFV89Rq
sqlalchemyでfilterに条件式を動的に入れる時って
.filter(Class.【ここ】 == '値')

【ここ】の部分どうしたらいいの・・?
0588デフォルトの名無しさん垢版2021/08/15(日) 18:45:38.77ID:huFV89Rq
自己解決したかも >>587
from sqlalchemy import text

.filter(text("条件式"))でできるみたいだけど
Class.はいらないのだろうか・・
とりあえず試してみます
0589デフォルトの名無しさん垢版2021/08/15(日) 19:58:08.59ID:YSnEOPEZ
以下のコードで、数十万行程度の大きめのファイルを作成した場合も
必ずprint("3")はprint("2")の後に実行されますか?
ちゃんとファイルが作成され終わった後に処理をしたい場合、何か必要な記述はありますか?

print("1---------")

with open(FilePath, 'w') as f:
   f.write("test")
   print("2---------")

print("3---------")
0590デフォルトの名無しさん垢版2021/08/15(日) 20:08:24.78ID:YSnEOPEZ
>>589
具体的には、ファイルを書き込みし終わった後に
書き込みしたファイルを読み込みたいのですが
問題なく順序通りに処理が行われるのかが気になっています
0593デフォルトの名無しさん垢版2021/08/16(月) 00:39:51.07
再帰の内包表記でbreak使いたいんですけど
無理でしたっけ?
例えば

ary = ['a','b','c','b']
ary2= ['b','c']
[ n for n in ary2 for m in ary if n==m ]
#['b','b','c']

となるけど最初のn==mでbreakして
['b','c']にする感じです
0595デフォルトの名無しさん垢版2021/08/16(月) 10:43:06.74ID:X3qQwgV7
>>586
これパスをUNC化するんですね
勘違いしてました。助かりました
0596デフォルトの名無しさん垢版2021/08/16(月) 12:49:48.06ID:X3qQwgV7
一応追記

is_fileやis_dirは通るけど
pilはopenできなかった(FileNotFoundError)
ioはやっぱwindowsのLongPathEnabledが有効でないといかんようだ
0597デフォルトの名無しさん垢版2021/08/16(月) 14:43:52.65ID:Gh+OcB3l
>>585
iは4だけどxはundefinedじゃね?

それはともかく
>>> a = [(lambda i: (lambda x: x * i))(i) for i in (2, 3)]
>>> a[1](1)
3
>>> a[0](1)
2
なんだかな
0598デフォルトの名無しさん垢版2021/08/16(月) 14:53:00.33ID:Gh+OcB3l
>>596
PIL で直接開けないときは
io.BytesIO() を使って先にメモリ上に読んで
PIL は bytesIO から読むとうまくいくはず
0600デフォルトの名無しさん垢版2021/08/16(月) 15:19:33.45ID:ebJKRLr3
>>597
部分適用したいならpartial使えばいい

from functools import partial
a = [partial(lambda i, x: x * i, i) for i in (2, 3)]

Pythonでこういう使い方するのは稀だけど
0601デフォルトの名無しさん垢版2021/08/16(月) 16:09:27.28ID:X3qQwgV7
>>598
はー。色んなテクがあるんですね
すごい勉強になります

>>599
いいねボタンがあったら乱打してます
0603デフォルトの名無しさん垢版2021/08/16(月) 20:13:07.13ID:LeWMKcGD
pythonでのスクレイピングでbeautifulsoup4とIxmlの使い分けってあるんですか?
今勉強してる本だとlxmlを使うことが多いので使い分けが気になります
0604デフォルトの名無しさん垢版2021/08/16(月) 20:13:44.57ID:Dz+YmPwS
内包表記でも同じなんだな。この場合lambdaのローカルではないiはどこに残っていることになるんだろ。
forの場合はループ終わってもiが参照可能だから分かり易いけど。
0606デフォルトの名無しさん垢版2021/08/17(火) 05:57:47.50ID:t0cSJCOl
関数のローカル変数と同じ扱いじゃないかね。

def f():
__r = []
__for i in (2, 3):
____r.append(lambda x, n=i: x * n)
__return r

a = f()

こんなコードを実行しても i がグローバルに現れないのと同じ。
0607デフォルトの名無しさん垢版2021/08/17(火) 08:28:00.17ID:JAfXgPxe
文字列中の「"」(ダブルクォーテーション)をすべて「\"」に置き換えてprintしたいのですがどうしたら良いですか?
↓のコードを試してみましたが、「\」(円マーク)がprintされませんでした。

test = 'aaa="iii"'
test.replace('"','\"')
print(test)
0608デフォルトの名無しさん垢版2021/08/17(火) 08:43:07.39ID:gaP7rkot
test.replace('"',r'\"')
0610デフォルトの名無しさん垢版2021/08/17(火) 13:47:01.89ID:Q6ss2SIB
>>606
なるほど!
def f():
... r = []
... for i in (2, 3):
... r.append(lambda x: x * i)
... return r
...
>>> a = f()
>>> a[1](1)
3
>>> a[0](1)
3
0611デフォルトの名無しさん垢版2021/08/17(火) 22:16:40.96ID:4J/S2o5Z
tkinterでアプリを作成しています
ボタンが3つあって、それぞれボタンを押すと次の関数が実行されます
def window(test):
root = tkinter.Tk()
これによって開かれた複数のウィンドウがWindows10のタスクバー上で、
自動的にグループ化されるのですが
これをアプリ側で分離させる方法はないでしょうか?
0612デフォルトの名無しさん垢版2021/08/18(水) 01:09:22.36ID:alFzoDYf
タスクバーの設定でグループ化しないを選ぶのが楽
0613デフォルトの名無しさん垢版2021/08/18(水) 01:33:08.02ID:m4X9BWoP
タスクバーの設定だと他のアプリまで分離してしまうのでアプリ側で分離させたかったんですけど
やっぱり方法はなさそうですね
諦めます
0614デフォルトの名無しさん垢版2021/08/19(木) 13:42:29.43ID:FqK5lxwf
0.0.0.0:8000

こういう形式のipに変数名をあてたいんですけど
8000の部分はhostでいいとして
0.0.0.0の部分はaddressでいいのでしょうか?
ipかhostにしようか迷ったのですが
ググったところ0.0.0.0の部分はネットワーク部とホスト部みたいに分かれるみたいですし
ipだと0.0.0.0:8000全体を指しそうだし
しかしそれだとaddressもそうでは・・?みたいな
0618デフォルトの名無しさん垢版2021/08/19(木) 19:26:01.79ID:527sxbC6
ねえみんな
IPv6って使ってる?
0622デフォルトの名無しさん垢版2021/08/20(金) 13:05:28.03ID:aaLnq14B
五教科の平均値を前半期、後半期で出すプログラムを
for文と関数で短めに作るにはどうしたら良いの?
五教科の点数は適当で良いのでアドバイスお願いします
0624デフォルトの名無しさん垢版2021/08/20(金) 13:53:32.51ID:bmI6iAbu
pythonやるのって中学校からだっけ?
0625デフォルトの名無しさん垢版2021/08/20(金) 13:58:09.36ID:aaLnq14B
Python一年生を読んでて画像表示プログラムを打ってると毎回エラーが出て疲れる
「え?正確に入力した筈なのに何処が違ってる?」
って思うけど、インデント間違いとか大文字と小文字の間違いが一個でもあると動かなくてきついわ
0627デフォルトの名無しさん垢版2021/08/20(金) 15:49:09.09ID:mOJeDUWN
>>625
インデント間違いとか大文字と小文字の間違いで苦労してるようなら、
他の言語で閉じ忘れとか、セミコロン入れ忘れたとかなんてもっとめんどくさいと思う
0629デフォルトの名無しさん垢版2021/08/20(金) 17:12:34.95ID:3LXkFTj+
jupyter notebookで複数行のテキストをinputする方法はありますか?
input()でshift+return押しても一行分の入力欄しか出てこないです
0630デフォルトの名無しさん垢版2021/08/20(金) 17:25:01.37ID:+XYykUue
lista=[50,80,100,90]
total=0
for i in lista:
total=total+i
c=int(total/5)

lastb=[70,40,60,30]
total=0
for a in listb:
total=total+a
d=int(total/5)
print(c,d)

理解力足りないからこれしか思い付かないが、何も答えられなくて煽るしか出来ないって俺よりバカって事?
0632デフォルトの名無しさん垢版2021/08/20(金) 17:30:09.67ID:FhpMMCBI
def hoge1(a):
_if a=="sato" or a=="tanaka" or a=="suzuki":#@
__return False#A
_else:
__#何らかのコード
__return True

def hoge2(a):
_if a=="sato" or a=="tanaka" or a=="suzuki": return False
_#何らかのコード
_return True

print(hoge1("tanaka"))
print(hoge2("tanaka"))

こういう
「条件を満たしたらreturn Falseする」ときに@で改行してまでAのインデントは無駄かなと思って
hoge2みたいに書いているのですが
a==,a==,,,のところってなんどもa==出てきますが、冗長なコードではありませんよね?
何か別の書き方があるのかなと思いまして。
(例えばjsで言うところのswitchみたいな)
0634デフォルトの名無しさん垢版2021/08/20(金) 17:58:59.82
>>630
後々グラフとか作りたいってなるとpandasめちゃくちゃ便利だから使ってみるのもいいかも
https://i.imgur.com/FEWONvX.jpg

import pandas as pd
#前期
df = pd.DataFrame({"国語":[50,55,60],"算数":[80,40,77],"理科":[100,83,76],"社会":[90,82,66],"英語":[88,90,71]},index=["サトウ","スズキ","タナカ"])
#後期
#略

#サトウの5教科の平均点
print( df.loc["サトウ"].mean() )
#国語の平均点
print( df["国語"].mean() )
#算数の標準偏差
print( df["算数"].std() )
#英語の中央値
print( df["英語"].median() )
0635デフォルトの名無しさん垢版2021/08/20(金) 17:59:55.07ID:0J8On0UY
>>632
- return Falseの前で改行したほうがいい
- 何度もa==が出てくる部分はin演算子を使う
- elseを書くかどうかは状況による

pylintとかのlinterを使おう
in演算子を使ったほうがいいみたいなのを含めて注意してくれる
0636デフォルトの名無しさん垢版2021/08/20(金) 18:04:09.17ID:elEM/mJ5
>>632
サンプルコードみたいな奴だったin使って判定した方がすっきりするぞ
(条件が複雑ならSwich文は無いから、素直にifとelif組み合わせるしかないけど)

def hoge3(name,students):
____if name in students:
________print(name)
____else:
________print("No Student")

student_list = ["sato","tanaka","suzuki"]
hoge3("sato",student_list) #-> sato
hoge3("nakamura",student_list) #-> No Student
0637デフォルトの名無しさん垢版2021/08/20(金) 18:06:03.11ID:FhpMMCBI
>>635,636
なるほど
ifでinを使えるのですね
def hoge3(a):
_if a in ["sato","tanaka","suzuki"]:
__return False
_else:
__return True

>pylintとか
調べてみます ありがとうございました。
0638デフォルトの名無しさん垢版2021/08/20(金) 18:07:31.47ID:FhpMMCBI
>>636
["sato","tanaka","suzuki"]の部分も外に出して汎用的にスッキリなりそうですね
ありがとうございました
0639デフォルトの名無しさん垢版2021/08/21(土) 08:17:19.59ID:T96f+mMj
>>630
これ4教科を5で割ってしまったのとインデントまでしっかり書き込んだのが表示されてないな
と言う事で
誰か、このプログラムをもっと行数少なめで簡素に書いてくれると助かります
0641デフォルトの名無しさん垢版2021/08/21(土) 08:37:26.85ID:T96f+mMj
五教科それぞれの合計数を出すと関数の引数にするまでもなく平均点出せるんだよね…
0642デフォルトの名無しさん垢版2021/08/21(土) 10:32:39.98ID:+K/WXdke
>>639
print(sum(lista)//4, sum(listb)//4)
0648デフォルトの名無しさん垢版2021/08/21(土) 21:43:33.30ID:/rey9CMo
以下のような辞書があって
dict_a = {"a":1.0, "b": 0.5, "c": 0.25, "d": 0.68}

以下のようなlist_aがあって
list_a = ["a", "a", "a", "b", "c", "c", "d"]

dict_aとlist_aから、以下のようなlist_bを作るにはどうするのが良いですか?
list_b = [1.0, 1.0, 1.0, 0.5, 0.25, 0.25, 0.68]

以下のようにfor文を回して地道にやるしかないですか?
list_b = []
for a in list_a:
  if a in dict_a:
    list_b.append(dict_a[a])

ちなみにnumpyは使えない環境です。
0650デフォルトの名無しさん垢版2021/08/21(土) 23:19:07.08ID:7GAoG1Iq
Rustのメモリ安全性はボローチェッカーによって担保されているが、
Nimと比較してRustはタイプ量が多い事により限りなく低い生産性と
C++のような高い難読性、超巨大なバイナリ生成性能を兼ね備えています

Nimはバージョン1.5.1でRustのボローチェッカーに似た「View types」が実装されれば、
GC無しのView typesで参照の有効性を検証することによってメモリ安全性を保証しつつ
限りなく抑え込まれたタイプ量で高速化したCのソースコードを吐き出せます

Nimソースコード ==nimコンパイラ==> Cソースコード ==Cコンパイラ==> バイナリ

なので、nimコンパイラが通った時点でメモリ安全性が担保されませんか?

Nimの実験的特徴
著者: アンドレアス・ルンプ
バージョン: 1.5.1
http://nim-lang.github.io/Nim/manual_experimental.html


Nimは限りなく抑え込まれたタイプ量で高い生産性とPythonのような高い可読性を実現し
ているにもかかわらず、高速なCのソースコードを吐き出せるのでC言語でリモートワーク
されている方は割り振られた仕事が早く終わっても終わってないふりをして怠けることができる

「怠け者とはこうあるべきだ!」と言うとても大事な事を Nim は我々に教えてくれます
0651デフォルトの名無しさん垢版2021/08/21(土) 23:23:12.53ID:0b1Dm8dh
mapする時はPythonでは普通list comprehensionを使う
list_b = [ dict_a[x] for x in list_a if x in dict_a ]
0652デフォルトの名無しさん垢版2021/08/22(日) 05:09:08.36ID:DeeCp+C0
linuxでpython動かしたことないのですが
linuxで開発中のpythonコード上でwindowsAPIを実行できますか?
書くだけ書いてwindowsに持ってって実行する感じですか?
0653デフォルトの名無しさん垢版2021/08/22(日) 13:57:54.68ID:cx6/dnxW
WSLのことならOK
0654デフォルトの名無しさん垢版2021/08/22(日) 19:37:21.71ID:RWC7FQin
flaskで
def main():
_from flask import Flask
_app = Flask(__name__)
_aaa=10
_bbb=20
_@app.route("/")
_def test():
__print(locals())
_return app
的な感じで書くと、なぜかlocals()でaaaが取得されるんですがバグでしょうか?
0655デフォルトの名無しさん垢版2021/08/23(月) 16:02:00.39ID:Gra2NqP5
型ヒントで
strのlistかNoneが返ることを書きたい

def test(obj: Any) ->Optional[list[str]]
かなと思ったらエラーが…
0656デフォルトの名無しさん垢版2021/08/23(月) 16:05:38.99ID:Gra2NqP5
あ失礼
typing Listがあんのね
0657デフォルトの名無しさん垢版2021/08/23(月) 19:42:57.46ID:lyXFy7/6
DataFrameをto_csvでcsv出力すると、CSVの一番左上に入るはずのカラム名(columns.name)が0になってしまいます。
出力するための引数などあるのでしょうか?
0658デフォルトの名無しさん垢版2021/08/23(月) 22:29:26.85ID:NbJ+wt2i
>>655
3.9からはそれでOK
0659デフォルトの名無しさん垢版2021/08/24(火) 01:53:49.06ID:OPjw/0cg
>>657ですが、説明が正しくありませんでした
csvをDataFrameに読み込む際、header=Noneにするとヘッダには0からの連番が振られると思います。
このデータフレームのヘッダに対してdf.columns=listで別の名前を割り当て、to_csvで出力しました。
ですが、0のヘッダ名が変わってくれません。
1以上の連番が振られていたところは新しい名前に変わっていました。
何か対策などあれば教えていただきたいです。
0660デフォルトの名無しさん垢版2021/08/24(火) 03:40:53.95ID:mZOju8SR
>>659
実際のデータ見てないから想像で申し訳ないけど
0のヘッダ名になってる所ってインデックスになってない?
インデックスはカラムとは別にタイトルを付ける必要がある
df = pd.DataFrame(data)
df.index.name = 'Date
みたいな感じで'
0661デフォルトの名無しさん垢版2021/08/24(火) 20:22:12.69ID:el4vEdwg
windows10の話なんですが
属性確認すると
program files はreadonlyだけど
program files(x86)はreadonlyでないと言われます
どちらも同じ属性じゃないとおかしい気がするんですが、なぜ異なるのですか?
0662デフォルトの名無しさん垢版2021/08/24(火) 20:29:09.46ID:el4vEdwg
なんでここで聞いたかというと
pythonのstat.st_file_attributes使ってるからです
もしかしたらアクセス方法間違ってるとか
別言語では上手くいくとかあり得るのかなと思って。
0663デフォルトの名無しさん垢版2021/08/24(火) 22:04:24.96ID:SMXHl8SK
Ruby で、フォルダのモードを取得したら、どちらも40555 だった

file_paths = [ "C:/Program Files", "C:/Program Files (x86)" ]

file_paths.each do |file_path|
fs = File::Stat.new( file_path )
printf "%o\n", fs.mode
end

出力
40555
40555
0664デフォルトの名無しさん垢版2021/08/24(火) 23:08:06.06ID:OPjw/0cg
>>660
ありがとう!!
ご指摘の通りインデックス名が出力されてました
df.index.nameにカラム名と同じ名前をつけて解決しました
to_csvではカラム名は出力出来ないんですかね?
本当にありがとうございました!
0665デフォルトの名無しさん垢版2021/08/24(火) 23:59:28.05ID:SMXHl8SK
例えば、Ruby では、先頭にヘッダー行を追加できる

require 'csv'

input_csv = <<"EOT"
1,白石
2,西野
EOT

ary = CSV.parse( input_csv ) # 2次元配列
ary.unshift [ "ID", "名前" ] # 先頭に、ヘッダー行を挿入する

p ary #=> [["ID", "名前"], ["1", "白石"], ["2", "西野"]]

# 2次元配列を、CSV 文字列に変換する
csv_str = ary.map( &:to_csv ).join
puts csv_str

出力
ID,名前
1,白石
2,西野
0667デフォルトの名無しさん垢版2021/08/25(水) 09:24:28.96ID:U8ZXR+0V
>>664
マニュアル嫁
0668デフォルトの名無しさん垢版2021/08/26(木) 00:21:00.63ID:PW4YFNBs
もしかしてプログラムでわからないことがあったときって公式のマニュアルを見るのが普通なんですか??
今まで誰かが日本語で説明しているのをググって探してました
公式は英語の直訳で分かりにくくて苦手です
0671デフォルトの名無しさん垢版2021/08/26(木) 00:49:51.62ID:zNekFy4I
別にググって探すのは悪くないよ。ただ、実際の動作の裏付けには公式のドキュメントの役割が大きい
だから、ググった上で公式のドキュメントも見るような感じがいいと思う

Pythonのドキュメントは原文も同じ書き方してるから和訳呼んでもわからなかったら原文読んでもわからんと思う
翻訳の問題じゃないから、>>668自信の技術力が足りてないか、原文自体の記述が悪いかみたいな話になるけど
0672デフォルトの名無しさん垢版2021/08/26(木) 00:54:04.47ID:zNekFy4I
Pythonに限らず公式のドキュメントを読み慣れるのは大事だと思う
ドキュメントの構成だったり原文と翻訳の時差とか色々癖あるし
0673デフォルトの名無しさん垢版2021/08/26(木) 01:14:15.79ID:wylnrun/
なんだかんだで公式が一番詳しかったりするからな
フォーラムを巡ってもわからなかった問題が公式ドキュメントであっさり解決して、こんなことなら最初に読んでおけばと後悔したことが何度もある
0674デフォルトの名無しさん垢版2021/08/26(木) 01:36:05.61ID:2U1NMhFu
>>668
ドキュメントの書き方はどこの言語でもクセがあるから慣れだな
公式ドキュメントを読むクセ付けないとバージョンによっては挙動が違ったりするから
他の人の奴を参考にしてると稀に挙動が違ってて余計にハマったりする

一番信用できるドキュメントは公式、っていうのだけは念頭に置いておいて欲しい
0675デフォルトの名無しさん垢版2021/08/26(木) 09:31:05.38ID:ANYTQNnK
公式ドキュメントは専門用語をちゃんと使って
正確に書いてるから、そうとうわかってないと
意味不明だろうな
0676デフォルトの名無しさん垢版2021/08/26(木) 09:48:18.62ID:PKQtsNYj
一概にそういうわけでもなくて、文化だったり書いた人の性格や能力に依存するところが大きい
Pythonの公式ドキュメントは上から目線で不親切だと思うよ
Rustなんて遥かに難しくてユーザーのレベルも高いはずだけど、ドキュメントはPythonよりは分かりやすい
0677デフォルトの名無しさん垢版2021/08/26(木) 10:04:09.61ID:FZTkV2My
そうとうわかってないと意味不明な公式ドキュメント・・・
存在する意味がないな
0683デフォルトの名無しさん垢版2021/08/27(金) 07:26:29.75ID:a7GWOZA3
ここのreferenceはまだ全然見やすい方
Java関係の公式とか酷かった
あと世の中の大半のフレームワークの公式は分かりにくいし雑だな
むしろ公式さえしっかりしてればフレームワーク自体は雑でもいいぐらい公式は重要なのに
フレームワークのフレームワークが公式なんだから
0685デフォルトの名無しさん垢版2021/08/27(金) 14:35:37.85ID:FpTGA0p8
API一覧はどっかに載せといて欲しいんだよなあ
BeautifulSoupみたいなドキュメント大嫌い
0686デフォルトの名無しさん垢版2021/08/28(土) 15:20:25.04ID:1FNDrQ4q
androidスマホでクローリングとかスクレイピングとかPythonでやりやすいですか?

あるいは他に楽な方法あったら教えてください(プログラミング言語でなくとも)
0687デフォルトの名無しさん垢版2021/08/28(土) 20:01:10.55ID:XJOj+thk
blenderでpython つかってるんですけど

10から-10の範囲で動く変数 var があって
その数値に応じてもう一つの変数 var2 を0から0.2の数値に変化させたいんですが
たとえばこう記述すると

if var >= 0:
var2 = 0.2
else:
var2 = 0

varがプラスになった途端にいきなりvar2の数字が0.2になっちゃうじゃないですか
なのでvar2を徐々に0.2にまで増やしていきたいんですが、なにかいい数式とかないですかね
変数varは一応10から-10の範囲を動くとはしていますが、場合によっては数値がまったく違ってくるので
varを条件式で使う場合の条件はvarが0以上の数値をもっているかいないかくらいしかないです
なのでvar2と他のなにかをつかって数値を調整するしか無いんですが
0690デフォルトの名無しさん垢版2021/08/28(土) 23:10:19.97ID:Syg1tfaV
> 10から-10の範囲で動く変数 var があって
っと書いてあるのに
> varがプラスになった途端
とか意味わからんので俺は傍観中
0691デフォルトの名無しさん垢版2021/08/29(日) 00:00:15.10ID:f3cdDfKi
単純にリニアに対応させるのはよくやるしありそうだけど
残念ながら標準ライブラリにはない
python MinMax scaling
でググるといろいろでてくる
0696デフォルトの名無しさん垢版2021/08/29(日) 01:24:41.28ID:TPHdi4yb
わざとなのか知らんが
0->10
0.2->-10
なのか
0->-10
0.2->10
なのかはっきりしないな
圧倒的に知能の欠落を感じる
0698デフォルトの名無しさん垢版2021/08/29(日) 07:38:58.20ID:H3IeLoxc
windows環境のpythonで追加モジュールインストールなしでシステム音量を変える方法はありますか
スクリプトを流し終わったらミュート解除して音を流してミュートにする的なことをやりたいです
winapi触るようなイメージなんですが
0699デフォルトの名無しさん垢版2021/08/29(日) 10:34:36.66ID:dJJJwYZf
windows 10、Python 3.9.1 の環境です
https://i.imgur.com/27ebmLL.jpeg

インポートの仕様についてですが、以下のファイルがあります
/run.py
/modules/a1.py
/modules/a2.py

runはa1を読み込んでいて、a1とa2はお互いに依存しているのでお互いをimportしています。
ここでrun.py を実行すると以下のエラーが表示されます。

Traceback (most recent call last):
File "C:\run.py", line 2, in <module>
from modules.a1 import A1C
File "C:\modules\a1.py", line 2, in <module>
from modules.a2 import A2C
File "C:\modules\a2.py", line 2, in <module>
from modules.a1 import A1C
ImportError: cannot import name 'A1C' from partially initialized module 'modules.a1' (most likely due to a circular import) (C:\modules\a1.py)

エラーの内容はrun→a1→a2→a1 と、インポートが循環しているからというのはわかるのですが、pythonの文法として 循環インポートはコード書く側が注意しないといけないものなのでしょうか
これ以上ファイルを増やしたくないのですが、 __init__.py というものを使う必要があるのでしょうか。
0701デフォルトの名無しさん垢版2021/08/29(日) 11:42:47.82ID:6aPcdB/x
>>688>>689
アニメーションさせるオブジェクトの設定を見直していたら数値が変わってしまってvar2は0から1、varが取得する数値が-100から100くらいになってしまったので
最初にあげた数値とは違っていますけど参考にして書き直しました

(10+var)/400 if var >= 0 else (10-var)/400

varが0近辺になるときに返す値を0から1の範囲でうまい具合に動かしたかったんですがこれでなんとかなりました
どうもでした
0702デフォルトの名無しさん垢版2021/08/29(日) 12:50:56.45ID:Y4MENvlF
>>699
インポートが実行されるタイミングで循環が発生しないようにすればいい
その例だと「A1Cをimport -> そのためにはA2Cが必要 -> そのためにはA1Cが必要」で循環してる
例えばa2.pyのほうをimport modules.a1 as A1とかにすればインポート実行時には循環しない

設計を変更するのが一番だけど
何か特別な事情があるならインポートを遅延させるとかで対処する
0704デフォルトの名無しさん垢版2021/08/29(日) 13:42:27.03ID:dJJJwYZf
>>700,702
どうもです。
という事は、最初1ファイルにズラーッと書いて一段落したからちゃんとクラスごとに別ファイルに分けようと思ったら
切り貼りしてimport文付け足すだけでリファクタリング出来る保証は1ミリも無いという事か・・・
0705デフォルトの名無しさん垢版2021/08/29(日) 13:44:36.38ID:ik0U7t7o
そんなに気にしなくていいよ
そのレベルだと、後でリファクタリングしたくなる頃には今より遥かに腕が上がっていて、最初の頃に書いた糞コードなんて全部捨てることになるから
0706デフォルトの名無しさん垢版2021/08/29(日) 14:28:14.75ID:W2eZWYJ9
>>699
コードとかレスはよく読んでないけど
公式ドキュメントにはfrom import使わずに全部importだけでやれば回避できると書いてあった気がする
まあ実際には100%問題を回避できるわけじゃないはずだが
0707デフォルトの名無しさん垢版2021/08/29(日) 17:14:19.33ID:D+nxUtQ9
>>686
オモチャでマジのプログラミングとか考えるな
HelloWorldまでにしとけ

>>698
Vista以降のボリューム変更は確かCOMでしか操作できないんだよなあ
MMDeviceだかってやつ
初心者(が/でなくとも)ctypesから使うのは荷が重い気がする
0709デフォルトの名無しさん垢版2021/08/29(日) 18:01:08.20ID:wRzFeJgq
趣味でゲームを作っているpython初心者です
発想を間違えている気がするのですが調べても独力で修正できないので質問させてください

pythonでは ファイル間を超えて有効な広域配列変数を定義することはできない という理解であっていますか?
アイテム情報や命名マスタなど「あちこちから参照したいマスタデータ」の持ち方が分からず困っています

トップレベル(≒高いレベル)でCSVロードを済ませた配列なりインスタンスなりを、中間クラスの引数として目的の関数まで持ちまわるしかないのでしょうか?
0710デフォルトの名無しさん垢版2021/08/29(日) 20:57:36.98ID:+XFaADRO
モジュールとして参照できる

<vars.py>
X=10
Y=100

<main.py>
import vars
print(vars.X)
print(vars.Y)
0711デフォルトの名無しさん垢版2021/08/30(月) 14:16:06.77ID:a7szkEqk
memcached
pymemcache
0712デフォルトの名無しさん垢版2021/08/30(月) 15:03:22.80ID:IH9WNTpQ
>>709
テストや柔軟性をかんがえるとクラス化してメソッド(関数)経由にしとくのであってる
Python定番の設定管理向けモジュールがないのが難

>>711
みたいに格納先を変えたい場合でも対応できるし
0713デフォルトの名無しさん垢版2021/08/30(月) 17:48:48.11ID:7NK+aNuC
configparserもヘナチョコいんよねえ
0714デフォルトの名無しさん垢版2021/08/30(月) 22:43:34.34ID:30yuDIRz
python2でpip等使わずlz4のデータ展開をする方法はありますか?
0716709垢版2021/08/31(火) 19:12:15.52ID:9YLyrvXT
みなさんありがとうございます
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました
0717デフォルトの名無しさん垢版2021/08/31(火) 19:30:48.38ID:VFuuQVk7
グローバル変数的なものを格納するだけに使うつもりで、常に1つしかインスタンス化しないようなクラスは、全くインスタンス化せずクラス変数とクラスメソッドで使うというのもありですか?
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。
0718デフォルトの名無しさん垢版2021/08/31(火) 20:01:08.53ID:2Z3a814f
mockで差し替えたり、初期化を遅延したりしないんならそれでもいいんじゃない
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね
0719デフォルトの名無しさん垢版2021/08/31(火) 21:31:36.81ID:1mws6K8n
https://ideone.com/Xn6V4Y

1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment

defの中からグローバル変数?は書き換えられないということですか?
あたま痛い
0720デフォルトの名無しさん垢版2021/08/31(火) 21:47:50.29ID:vXJ7Oc0W
複数行コメントアウトしたいとき
'''
print("hello")
'''
pass

という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか?
0725デフォルトの名無しさん垢版2021/09/01(水) 07:51:46.18ID:A3Q1UiDE
twintってライブラリ使ったことある人おる?
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる
0727デフォルトの名無しさん垢版2021/09/01(水) 20:28:34.09ID:KwaoNT+v
いちばん勢いあるPythonスレがこのスレで、この程度の勢いとか
Pythonほんとに人気あるの?
0729デフォルトの名無しさん垢版2021/09/01(水) 22:50:28.57ID:UppKED7J
>>726
ありがとう。
昨日から使い始めたけど、ちょうどそのタイミングくらいから他の人も使えなくなったっぽいですね
twintをあと1週間早く知ってればよかった。。
0730デフォルトの名無しさん垢版2021/09/02(木) 12:59:54.32ID:DVH2qPZi
Windowsでminiconda(4.9.2/python3.8.5)使っててproxy関係のエラーが出る。
proxyが必須なNW環境。
baseだとproxyエラーが出ずrequestで外部URLのスクレイピングなどもできる。
それ以外の環境をconda createで作ってそっちをactivateした状態からだと「cannot connect to proxy」エラーが出る。
.condarcにはproxyを記述してある。
どの環境からconda configを見てもHTTPもHTTPSもproxy情報が参照できている。

baseをcloneした環境を試したらそっちは繋がる。
cloneで作った環境とcloneせずにcreateした環境(proxyエラーになる)とでライブラリをチェックしたけどopensslとかcertifiとか入ってるもの自体はほとんど同じ。
違いというとcreateした方はversionがconda-forgeの最新版になってるからそこだろうか。
minicondaの最新版のインストーラ(4.10.3/python3.9)を使って再インストールしたらbaseからでも繋がらない。
proxy接続のためにWindowsの証明書ストアに.crtファイルをインポートとかしてるからその辺りかもしれない。
0731デフォルトの名無しさん垢版2021/09/02(木) 16:02:33.72ID:L8dQJCTS
初めてwindows使うんですがcondaとpipってどっちがいいんでしょうか
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です
0732デフォルトの名無しさん垢版2021/09/02(木) 16:15:26.22ID:4vWPiFe2
>>730
原因を調べたいのだったら追及すれば良いけど
そうじゃないならVPNとかSoftEtherとかでProxy無しで外に出れるフェイク環境を作ると解決

>>731
pip
ただしcondaが共存してるときはcondaで先に探して
見つからないときだけpip使うようにしてる
0734デフォルトの名無しさん垢版2021/09/02(木) 20:21:57.15ID:PLPQmXRE
>>731
pip
condaいらん。無駄なことしたくなかったら入れないほうがいい
0736デフォルトの名無しさん垢版2021/09/02(木) 20:41:46.54ID:t+wDMqp+
クラス変数に順次アクセスする方法はありますでしょうか。(define代わりにクラス直下に変数が複数ある状態)
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。
0737デフォルトの名無しさん垢版2021/09/02(木) 20:55:57.53ID:DVH2qPZi
>>732
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。
0741デフォルトの名無しさん垢版2021/09/05(日) 13:43:56.65ID:LaSEjliV
tzinfoが設定されているdatetimeオブジェクトを、時差が適用された状態で文字列か新しいdatetimeオブジェクトに変換したいです
具体的には↓のコードのlocal_dtから日本時間に変換したdatetimeオブジェクトが欲しいです
↓のコードではpublishedは最初UTCで、それをAsia/Tokyoのlocal_dtに変換しています
しかしlocal_dtのmonthやdayなどを参照しても日本時間になっていません
時差の実際の適用は手動でやる必要があるのでしょうか?

def get_published(self, obj):
print('tzinfo', obj.published.tzinfo) # UTC
tz = pytz.timezone('Asia/Tokyo')
local_dt = obj.published.astimezone(tz)
print('conv tzinfo', local_dt.tzinfo) # Asia/Tokyo
return local_dt
0742デフォルトの名無しさん垢版2021/09/05(日) 14:51:07.53ID:LgQhIBwq
localtime()
0744デフォルトの名無しさん垢版2021/09/05(日) 15:54:14.08ID:LaSEjliV
>>742
timeモジュールのですか?

>>743
????
同じコードをこちらの環境(Linux)でも実行しましたがうまくいきました
Djangoでコードを動かすとなぜかうまくいきません
なんで?
0746デフォルトの名無しさん垢版2021/09/05(日) 19:53:30.08ID:ejEr4mJx
リストの結合について質問です
リストの先頭要素を末尾に移動したいとします
ex)[0,1,2]→[1,2,0]

コマンドラインで以下のように書いたところ
2行目で can only concatenate list (not "int") to list というTypeErrorが発生してしまいました
li = list(range(3))
li[1:] + li[0] # TypeError

結果として
li[1:] + li[:1]
としたら問題なく通ったのですが、先に書いた方がエラーになるのはどうしてですか?

li[0]は0(int型)なので、スライスを使用して取得したリスト(li[1:] で得られる [1, 2]、リスト型)とは加算演算できない、という認識で良いですか?
で、li[:1]で取得できるのはリスト型の[0]なので加算可能ということでしょうか
0747デフォルトの名無しさん垢版2021/09/05(日) 20:47:37.17ID:DaMQ65LY
>>746
大体そんな感じ

"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations
0749デフォルトの名無しさん垢版2021/09/06(月) 12:19:20.10ID:5X8quI1P
ファイル読み込み時に入力セパレータを改行から他の文字列に変える事は出来ないのでしょうか?
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい
0752デフォルトの名無しさん垢版2021/09/06(月) 14:44:42.59ID:DsY+3+kX
>>743
変数名や引数名の付け方が最低だな
0753デフォルトの名無しさん垢版2021/09/06(月) 14:46:25.44ID:DsY+3+kX
>>746
li[1:] + [li[0]]
0754デフォルトの名無しさん垢版2021/09/06(月) 14:48:25.79ID:DsY+3+kX
>>749
>一括で読み込んでsplit
本当にこれが原因だと思ってるなら
2行ずつ読めば良い
0756デフォルトの名無しさん垢版2021/09/06(月) 15:25:00.95ID:5X8quI1P
>>754
すみません、2行ずつ読む意味が分からないんですがgzip化された25万行くらいのファイルでも読み込むと
d = fp.read()で一括で読んだ時は6秒程度、d = fp.readlines()やd = [x for x in fp]で1行毎に読んだ時は0.3秒程度と読み込みだけで結構な差が出てますので一括が原因だと考えてます。

やりたい事は下記のような必ず改行2連続で区切られたデータひと固まりをリストの1要素として取得したいわけですが、これを下記のようにやると読み込みに時間が掛かってしまうので先の質問に至ったわけです
d = fp.read()
s = d.split('\n\n')

aaa
bbb ここのひと固まりの行数は可変
ccc

ddd
eee

fff
ggg
hhh
0757デフォルトの名無しさん垢版2021/09/06(月) 16:49:12.87ID:cl/YIp9D
人間の発想だと改行が2個続くことを条件に分割してやれば早いって思えるけどpythonのあるべき書き方だと違うやり方の方が早いこともありそうな気がするね。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。

元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。
0758デフォルトの名無しさん垢版2021/09/06(月) 16:53:07.95ID:VKhiLpUq
>>756
その程度なら次の行読んで
・データがあるならリストに追加
・空か末端ならリスト終了
でええやん
あるいはBufferedReaderつかってリスト毎に返すioを実装
0759デフォルトの名無しさん垢版2021/09/06(月) 17:15:24.45ID:5X8quI1P
>>757
質問の意図としては一括払い読み込みのread()は遅いので使いたくない
読み込みが速い1行ずつの処理で行いたいが、perlのようなファイル読み込みセパレーターが改行2個に出来れば
純粋な1行読み込みみたいにループ処理の際に改行のみのデータが来るまでリストや文字列を連結すると言った事をしなくて良いのでその方法があったら知りたいって事です

>>758
やっぱりリスト追加とかやるしか無いんですかね
bufferdReaderとかってヤツは知らないので調べてみます
0762デフォルトの名無しさん垢版2021/09/06(月) 18:22:41.52ID:5X8quI1P
なんか調べてたら公式のissue152248で任意の区切り文字での読み取りの話を色々やられてたんで、それ通りやればとりあえずは望み通りの動きが出来ました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました
0763デフォルトの名無しさん垢版2021/09/06(月) 23:20:11.85ID:lLs6oVSG
よろしくお願いします
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です
0764デフォルトの名無しさん垢版2021/09/06(月) 23:39:42.63ID:ek7WdP0s
1行の長さを適当に100文字と考えて50MB程度しかないのに、buffer(あるいは行)に分割しないだけでそんなに遅くなるもんかな?
0765デフォルトの名無しさん垢版2021/09/07(火) 10:32:46.11ID:SoS5+Qbw
うちのpython3.8.5のシェル、pip install sympyが通らないからおかしいなーと思ってpip installを実行したらこれも通らないんだけど何故?

>>> pip install sympy
File "<stdin>", line 1
pip install sympy
^
SyntaxError: invalid syntax
>>> pip install
File "<stdin>", line 1
pip install
^
SyntaxError: invalid syntax
0766デフォルトの名無しさん垢版2021/09/07(火) 10:50:57.04ID:SgLDDegk
>>765
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ
0767デフォルトの名無しさん垢版2021/09/07(火) 11:05:44.28ID:E5TDGgcH
>>764
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです

d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s
0768デフォルトの名無しさん垢版2021/09/07(火) 12:03:40.05ID:E5TDGgcH
>>767
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです
0770デフォルトの名無しさん垢版2021/09/07(火) 13:57:15.69ID:6nMAIx0t
メモリ周りだとありがちなのは初回だけ遅くて2回目は早い(python用にメモリ空間を囲うから)だけどそうでもないならOSのファイルシステムの根っこのあたりが腐ってるとかかもな。
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては?
0771デフォルトの名無しさん垢版2021/09/07(火) 14:25:01.03ID:QthkAqNV
>必ず改行2連続で区切られたデータ

readlines() でループ回して一回ずつ飛ばせば良いだろうね
0774デフォルトの名無しさん垢版2021/09/07(火) 18:18:55.32ID:SoS5+Qbw
>>766
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install")
0775デフォルトの名無しさん垢版2021/09/07(火) 18:42:45.52ID:o/q1by9H
>>774
単純にpip install <インストールしたいパッケージ名>
っていう構文だから
ッケージ名を書いてなかったら、そりゃエラーメッセージ通りのエラーが出るぞ
0776デフォルトの名無しさん垢版2021/09/07(火) 18:46:56.75ID:9ZJa/YC2
d = ''
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。
0783デフォルトの名無しさん垢版2021/09/07(火) 20:33:41.53ID:YcIWO4/P
Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる

つまり、先頭のみ最適化される

だから未だに、文字列を追加していく方法が分からない
0785デフォルトの名無しさん垢版2021/09/07(火) 21:31:13.42ID:8Blsw2sW
CPythonでは最適化が入っていてO(n)になるんだけど使うなとPEP8に書いてある
https://www.python.org/dev/peps/pep-0008/#programming-recommendations

For example, do not rely on CPython's efficient implementation of in-place string concatenation
or statements in the form a += b or a = a + b. This optimization is fragile even in CPython
(it only works for some types) and isn't present at all in implementations that don't use refcounting.
In performance sensitive parts of the library, the ''.join() form should be used instead.
0788デフォルトの名無しさん垢版2021/09/08(水) 15:36:42.18ID:sW5ieu31
>>732
>>734
大変遅くなりましたがありがとうございました
助言通りpipにします
0789デフォルトの名無しさん垢版2021/09/08(水) 15:56:50.49ID:45GUJlB8
重いcondaら
0791デフォルトの名無しさん垢版2021/09/08(水) 17:27:10.26ID:tJQkvu8J
formatで
0.1未満なら "5.2%"
0.1以上〜1.0未満なら "5.1%"
みたいに、全体の桁数は固定で値によって少数点以下を調整してくれるような簡易な方法ってないですか?(%だけでなく、fなんかでも)

formatだと丸められるので、単純に
if x >= 0.1 とかはできないので、一旦formatかけてからlenで桁が溢れてないかチェックしてるんですが、もうちょっとスマートな方法が無いものかと。
0794デフォルトの名無しさん垢版2021/09/08(水) 17:51:41.60ID:45GUJlB8
ruby 使ってると馬鹿になりゅよ
0795デフォルトの名無しさん垢版2021/09/08(水) 17:53:59.73ID:s8bChe9P
>0.1未満なら "5.2%"
>0.1以上〜1.0未満なら "5.1%"

ここが逆になってるんだろ?
小数点以下が0.1以上の場合は全て0.2に統一って事じゃ無いの?
そうでないとしたら俺も理解不能だわ。
0797デフォルトの名無しさん垢版2021/09/08(水) 19:32:05.85ID:aHZlxj+w
master.py上に実行したいスクリプトtestxx.py(xxは数字)がたくさんあります。
os.systemで引数を渡してtestxx.pyを実行しているのですが、testxx.pyからの戻り値を受け取る場合はどうしたら良いのでしょうか。標準出力の値なら取れるみたいな記述を見ましたが、実行中にprintを多様しているため、任意の戻り値のみを取得したいです。
0798791垢版2021/09/08(水) 20:04:49.50ID:tJQkvu8J
分かりにくくてすみませぬ

{x:5.2%} {x:5.1%} というformatで
xが0.1=10%、1.0=100% なので、

10%未満なら9.99% まで少数点2桁、
10%以上100%未満なら99.9% まで 少数点1桁
で表示してほしい、という意味です。
全体桁固定で少数点だけ変動するようなformatの表記、あるいはやり方は無いかなという質問です
0800デフォルトの名無しさん垢版2021/09/09(木) 01:16:22.36ID:YDItKt7x
numpyのメソッドzerosやonesなどは引数をタプルで指定することになっていますが、リストで指定しても実行できています。
特に問題ないように見えるのですが、タプルで指定した方がいい理由などあるのでしょうか?
0801デフォルトの名無しさん垢版2021/09/09(木) 02:10:35.73ID:1BTdIMLT
タプルは普遍だけれども、リストはそうでないから成長することを想定して必要以上の領域が確保されちゃうぶん効率が悪いとかあるんじゃね?知らんけど
0802デフォルトの名無しさん垢版2021/09/09(木) 02:34:23.48ID:OKDvztcs
sequenceの操作しかしてないから実際はlistでもOKないんじゃない?
onesの説明には
> Parameters: shape: int or sequence of ints
とあるしzeros側のメンテ漏れとか
0805デフォルトの名無しさん垢版2021/09/09(木) 14:16:43.72ID:3sOE3L2f
>>797
subprocess
popen
0809デフォルトの名無しさん垢版2021/09/09(木) 17:03:24.41ID:s2e04Gy+
>>808
> 10%未満なら9.99% まで少数点2桁、
> 10%以上100%未満なら99.9% まで 少数点1桁
って言ってるのにわざわざ150%とか出してきてドヤるのは頭になんか障害でもあるのか?
0810デフォルトの名無しさん垢版2021/09/09(木) 17:16:30.91ID:MjE68I3R
>>809
>>798
別にドヤってないし、>>807に値を渡した結果を書いてうまくいかない旨を示しているだけだが?
俺も同じようなの試してうまくいかなかったのでうまくいかないと書いただけ。
急に絡んでキレるのは頭に障害でもあるのか?
0813デフォルトの名無しさん垢版2021/09/09(木) 18:13:06.28ID:Ur+lRPYu
100%の値を渡した時に表示がおかしくなる書き方した俺が悪かった、すまん
境界値テストをちゃんとやってなかった証拠だな、マジでごめん
(実務でも似たような事やらかすからマジで反省しとる……)
0815デフォルトの名無しさん垢版2021/09/10(金) 08:23:56.80ID:oazR15lu
質問とは趣旨違いだがコマンドラインアプリでもGUIでめプログレスバーや%進捗表示はまず回避してどうしてもって言われたら超シンプルにしろって昔言われたな。
境界値の扱いでバグりやすい。
ただ本質的なバグではないのに99.9%で完了するとか100.1%まで行くとかのバグ指摘を受けやすい。
あと業務のこと分かってない情シスが仕事してるフリするために何かレビュー指摘しようとして手をつけやすい。
(1%刻みで出力するけど10の倍数だけ太字にして目立たせろとか)
0816デフォルトの名無しさん垢版2021/09/10(金) 08:26:12.15ID:oazR15lu
もっとも最悪なのは残り時間予測だけどな。
windowsですらあと5分ですって出してから30分かかったり30秒で済んだりするくらいだからよほど単純な処理じゃないと間違える。
テキストファイルのロードみたいな単純な処理でもメモリ圧迫するような挙動だとだんだん重くなるみたいなことあるし。
0817デフォルトの名無しさん垢版2021/09/10(金) 11:45:28.24ID:NVBgm1WL
今までに作ったclassの中で一番行数が多いのってどれぐらいですか?
350行程度のclassでもちょっとわけ分からんようになってきたよ
0818デフォルトの名無しさん垢版2021/09/10(金) 16:59:22.38ID:1odBdOt6
それはこのクラスにはこの系統の処理を置くよ という役割分担が上手くなくて
読むときに負荷がかかってるからだと思うぬ
0819デフォルトの名無しさん垢版2021/09/10(金) 22:42:11.14ID:VqIPySM9
Austria, Croatia, Republic of, Congo, Democratic Republic of the
上記のような文字列があってそれをリストと化したいんだけどカンマでsplitしたりすると
'Croatia, Republic of', 'Congo, Democratic Republic of the'ではなく
'Croatia', 'Republic of', 'Congo', 'Democratic Republic of the'になるけど解決方法がわからないので教えてください。c
0820デフォルトの名無しさん垢版2021/09/10(金) 23:04:37.11ID:6R6RVOqf
>>819
国名はそれそれ、Austria, Croatia, Congoで処理したいということ?
もともとのデータはリストだったの?
0821デフォルトの名無しさん垢版2021/09/10(金) 23:35:10.00ID:VqIPySM9
AustriaとCroatia, Republic ofとCongo, Democratic Republic of theの3つに分けたい
元々のデータはブラウザから手動で引っ張ってきてコピペした文字列なのでリストではないです
0822デフォルトの名無しさん垢版2021/09/10(金) 23:52:18.65ID:LLuPU2aV
機械的に処理するルールを決めることがプログラミングだよ
とりあえずコンマで分けたあと小文字単語があれば前とくっつける、とやってみたいけど
それで全部うまくいくかね
0823デフォルトの名無しさん垢版2021/09/10(金) 23:58:48.69ID:HeVTXR4t
オーバースペックだけど
英名の住所は正規化するAPIやモジュールがあるから
それつかった方が楽だし応用効くよ
0824デフォルトの名無しさん垢版2021/09/11(土) 00:22:54.56ID:ZpRElCEp
国名とそれ以外を分ける必要があるけど
別途国名のリストを拾ってきて、要素を検索しつつ仕分けすればできそう
まぁ、国名リストって時点でアンチョコ使ってるみたいですっきりしないのはおいといて…
0825デフォルトの名無しさん垢版2021/09/11(土) 06:02:28.90ID:Ka5OzmL8
あんちょこって何?
0826デフォルトの名無しさん垢版2021/09/11(土) 08:06:33.32ID:A67k4NSD
pythonスクリプトを直接python test.pyって実行すると動くんですが、
bashからtest.pyを起動しようとすると「No module named websocket」と表示され失敗します。
sys.path.appendすると今度は「No module named selectors」と表示されます。
どなたか対処法をご存知でないでしょうか?
環境はCloud9のAmazon Linux 2です。
0828デフォルトの名無しさん垢版2021/09/11(土) 10:00:36.84ID:Dj6rAQzj
>>826
モジュール関係でエラーが出た時は
それぞれ一回をsys.pathを出力させて、モジュールの参照先がどうなってるか調べる
(大方実行時に参照してるライブラリのパスが変わってる)
0829デフォルトの名無しさん垢版2021/09/11(土) 17:38:25.32ID:YCQOaCey
>>825
カンニングみたいなニュアンス
この場合は、国名を分離するのに国名リスト使ったらそりゃうまく行くが、国名は200数個に限られているからその辺にいくらでも正しいデータ源が転がっているからいいけれど、
データ源を揃えきれないだろう世界の県名とかだったら成り立たず、うまくいかないだろうからモヤモヤするよねって感じだと思う

元のお題は自動処理するにはもともと筋悪だと思うけどね、バラになっちゃったやつを人間がチェックして結合するのが一番時間かからなくて確実そう
0830デフォルトの名無しさん垢版2021/09/11(土) 18:26:28.45ID:A67k4NSD
>>828
ありがとうございます
確かに直接実行した時とbashから呼び出した時でパスが違っています…
何か違う環境として実行されているということなのか…
0831デフォルトの名無しさん垢版2021/09/11(土) 18:31:53.67ID:A67k4NSD
bashから実行した時はなぜかpythonパッケージのパスが2.7になっているようです
0832デフォルトの名無しさん垢版2021/09/11(土) 18:59:07.20ID:Dj6rAQzj
>>831
LinuxとかMac環境で実行しようとしてるなら
python test.py ⇒Python2で実行する
python3 test.py ⇒Pyhthon3で実行する
っていう動きになる

とりあえずpython3 --version
を使って、そもそもpythonの3系が入ってるかを見た方が良い
入ってたら必要なライブラリをpython3 pip install〜で入れればOK
0833デフォルトの名無しさん垢版2021/09/11(土) 19:02:25.20ID:A67k4NSD
>>832
ありがとうございます
python3指定で実行するようにしたら成功しました!
0835デフォルトの名無しさん垢版2021/09/12(日) 11:08:57.22ID:PNU8wIel
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

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

クソチョンw
0837デフォルトの名無しさん垢版2021/09/15(水) 20:38:57.55ID:IoiHiFbB
392 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:01:39.47 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
9 名前: デフォルトの名無しさん (ワッチョイ 696a-dGLa) [sage] 投稿日: 2021/09/15(水) 19:02:48.45 ID:fHmj5hYp0
スクレイピングすると地獄へ落ちるって本当ですか?
294 名前: デフォルトの名無しさん (ワッチョイ e57f-dGLa) [sage] 投稿日: 2021/09/15(水) 19:07:23.60 ID:0q0CE+HI0
スクレイピングすると地獄へ落ちるって本当ですか?
0839デフォルトの名無しさん垢版2021/09/16(木) 09:38:24.19ID:I3VTO38j
5ちゃんに一日1000回書き込むと極楽浄土が約束されます
0841デフォルトの名無しさん垢版2021/09/16(木) 12:56:20.01ID:ebDt5W+H
1)abc
みたいな文字列を")"の位置でsplitで分割したいとき、
1) と abc
のように分割文字も残したい場合、スマートな方法ありますか?
)でsplitして後から )を足す、という方法もあるかと思いますがなんかスマートでは無いですよね
re.splitならできるのかな?
0843デフォルトの名無しさん垢版2021/09/16(木) 14:18:35.84ID:Q5AMtJ/i
re.findall(r'(.+\))(.*)', '1)abc')
[('1)', 'abc')]
0844デフォルトの名無しさん垢版2021/09/16(木) 14:22:48.45ID:AVL/loTg
と思ったらそのサイトの下のほうに
python3.7からre.split()で行けると
a="alpha,beta,gamma"
import re
re.split("(?<=,)",a)
0845デフォルトの名無しさん垢版2021/09/16(木) 17:59:54.65ID:13aXyCX3
CentOS7(armv7l)
python3.6
/usr/localにgcc10.1.0インストールして/usr/lib/libstdc++.so.6を6.0.19→6.0.28に張り替えてある

pandasのバージョン下げたりしてみたけどimportの段階で駄目でした
誰か原因分かりますか?


$ LD_PRELOAD=/usr/local/lib/libstdc++.so.6 pipenv run python3 test.py
成功

$ pipenv run python3 test.py
失敗

import pandas._libs.window.aggregations as window_aggregations
ImportError: /usr/local/lib/libstdc++.so.6: undefined symbol: libiconv

<test.py>
import pandas as pd
url = 'ヤフーファイナンスのurl'
print(pd.read_html(url))

$ ls -l /usr/local/lib/libstdc++.so.6
/usr/local/lib/libstdc++.so.6 -> libstdc++.so.6.0.28
0847デフォルトの名無しさん垢版2021/09/16(木) 18:59:56.78ID:13aXyCX3
>>846
libiconvはUで確かに未定義でした
0848デフォルトの名無しさん垢版2021/09/16(木) 23:14:17.32ID:KHTFd4df
pyton3上で地図に棒グラフを立てたいと思い、cesiumpyにたどり着きました。
インストール後、import cesiumpyを実行したことろ、
AttributeError: partially initialized module 'cesiumpy' has no attribute 'data' (most likely due to a circular import)
と出ます。回避方法等ご教示くださいませ。
0849デフォルトの名無しさん垢版2021/09/16(木) 23:18:50.22ID:wbqs1W10
マイナーなライブラリについて質問しても答えてくれる人いないよ
circular importとか書かれてるけど、まさかそのファイル名がcesiumpy.pyだったりしないよね
0850デフォルトの名無しさん垢版2021/09/16(木) 23:31:37.25ID:KHTFd4df
>>849
ファイル名は違うものですが・・・マイナーなものは難しそうですね。
ご助言ありがとうございました。
0851デフォルトの名無しさん垢版2021/09/17(金) 08:59:56.61ID:UtF7UwZj
>>848
dependencyは満たしているか?
0852デフォルトの名無しさん垢版2021/09/18(土) 01:57:16.35ID:lb+sAgRD
スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります
0854デフォルトの名無しさん垢版2021/09/18(土) 08:28:17.55ID:bA/qQPAi
>コインランドリーの稼働データを集計して空いてる確率が高い時間帯

台風の最中は空いてそうだ
0855デフォルトの名無しさん垢版2021/09/18(土) 08:29:01.24ID:BxqtlgPJ
正攻法は>>853だけど裏技的にやるんだったらMVNOのSIM契約してipとかUAを変えながらスクレイピング。
向こうも機械アクセスだと気づきにくくなる。
ただカムフラしてまでやろうとしたということで相手に迷惑かけるかもって気持ちが入ることになるから訴えられたときには不利になる。
0857デフォルトの名無しさん垢版2021/09/18(土) 09:09:44.75ID:2a7FPWkS
フォルダ内のファイルをenumerate()で一括連番リネームします
リネーム後の名前が既存かもしれないとき

1回目のループでexistsならパスとリネームを記録,大丈夫ならリネーム
2回目のループで記録したパスをリネーム

これで重複回避して全件リネームできますか?
手元ではできてる気がするんだけど,例外パターンがあるような気がする
(windowsのロングパスとか編集不可属性とか並び順の話は置いといてください)

--
元 : 新
000.txt → 1.txt
00.txt → 2.txt
1.txt → 3.txt
3.txt → 4.txt
こういうことがしたいのです
0860デフォルトの名無しさん垢版2021/09/18(土) 09:44:49.40ID:lb+sAgRD
>>853-856
回答ありがとうございます
心配性なので許可を取る以外のリスク回避策も知りたいのです
例えば、プログラム書いてもバグでF5アタックレベルの猛烈なアクセスをすることってありえますよね
そういうのが起きないような安全装置の作り方
自前で作ったサーバにも同時にアクセスしてアクセス頻度を証明するログを取る(v6共有IP巻き添え捜査対策)
何らかの理由で訴えられたとき勝つための材料を集めておく
などの方法を教えてくれる書籍がないかと探しています
0861デフォルトの名無しさん垢版2021/09/18(土) 09:46:54.79ID:BxqtlgPJ
.netだとtempのファイル名を持ってくるメソッドがあったな。
個人用途でリネーム中に他人がファイル名を変更するという懸念がない条件ならランダム英数字の中間ファイル名を経由してリネームすればいいんじゃない?
企業ユースとかでしっかりやる必要のある処理かつリネーム中の障害とかまで考えるなら安直なリネームは処理中の状態が不安定だから禁忌だと言われるね。
ファイルコピーすると同時に名称変更してリネーム後のファイル群を作り完成したところで元ファイルを削除みたいな動作にする。
(もちろんスピードやディスク容量とかの要件とも相談)
0863デフォルトの名無しさん垢版2021/09/18(土) 09:56:58.79ID:9Dfq3hh+
>>857
その方法だと下の3行のリネームも無理じゃね
0.txt→ 1.txt
1.txt→ 2.txt
2.txt→ 3.txt
俺は、1回目でリネームできないときは
uuid.uuid4().hex を付加してリネームして
2回目で、uuid.uuid4().hexを付加したファイルを、目的のファイル名にリネームしてる
0864デフォルトの名無しさん垢版2021/09/18(土) 10:04:11.39ID:bA/qQPAi
>>857
000.txt -> 1.txt -> 2.txt -> 3.txt -> ... って無限に繰り返す危険は0と言い切れる?
0865デフォルトの名無しさん垢版2021/09/18(土) 10:44:49.91ID:2a7FPWkS
>>863
あーそうか…
じゃあexistsのときはunique_suffix付きでリネームして
最終的にケツ削る感じにします
uuid知らなかったんですが、いいですねこれ
今回は259文字制限下なのでアレだけど勉強になりました
0867デフォルトの名無しさん垢版2021/09/18(土) 13:21:25.11ID:IiEq2a0h
>>852
素人は、本番サーバーでテストしてはいけない。
素人のアプリは、バグで無限ループして、何万回もアクセスするから

必ずダウンロードして、自分のPC 内でテストしないといけない

それと本番サーバーに、100回とか繰り返しアクセスする場合は、
必ず、相手のrobots.txt を遵守すること!

または、相手と契約して、API を使うこと

基本、スクレイピングは営業妨害との戦い。
どの本にも、そう書いてある。
スクレイピングを推奨する本はない

必ず、robots.txt 遵守か、許可を得る、または契約すべき

山浦清透、2021/6

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

この動画では、Laravel で、マイナビ転職をスクレイピングしている。
27:40 から、robots.txt を調べている
0868デフォルトの名無しさん垢版2021/09/18(土) 13:56:07.34ID:LBCfu3j9
どの本にも〜とか言う割に本は挙げないのな
0869デフォルトの名無しさん垢版2021/09/18(土) 15:25:34.95ID:ZDaB5e5K
selenium(ChromeDriver)で
すでにbuttonのWebElementまで取得している状態で、単にそれがクリック可能になるまで待つときはどう書けばいいの?
イメージは↓こんなだけどWebElementは引数に与えられないみたい。
WebDriverWait(driver, 5).until(
EC.element_to_be_clickable(button)
)
0871デフォルトの名無しさん垢版2021/09/18(土) 15:58:23.33ID:9lUPAjpA
ある条件を満たした時にプログラムを再起動したくて
subprocess.call(__file__, shell=True)
と記述してるんですが挙動がおかしいです
どうおかしいのかと言うと、プログラムを強制終了したい箇所で
sys.exit()
と記述してるんですが、そこでも再起動されてしまいます
どう改善したら良いでしょうか
0872デフォルトの名無しさん垢版2021/09/18(土) 16:03:37.86ID:ZDaB5e5K
>>870
WebElementオブジェクトからlocarorって取得可能?
今回のbuttonが、findで一意に特定できないエレメントだから、Waitの例でネットによく書いてあるBy.xxxの書き方だと、複数のbuttonがWaitの対象になってしまうんだよね
特定の1つのエレメントだけをwaitの対象にしたいのだが
0873871垢版2021/09/18(土) 16:03:39.53ID:9lUPAjpA
>>871の補足です
subprocess.call(__file__, shell=True)
で、一度再起動した後で、
sys.exit()
を実行すると、強制終了しないで再起動してしまう挙動を何とかしたいということです
0876デフォルトの名無しさん垢版2021/09/18(土) 18:13:33.17ID:J85RgKD5
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください


>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない

どこでそんなルールが決まっているのでしょうか?
0879デフォルトの名無しさん垢版2021/09/18(土) 18:54:45.08ID:+/kaLHzE
>>876
> どこでそんなルールが決まっているのでしょうか?
決まってないよ
ただ普通の頭持ってたらマルチポストが回答者に失礼だと言うことはわかるはず
0883デフォルトの名無しさん垢版2021/09/19(日) 15:05:50.16ID:snblcpQq
>>882
なるほど、カスタム待機条件というのがあったか。
これでエレメント引数にした待機できた。ありがとう
0884デフォルトの名無しさん垢版2021/09/22(水) 08:26:17.31ID:ykk+hhl9
Python3.9.7で、テキストボックスに右クリックメニューをつけたいのですがうまくいきません

input1 = tk.Entry(root,textvariable = x1_str, width = 5)

def show_right_click_menu(e):
____w = e.widget
____right_click_menu.entryconfigure("切り取り",
____command=lambda: w.event_generate("<<Cut>>"))
____right_click_menu.entryconfigure("コピー",
____command=lambda: w.event_generate("<<Copy>>"))
____right_click_menu.entryconfigure("貼り付け",
____command=lambda: w.event_generate("<<Paste>>"))
____right_click_menu.entryconfigure("削除",
____command=lambda: None if 0 else w.delete(w.index("sel.first"),w.index("sel.last")))
____right_click_menu.entryconfigure("すべて選択",
____command=lambda: w.select_range(0, "end"))
____right_click_menu.tk.call("tk_popup", right_click_menu, e.x_root, e.y_root)

選択していない状態で削除を実行すると下記エラーがコンソールにでます
_tkinter.TclError: selection isn't in widget .!entry

エラーが表示されないようする方法をご教示いただけませんか
エラーが表示されるだけで問題なく動いていますが気持ち悪いので
0885デフォルトの名無しさん垢版2021/09/22(水) 16:50:16.15ID:wN494UoL
pythonで、いわゆるDBのコネクションプールのような、限られた複数資源をプールにして使い回す基本的な仕組みって何かありますか?
DBで使うわけではないので汎用的なものを想定してます
たとえば資源として5つのインスタンスがあり、要求側はそれのいずれかが空いていれば排他的に1つのインスタンスを獲得し、すべて獲得済みの場合は任意の時間待機させる、というイメージです
要求側は必要な処理が終わればインスタンスをプールに返します
キューを使ってできそうな気がしますがもう少し実装しやすいものとかありますかね?
0886デフォルトの名無しさん垢版2021/09/22(水) 20:35:20.60ID:N9zBagLQ
>>885
しったかで書く
PyPIで多数ヒットするけど逆にこれってのはないからインターフェイスの好みで選択
どうせ中身はQueueかdeque
DB接続でいうとドライバやミドルウェアにだいたい専用のが付いてくる
0887デフォルトの名無しさん垢版2021/09/22(水) 23:15:37.85ID:rplKfx8l
>>886
ヒントありがとう
PyPIで見たら確かにだいたいqueueで実装されてた。ソース参考にして実装してみます
0888デフォルトの名無しさん垢版2021/09/23(木) 01:31:50.40ID:ERg2ncYO
Pythonも最近ではそんな真面目な用途でも使われそうな感じになってきてるのか。
おじさんびっくりだわ。
0889デフォルトの名無しさん垢版2021/09/23(木) 02:31:58.77ID:GanDJT5R
独学プログラマーを読んで勉強始めた方いますか?
Amazonレビュー見ると意味不明なURLや冗長な表現など初心者を惑わせる表記があるようで
初心者向けとは言えないような印象を受けますが、通しで読むとちゃんと初心者向けになってるのでしょうか?
0890デフォルトの名無しさん垢版2021/09/23(木) 09:05:11.72ID:aonnyzzk
self taught programmerは英語版をパラパラと眺めた程度だけど、悪い本じゃないと思う
どの教材にも欠点はあるから、多少のことは気にせずにさっさと取り掛かったほうが良いと思う
初心者が自分にとって完璧な教材を見つけるのは無理

他の本のほうが良さそうなら他のでもいいし、無料のweb教材でもいいし
0891デフォルトの名無しさん垢版2021/09/23(木) 09:37:27.55ID:aonnyzzk
ちなみに『独学プログラマー』は「自力でプログラムを覚えて仕事を始めるまで」が一番大きなテーマであって
pythonのことを手取り足取り教える目的で書かれたものではない

単純にpythonの基本を学びたいだけなら、もう少し狭い内容を扱った他の本が良いかもしれない
0892デフォルトの名無しさん垢版2021/09/23(木) 11:14:45.24ID:zah9lHsX
そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな
0893デフォルトの名無しさん垢版2021/09/23(木) 12:55:36.27ID:aonnyzzk
>そもそも独学出来るようなプログラマーならそんな本読まなくても出来るからな

これはその通りで、基礎的なことは全部ネットに無料で落ちているので、わざわざ本を買う必要はない。
本で学ぶのが好き、って人もいるだろうから全否定するつもりはないけど。
0895デフォルトの名無しさん垢版2021/09/23(木) 15:24:28.97ID:Hq81xlZ0
>>888
LAMP(Linux,Apache,MySQL or MariaDB,PHP or Perl)のPがPythonに移行されつつある
DBの方もPostgreSQLに変わりつつある
0899デフォルトの名無しさん垢版2021/09/23(木) 15:55:26.37ID:Sp5Iyysf
いまさらPostgresが主流になるような感じはしないがな。
DBMS全体でPostgresのシェアは上がってきているがMySQLも同様にシェアを拡大している。
そもそも普及率が倍くらい違うし。
0902デフォルトの名無しさん垢版2021/09/23(木) 16:20:47.11ID:/gKnAjHi
postgreSQLは最近覚えたけどそこまでメリットは感じない
pythonから叩くにあたってmysqlから面倒くさい部分は増えた
0903デフォルトの名無しさん垢版2021/09/23(木) 17:48:30.88ID:LWGez+JK
pip listでsympyが確認できるのに

>>> import sympy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sympy'

となるのはなぜですか?
0910デフォルトの名無しさん垢版2021/09/23(木) 22:25:39.27ID:Ok65a0lv
>>884
自己解決しました
def show_right_click_menu(e):
____w = e.widget
____def show_right_click_menu_delete():
________nonlocal w
________try:
____________w.delete(w.index("sel.first"),w.index("sel.last"))
________except:
____________pass
____right_click_menu.entryconfigure("切り取り",
____command=lambda: w.event_generate("<<Cut>>"))
____right_click_menu.entryconfigure("コピー",
____command=lambda: w.event_generate("<<Copy>>"))
____right_click_menu.entryconfigure("貼り付け",
____command=lambda: w.event_generate("<<Paste>>"))
____right_click_menu.entryconfigure("削除",
____command= show_right_click_menu_delete)
____right_click_menu.entryconfigure("すべて選択",
____command=lambda: w.select_range(0, "end"))
____right_click_menu.tk.call("tk_popup", right_click_menu, e.x_root, e.y_root)

tkinterがよく分からない
次は、undo redo をなんとかしたい
0911デフォルトの名無しさん垢版2021/09/24(金) 00:17:26.60ID:wqDlteq1
>>867
レス遅れてしまい申し訳ありません
時間つくっていくつか書籍を立ち読みしてみましたが
訴えられる前提でスクレイピングする本は当たり前のようにありませんでした
テストサーバでプログラム作ってから、相手に連絡した上で動作させるのが最低限のマナーで
あとはもう自分で創意工夫して逮捕防ぐしか無いですね
0912デフォルトの名無しさん垢版2021/09/24(金) 08:20:48.10ID:KibxKmAg
>>730
このpython3.8だとproxy繋がるけど3.9だとダメになる問題は自分自身で解決しますた。
https://github.com/psf/requests/issues/5740
こことかそのリンク先に書いてある。
社内環境でセキュリティのためproxyでHTTPS通信を復号化してるんだけどそんな特定条件で起こるらしい。
.condarcのhttpsのproxyをサンプルを真似してhttps://hogehogeって書いてたけどhttpに修正したら繋がるようになった。
0914デフォルトの名無しさん垢版2021/09/24(金) 09:00:12.81ID:sjjiTDvK
pandasで下の様なデータフレームOLD,NEWがあります。
df_OLD
 商品名 価格 種類
0 バナナ 100 フルーツ
1 トマト 150 野菜

df_NEW
 商品名 価格 種類
0 バナナ 120 フルーツ
1 トマト 130 野菜

OLDとNEWを商品名で比較して、一致した場合にNEWの値と置き換えたいときってどの様にしたら良いのでしょう?
一気に比較してくれる方法とかあるんでしょうか?
1行ずつ比較しないといけないのでしょうか?
0917デフォルトの名無しさん垢版2021/09/24(金) 09:29:05.87ID:sjjiTDvK
>>915-916
後出しみたいになって申し訳ありません。
update試しましたが、同一行を置き換えるのですね。

やりたいこととしては、NEWの方は並び順は一致せず、
さらに新規データの追加やキーとなる列(商品名)以外の内容の変更もしたいのです。

df_NEW
 商品名 価格 種類
0 スイカ 150 野菜
1 バナナ 120 フルーツ
2 トマト 130 野菜B
0918デフォルトの名無しさん垢版2021/09/24(金) 09:37:04.32ID:wqUtxwi5
やりたいことが良く分からないんだけど

(1) df_NEW のデータは全て保持したい
(2) df_OLD にあるもので、df_NEWに無いものはdf_NEWに追加したい

という解釈でも良いのかな?
それなら df_NEWと df_OLD の差分をとって、そのうちdf_NEWに欠けているものをdf_OLDから追加するという方法でも良い?
0919デフォルトの名無しさん垢版2021/09/24(金) 09:38:42.26ID:sjjiTDvK
>>918
わかりづらくてすみません。
・OLD側に同じ商品名があればNEWの内容で更新。
・ NEWにしか無い商品はOLDに追加です。
0920デフォルトの名無しさん垢版2021/09/24(金) 09:43:23.68ID:wqUtxwi5
>>919
df_NEWというのはすでにpandas.DataFrameの形で持っているということで良いですか?
その場合、df_NEWに入っている値は全て正しい(更新する必要はない)ということになりますよね。おそらく。

それならdf_OLDを更新するという発想にこだわる必要はなくて、NEW無いものをOLDから追加するという発想に転換しても良いのでは?
その場合、私ならmergeを使うと思います。

https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.merge.html
0921デフォルトの名無しさん垢版2021/09/24(金) 09:46:08.06ID:sjjiTDvK
>>920
ありがとうございます。なるほど、そっちの考え方の方が良さそうですね。
ちょっと試してみます。わからなかったらまた質問させてください。
0922デフォルトの名無しさん垢版2021/09/24(金) 10:15:48.12ID:sjjiTDvK
現状のままだと、希望結果=NEWになってしまうので少し変更して試しました。
df_New2=pd.merge(ldf_New ,ldf_Old,on=['商品名'],how='outer')
df_Old**************************************************
商品名 価格 種類
0 バナナ 100 フルーツ
1 トマト 150 野菜
2 人参 50 野菜C
df_New**************************************************
商品名 価格 種類
0 スイカ 150 野菜
1 バナナ 120 フルーツ
2 トマト 130 野菜B
df_New2**************************************************
商品名 価格_x 種類_x 価格_y 種類_y
0 スイカ 150.0 野菜 NaN NaN
1 バナナ 120.0 フルーツ 100.0 フルーツ
2 トマト 130.0 野菜B 150.0 野菜
3 人参 NaN NaN 50.0 野菜C
0923デフォルトの名無しさん垢版2021/09/24(金) 10:16:10.57ID:sjjiTDvK
しかし希望する結果は以下のとおりです。
この様にしたい場合どうしたら良いのでしょう?
df_New2**************************************************
商品名 価格 種類
0 スイカ 150.0 野菜
1 バナナ 120.0 フルーツ
2 トマト 130.0 野菜B
3 人参 50.0 野菜C
0925デフォルトの名無しさん垢版2021/09/24(金) 10:34:25.61ID:KibxKmAg
日本語で仕様が決まったらまたご相談くださいって感じかな。
その場合はこうして欲しいってのがコロコロ変わりそう。
0926デフォルトの名無しさん垢版2021/09/24(金) 11:00:59.24ID:+y7bOBPx
正規表現のfindall()の挙動について質問です
内線を含む電話番号に対する正規表現パターンを用意(現在使用している参考書のコピペ)し、
適当な番号を与えfindall()で取得したリストを出力しました
コードは↓に
https://techiedelight.com/compiler/?22O5

結果としては print(regex.findall('012-345-6789 x 123')) に対し、出力が
[('012-345-6789 x 123', '012', '-', '-', ' x 123', 'x')]
 だったのですが、何故こうなるのか解りません

'012-345-6789 x 123', '012', '-', までは解るのですが、なぜそのあと '345' や '6789' が取得されず、
また、'x 123' の取得後に 'x' だけが取得されるのでしょうか
0928デフォルトの名無しさん垢版2021/09/24(金) 12:00:20.17ID:+y7bOBPx
>>927
あ〜〜途中の \d{3} などは () で囲われてないからグルーピングされてないために弾かれちゃってたんですね
以下のようにして
https://techiedelight.com/compiler/?SVye
以下の出力結果を得ることができました
[('012-345-6789 x 123', '012', '-', '345', '-', '6789', ' x 123', 'x')]

最後に取得されている x については (?:) を使用するんでしょうか?
(?:) という記法についてまだ知らないので調べてみます

レスありがとうございました
0929デフォルトの名無しさん垢版2021/09/24(金) 12:10:24.86ID:sjjiTDvK
いろいろ試して、以下で思う様な結果を得る事ができました。
アドバイスありがとうございました。
df_New2=pd.merge(df_New,df_Old,on=['商品名'],how='outer',suffixes=("","_d"))
df_New2['価格'].fillna(df_New2['価格_d'], inplace=True)
df_New2['種類'].fillna(df_New2['種類_d'], inplace=True)
df_New2.drop(['価格_d','種類_d'], axis=1)

上記2行目と3行目ってまとめて書いたり、”_d”で終わる列とかで指定できるのでしょうか?
0930デフォルトの名無しさん垢版2021/09/24(金) 12:12:56.73ID:/f3Q922M
>>923
それだったら、同じ商品名のデータを上書きするっていう考え方じゃなくて、
oldだけに有ってnewに無いデータだけ抽出して
それをnew側のdfにくっ付けるってやり方があるかな

一応、想定通りには動くけど
大分不細工なやり方になっちゃったから許して……
https://ideone.com/oxdsR3
0931デフォルトの名無しさん垢版2021/09/24(金) 12:23:17.91ID:sjjiTDvK
del_old_df = old_df[old_df["商品名"].isin(new_df["商品名"])]
こんなこともできるんですね。ありがとうございます。
こっちの方がてっとり早いですね。
0934デフォルトの名無しさん垢版2021/09/24(金) 17:01:28.66ID:ZghczHx7
ファイルの最後の行に
return 1
と書くと、「SyntaxError: 'return' outside function」
というエラーが出てしまいます
ファイルの最後の行に書く必要はないってことですか?
0936デフォルトの名無しさん垢版2021/09/24(金) 17:06:17.94ID:ZghczHx7
関数の最後の行には書くのに
ファイルの最後の行に書いちゃいけないのは何故ですか?
0941デフォルトの名無しさん垢版2021/09/24(金) 19:58:52.71ID:cH5BLcev
もしかして

1 名前順並び
2 ファイル名は任意
という条件で
指定したファイルの1つ下に新規ファイルを保存する
って難しいですか?
makeChildPathName()みたいな関数が作りたい

https://i.imgur.com/Oa07h0G.png
2番目のファイルパスを指定したら2番目と3番目の間に新規ファイルを挿入保存したいということです
0942デフォルトの名無しさん垢版2021/09/24(金) 20:28:15.14ID:zSlDj9mb
任意のフォルダ下のファイル名を取得して自分で並べ替えて挿入すればいいじゃん。
自分だったらWindowsのファイルの並び順の仕様を調べてPython側で同じように並べ替える。
それがめんどくさければsubprocessでDIRの結果を取ってくる。
「間に入るように」の部分は仕様が不明確だから答えようがない。
もし仕事なら_001とかつければいいと思ってるなら危険。
挿入されるファイルの規則に沿ったファイルがあらかじめ存在した場合にどうすればいいのかとか元のファイル名がパス260文字のギリギリまであったらどうするかとかまで詰めないと。
0943デフォルトの名無しさん垢版2021/09/24(金) 21:20:10.36ID:/dwjMJ8P
>>942
path1<new<path2
になる文字列の自動生成でしょ
無理じゃないか
windowsは仕様公開してないし
0944デフォルトの名無しさん垢版2021/09/24(金) 21:53:51.05ID:Kyc5NeAQ
>>943
元のファイル名は、数字のみといった規則があればできるかも
汎用的なのはリネームしないと挿入できないケースもあるしめんどいね
パスの長さの規則もないと辛い
0945デフォルトの名無しさん垢版2021/09/25(土) 06:29:33.65ID:dHZYhTax
plot_surfが僅か3600座標の描画で20分以上掛かる
点の散布図なら100万座標でも1分未満だが
0946デフォルトの名無しさん垢版2021/09/25(土) 11:31:35.29ID:lBxoEpbF
windowsはcmdプロンプトでdirした順番と
explorerで観れる順番がそもそも違うし
sortしても解決しないω
0947デフォルトの名無しさん垢版2021/09/25(土) 11:32:33.68ID:lBxoEpbF
>>945
meshにしてる?
0948デフォルトの名無しさん垢版2021/09/25(土) 14:13:18.95ID:hl+7wKHR
>>946
explorerでってんだからAPIソート1択でしょ。そこは
0949デフォルトの名無しさん垢版2021/09/27(月) 19:04:05.97ID:EG3c4N9U
辞書のkeyに対するリスト型のvalueを使いやすいように良い感じに分解したい、または取り出したいんですがどうやれば良いんでしょう?
0950デフォルトの名無しさん垢版2021/09/27(月) 19:15:37.57ID:UiRgP5VH
ちょっと何言ってるかわかんない
0951デフォルトの名無しさん垢版2021/09/27(月) 19:23:20.36ID:EG3c4N9U
値がリストなんですよ
0952デフォルトの名無しさん垢版2021/09/27(月) 19:26:32.30ID:h2Q4WFZZ
ただの2次元データだから
keyとリストのindexで2回解決したら任意のデータにはたどり着けるけど
どう扱いたいのか目的がわからんとなんとも
0954デフォルトの名無しさん垢版2021/09/27(月) 21:43:37.37ID:EG3c4N9U
分解しないでどうやって辞書の値のリストを取り出せば良いのですか?
0956デフォルトの名無しさん垢版2021/09/27(月) 21:48:03.64ID:NoJANVQi
どっかのサイトからパクってきた

data = { "in_channels": [1024, 1024, 512, 256, 128], "out_channels": [1024, 512, 256, 128, 64], "upsample": [True, True, True, True, True], "resolution": [8, 16, 32, 64, 128], "attention": { 8: False, 16:False, 32:False, 64:True, 128:False } }

for seq in zip(*(v.values() if type(v) is dict else v for v in data.values())):
print(seq)
0958デフォルトの名無しさん垢版2021/09/27(月) 22:01:54.51ID:h2Q4WFZZ
取り出すというのが削り出すの意味なら
>>> d = {2: [21,22], 3: [31,32,33], 4: [41,42,43,44]}
>>> d.pop(3)
[31, 32, 33]
>>> d
{2: [21, 22], 4: [41, 42, 43, 44]}
0960デフォルトの名無しさん垢版2021/09/27(月) 22:10:19.33ID:EG3c4N9U
全然わかんないっす…w
イメージ的には辞書に、test1とtest2というキーがあって、
test1のvalueがリスト形式で
name, tanaka
age, 30
のときに
printでnameとtanaka を表示させたいです
0961デフォルトの名無しさん垢版2021/09/27(月) 22:21:28.01ID:2GjWPTj5
>>960
https://ideone.com/
ここにその辞書データを書いてきて
0963デフォルトの名無しさん垢版2021/09/27(月) 23:04:44.30ID:EG3c4N9U
おお、こんなサイトあるんですね
ちょっと勉強がてら実データ入れてやってみます!ありがとうございます
0964デフォルトの名無しさん垢版2021/09/28(火) 00:08:18.44ID:6t0zGqaE
>>962
>>> for _, name, _, age in data.values():
... print(name, age)
...
tanaka 30
suzuki 28

>>> for key, [_, name, _, age] in data.items():
keyがほしれば
0965デフォルトの名無しさん垢版2021/09/28(火) 08:23:37.75ID:QDSiHXp+
>>960-961
この流れ完璧に各地の現場で毎年繰り返される先輩と後輩の間のやりとりだな。
こうしたいんですって説明させることで質問者の脳みそが活性化されて問題の90%くらいは解消される。
残り1割は便利なメソッドややり方を知ってるかどうかだけという。
0966デフォルトの名無しさん垢版2021/09/28(火) 12:44:54.83ID:EdXmOL1P
openpyxlで指定の範囲例えばA1:C5のセルの外枠だけ罫線引くのはどうすれば良いですか?
0968デフォルトの名無しさん垢版2021/09/28(火) 15:05:35.43ID:EdXmOL1P
>>967
んー、あまり参考にならなかったんですけど結局はセルの1つずつでしか罫線引けないんで
複数範囲のセルの外枠のみを引こうと思うとforで回して上下左右辺のみの時だけ対象の罫線引くって処理にするしか無いんですかね
0970デフォルトの名無しさん垢版2021/09/28(火) 15:28:04.89ID:EdXmOL1P
すみません、openpyxlで指定の範囲の外枠のみの罫線を1発で引く方法ありますか?
0972デフォルトの名無しさん垢版2021/09/29(水) 11:36:55.19ID:H8LnbJn1
pythonのコマンドライン引数にJSON.stringifyした辞書を含む配列を渡すと、
辞書の中身が配列として分割されてしまいます。どうしたら辞書をそのまま渡せるのでしょう?

VSコードに渡した引数
"args":["[{¥"test¥":¥"a¥",¥"testB¥":¥"b¥"}]"]

argv[1]:'["test":"a"]'
argv[2]:’[“testB”:”b”]’
0973デフォルトの名無しさん垢版2021/09/29(水) 12:33:40.08ID:vWqip1VL
普通はコマンドライン引数に、JSON などのオブジェクトの構造物を渡さない。
構造物はファイルにまとめて、アプリ内で、そのファイルを読み込む

コマンドライン引数は、「a b c」みたいな空白区切りの文字列だけ
0974デフォルトの名無しさん垢版2021/09/29(水) 13:02:17.67ID:H8LnbJn1
ありがとうございます。
配列のみだと問題なかったので、大丈夫かと思っていました。
一旦書き出してから読み込むことにします。
0975デフォルトの名無しさん垢版2021/09/29(水) 22:33:50.89ID:J7GS4Ln7
AnacondaのidleがC:\〜〜\[username]\Anaconda3\Scripts\の中にあるのを
今更知ったw

多少のファイルを作りながら動かすなら一々JupyterやらSpyderやらを
重いなあと思いながら開かなくても良かったって事か
0977デフォルトの名無しさん垢版2021/09/30(木) 10:29:01.81ID:rsDh5L5E
base64使えば良い
0978デフォルトの名無しさん垢版2021/09/30(木) 10:30:11.82ID:rsDh5L5E
>>975
Anaconda prompt も一緒にインストールされるだろ?ショートカットも出来てるだろ?
0979デフォルトの名無しさん垢版2021/09/30(木) 12:37:26.63ID:c7qiSj6D
>>977
この返しはベテランの香りがしますねぇ。
base58にすると通っぽいけど余計な混乱を巻き起こすから滅多なことでは使ってはいけない。
0981デフォルトの名無しさん垢版2021/09/30(木) 15:06:50.08ID:HC7iXZId
base64と言っても
. とか / とか使うパターン以外に
+ とか - とか使うのもあるし
都合が悪ければ適当にコマンドラインで安全なキャラクターを選んで良い
base64 の亜種
0983デフォルトの名無しさん垢版2021/09/30(木) 20:12:26.79ID:afPZA96P
パソコン上で選択中のフォルダかファイルのパスを取得したいんだけど
各種ダイアログ経由しない方法ってありますか?

例えばGUIにコピペボタンを実装しといて
エクスプローラーでファイルクリック
GUIボタンクリックでその場に複写 みたいなことがしたいです
0985デフォルトの名無しさん垢版2021/09/30(木) 22:37:34.91ID:Q+Yf9LrK
> お前は毎朝起きるたびに俺に負けたことを思い出すよ^^

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

クソチョンw
0986デフォルトの名無しさん垢版2021/10/01(金) 00:29:07.44ID:753Hv+uI
>>983
簡単にできるかと思ったけど難しい気がする
0987デフォルトの名無しさん垢版2021/10/01(金) 01:24:45.73ID:b9bDtpSh
macのFinderなら割りと簡単だけど
Explorerだと拡張書くか探すことになりそう
Pythonだけでは書けないし
0988デフォルトの名無しさん垢版2021/10/01(金) 03:14:59.71ID:4hZQhWFc
エクスプローラーは選択されてる状態でCTRL+Cでもクリップボードにフルパス入るから
キー入力メッセージ送ってクリップボード読めばいいんでね
0990デフォルトの名無しさん垢版2021/10/01(金) 06:32:34.44ID:753Hv+uI
要件はオブジェクトクリック、GUIクリックでしょ
間で操作入れるなら普通にダイアログ出せばいい
0991デフォルトの名無しさん垢版2021/10/01(金) 07:07:02.57ID:S6tJEmA+
その要件が普通じゃ無いこと気づけよー
エクスプローラーが複数立ち上がってたらどうするの?
ファイル選択できるのはエクスプローラー限定なの?

Windows のマナー通り、ファイル選択ダイアログを
出せば済む話だと思うんだが。
0992デフォルトの名無しさん垢版2021/10/01(金) 10:20:54.28ID:5A2oAz4+
>>975
VSCodeのPythonのpath欄にAnaconda(の特定環境の)python.exeのあるフォルダのアドレス(世に言うpath)を
入力すればいいだけ
0993デフォルトの名無しさん垢版2021/10/01(金) 10:42:33.79ID:js1izThg
エクスプローラーからSendToかドラッグ&ドロップだな

SendToはショートカットも割り当てられるのでキーボードだけでも操作可能
ただ起動中のGUIで受け取るためにはそれ用の受け口を用意しておく必要がある

コピペはUXとして微妙なので人に使わせるアプリならやめたほうがいい気がする
0994デフォルトの名無しさん垢版2021/10/01(金) 11:18:02.98ID:PaEGpo5A
例えば、デスクトップにショートカットを作って、Ruby スクリプトを起動する。
Explorer からファイルとフォルダを、ショートカットへdrag & drop すると

リンク先
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/Ruby/desktop/a.rb

スクリプトの内容は、

puts ARGV # 配列

sleep # 出力したコマンドプロンプト画面を閉じないようにする

出力
C:\Users\Owner\Documents\あ.txt
C:\Users\Owner\Documents\a
0996994垢版2021/10/01(金) 12:53:42.59ID:PaEGpo5A
WSL2, Ubuntu 18.04 には、
日本人が作ったanyenv で、Ruby 2.6.6 をインストールしているけど、

Windows 用のMSYS2 のRuby では、Ruby 2.6 以降、
巨大なコンパイル環境を入れないと、コンパイルできないモジュールがあるので、やっかい

それで、Windows用Ruby は、2.5 を使っている

また、WSL2 には、drag & drop できない
0997デフォルトの名無しさん垢版2021/10/01(金) 13:11:48.98ID:q6100VNR
>>983
でけたよ。
あらかじめpip install pywin32しておいてね

import win32com.client as win32
shell_app = win32.Dispatch('Shell.Application')
for win in shell_app.Windows():
print(win.LocationName)
for item in win.Document.SelectedItems():
print(f' {item.Name} ({item.Path})')
0999デフォルトの名無しさん垢版2021/10/01(金) 15:25:02.82ID:xAAYN8E1
Rubyはオワコン
1000デフォルトの名無しさん垢版2021/10/01(金) 15:37:18.54ID:xAAYN8E1
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 113日 18時間 31分 34秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

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