くだすれPython(超初心者用) その44【Ruby禁止】

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2019/07/24(水) 21:02:48.30ID:d1IM+Tl+
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

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

〇前スレ〇
くだすれPython(超初心者用) その43【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1555397061/
2019/08/08(木) 11:36:02.41ID:FAqDS6zu
ターミナルで実行した時はメッセージを出すための処理をしたいけど、crontabで動かすときはメッセージは不要だからその処理は飛ばしたいです
どう書くんでしょうか?
129デフォルトの名無しさん
垢版 |
2019/08/08(木) 11:39:38.50ID:YYsAu0ua
syslog
130デフォルトの名無しさん
垢版 |
2019/08/08(木) 11:43:42.62ID:YYsAu0ua
https://docs.python.org/ja/3/howto/logging.html
131デフォルトの名無しさん
垢版 |
2019/08/08(木) 11:44:23.26ID:YYsAu0ua
https://docs.python.org/ja/3/library/logging.html
2019/08/08(木) 11:49:52.89ID:FAqDS6zu
どうもありがとうございます
なんだか難しそうですね
ターミナルかcrontabのどちらで起動させてるかをなんらかの方法で判断して、ifで分岐させればいいのかなーって思ってました
2019/08/08(木) 12:25:37.94ID:g3OLctgj
if sys.stdout.isatty(): print('hoge')
134デフォルトの名無しさん
垢版 |
2019/08/08(木) 12:26:13.26ID:YYsAu0ua
>ターミナルかcrontabのどちらで起動させてるかをなんらかの方法で判断して、ifで分岐させればいいのかなーって思ってました

そうだよ
最初にif一回だけ書けばあとは切り替わるのがlogger
コードの至る所にif埋め込む積もりだったのか?
2019/08/08(木) 13:03:07.26ID:FAqDS6zu
>>133>>134
そうです。いたるところにif書き込まないといけないのかなぁと思っていました。
じっくり調べてみます。

関数A
関数B(Aをターミナルに出力)
関数C(requestsを使ってapiにAをpost)
関数D(時間がかかる処理)
があるとします
関数B〜Dの3つをThreading.Threadを使うと
関数Dが動き始まるまで時間が逆に1秒くらい遅くなってしまいました

concurrent.futuresだと速度改善出来るかもしれないっぽいんですが、シングルコアのRaspberry Pi Zeroでも早くなりますか?
シングルコアだからmax_workersは1にしないといけないと思うので、concurrent.futures使う意味ないですか?
136デフォルトの名無しさん
垢版 |
2019/08/09(金) 07:20:44.68ID:yhHNDqxR
pythonでGUI操作で、たとえばネットワーク接続設定で、IPアドレスを入力する欄
があると思うが、これを手入力でなくて、pythonで代わりに入力することは可能?

ソースコード的にはどうなるのかな。
2019/08/09(金) 07:41:26.45ID:err5h/zJ
Python (Python 3.7)のインタプリタで真偽値に色を付けることって可能ですか?
>>> l1 = [1, 2, 3, 4, 5]
>>> 3 in l1
True
↑このTrueを例えば緑色にしたいです。
2019/08/09(金) 07:46:58.18ID:mN7yEvAK
>>136
Windowsだと仮定してpywinautoってのがあるみたいだな
linuxなら設定ファイルいじった方が早かろう
139デフォルトの名無しさん
垢版 |
2019/08/09(金) 11:42:06.57ID:VpFvSLvY
>>136
windows ならコマンドプロンプトから netsh 使え
それでうまく行ったら python からそれを実行汁
2019/08/09(金) 18:48:00.65ID:aNdhyhrS
windowsでPython動かす時、windowsにpythonインストールするのと、WSLのubuntuにpythonインストールするのどっちがいいんだろ
rubyみたいにlinuxの環境にしておいたほうが無難かね
2019/08/09(金) 19:04:04.27ID:PkuMuXNC
安いラズパイ買ってそっちで動かす
142デフォルトの名無しさん
垢版 |
2019/08/09(金) 19:20:36.55ID:X5pM/Zqg
やりたいことによる。
windowsのguiアプリ作りたいとかじゃなけりゃ後者でいいんじゃ
2019/08/09(金) 19:41:23.18ID:xKlD1Jxx
>>136
Sikuli
http://masuo.doorblog.jp/archives/51801518.html
ちょっと変わり種 👀
Rock54: Caution(BBR-MD5:f2c519fe5384e767e1c9e99abdcfc293)
144デフォルトの名無しさん
垢版 |
2019/08/09(金) 19:59:23.36ID:3aE869ZA
winにwin版pythonインスコでいい。
pythonはシェアが大きいとわかってるwin版を凄く重視してる。

シェアが大きいとわかってるOSを軽んじる言語は衰退してくから。
145デフォルトの名無しさん
垢版 |
2019/08/09(金) 20:03:47.89ID:OfLBByV9
WindowsユーザーをコケにしてPython にシェア取られて衰退したRubyの悪口はやめろ!
2019/08/09(金) 20:09:17.03ID:KwAFZJpP
WindowsでPythonはじめたけど便利なライブラリ多くて楽だわ
ライブラリ以外の7割くらいctypesで書いちゃってるが
2019/08/09(金) 21:17:05.70ID:BfiMWPAU
普段遣いのアプレット用にウィンドウズ版
WSLで作業するとき用にLinux版
というか、WSLでubuntu入れれば勝手に入ってた
2019/08/10(土) 04:44:51.18ID:kIaElDEP
>>140
漏れは、WSL, Ubuntu 16.04 と、1つ前のUbuntu 長期版だが、
Python は最初から入っている

which python
/usr/bin/python

which python3
/usr/bin/python3

file /usr/bin/python
/usr/bin/python: symbolic link to python2.7

file /usr/bin/python3
/usr/bin/python3: symbolic link to python3.5
2019/08/10(土) 14:18:02.72ID:oCD1GI3w
*.pywファイルでno consoleモードを実現できるので、
wsl使ってても、windows版pythonは外せない。
api呼び出せば、wshの代替ができる。

>>148
wsl(ubuntu)ではpython 2.7は入れてない(デフォルトでは入らない)ので、
python3をpythonで呼び出せるようにaliasを設定してる。
150デフォルトの名無しさん
垢版 |
2019/08/10(土) 17:24:03.12ID:7w9C1BBu
>>142
136だが、ウインドウアプリを手動操作することをpythonにやらせたい。手動といっても同じことの繰り返しだから、このルーチンをpython にやらせて楽したい。
2019/08/10(土) 17:46:51.58ID:2yaF0wJx
>>150
  >>138
あるいはVectorとかでマウス&キーボード操作アプリを探せ
152デフォルトの名無しさん
垢版 |
2019/08/10(土) 17:55:37.94ID:7w9C1BBu
>>151
僕がやろうとしていることはpython では不向きですか?率直なコメントを
153デフォルトの名無しさん
垢版 |
2019/08/10(土) 18:00:00.83ID:C/8mgJdF
その用途ならロケットマウスかな
2019/08/10(土) 18:42:28.31ID:2yaF0wJx
>>152
できるが
ズブズブの初心者がそこまでできるようになるくらいなら
KMmacroの使い方覚える方がずっと短時間で済むぞ
2019/08/10(土) 18:43:10.77ID:2yaF0wJx
別にマシンスペックが足りないとか、そういう心配はない
向き不向きで言えば、Python自体が初心者にも優しい言語だし
2019/08/10(土) 18:53:29.94ID:9CKR34V+
pyautoguiでできる
2019/08/10(土) 19:52:13.98ID:RNHY21Oi
ちげーなー
わざわざこのスレに質問しにきてるってことは
潜在的にpythonをやりたいんだよ
2019/08/10(土) 21:03:32.62ID:Ivl2Mqui
>>152
向いてますよ
PythonはGUI操作もうまくできます

WindowsにおけるGUI操作基盤であるUIAutomationやWinapiをベースにしたラッパーパッケージが幾つかあります
AppiumでWinappdriverを活用する方法もあります
画像認識ベースのOSS Sikulixも有名ですね

ただ知っておいて欲しいことはGUI操作がうまくできるからといってそれが最も効率的なやり方とは限らないということです
多くの場合において同じ結果を得るためにGUIを使わない方法があります
Pythonから利用するならGUIを使わない方法の方がより効率的です
159148
垢版 |
2019/08/10(土) 21:55:33.84ID:kIaElDEP
>>149
Debian 10(buster)2019/7/6 では、
python は2.7、python3 は、3.7 だけど

ちなみに、Ruby は2.5、Node.js は10.15、PHP は7.3、
Rust も入っていて、1.34

そうか、Ubuntu だけは、python2系から脱却したのか
160149
垢版 |
2019/08/10(土) 23:12:24.69ID:oCD1GI3w
>>159
誤解されたかもしれんが、
aliasがデフォで設定されているわけじゃないので、念の為。
161148
垢版 |
2019/08/10(土) 23:22:23.28ID:kIaElDEP
漏れは、WSL, Ubuntu 16.04 だけど、
そろそろUbuntu 18.04 に変えようかなとも思っている

VSCode では、Remote WSL 機能をインストールしろと、さかんに勧めてくるw
2019/08/12(月) 22:08:35.11ID:amySWRMJ
>>148
Pythonで一番ユーザーの多いOSはWinだろうからな
Linux・OSXで超使われても、Winで超使われないと真のメジャー言語になれないだろうからな
2019/08/15(木) 17:15:50.79ID:YbJnuQN/
プログラム未経験者です。
下記の内容で詰まってしまったので教えてください。

(現状)
1.pythonで簡易webサーバーを起動。
python -m http.server --cgi8080

2.文字列を表示するアプリを作成してブラウザで実行。

(質問箇所)
・ブラウザに表示されるが日本語や全角文字は文字化する
・文字列を半角数字や英語のみにして試してみたら文字化せず表示される。

日本語や全角文字を文字化せずに表示させるにはどうしたらよいでしょうか?
2019/08/15(木) 17:28:49.36ID:1uawWTDf
>>163
まず
Pythonのバージョンと
使ってるパソコンのOSを述べよ
2019/08/15(木) 17:42:36.11ID:YbJnuQN/
>>164
python3.7.3
win10
です
2019/08/15(木) 17:44:51.59ID:YbJnuQN/
>>164
ブラウザでページ更新するとwindowspowershellには
CGI scripts exited OKと表示されます
2019/08/15(木) 18:02:56.16ID:yFzhilBd
文字化って、なんだ
「文字化け」と言いたいのか?
2019/08/15(木) 18:09:12.23ID:YbJnuQN/
すみません、文字化けです。
けが抜けてました
2019/08/15(木) 18:23:10.32ID:1uawWTDf
>>165-166 >>168
文字コードの宣言がないとブラウザが正しく日本語文字(2バイト文字)解釈できないんだろう
Python3系ならデフォルトはUTF-8なので
ブラウザに文字列を出したいのであれば
表示したい文字列より前、先頭に
htmlの文字コード宣言(UTF-8)を行う必要があると思われ

「html 文字コード UTF-8 宣言」あたりのキーワードでググれ
2019/08/15(木) 20:54:32.21ID:vSMMQ3Oa
>>169 そういうこったな。 Python には無関係。

<meta http-equiv="content-type" charset="utf-8">
2019/08/15(木) 21:38:28.26ID:M7tZx41p
解決しました!
ご助言ありがとうございました。
2019/08/15(木) 21:55:55.01ID:1uawWTDf
>>170
おまいイイ!!(・∀・)ヤシ

>>171
IDコロコロ変わる環境のやつは
自分が何番の質問書いたやつなのか名乗らないと誰かわからないぞ
(今回はわかるが)
次から書けよ
2019/08/17(土) 13:26:05.20ID:aGGHXtlm
pylintの対処法
まず行が長いと怒られて、
行長減らすために処理を別行の変数に分割した、
そしたら変数が多いと怒られて、
変数減らすために場合分けで変数を使い分けるようにした、
そしたら文と枝分かれが多いと怒られた。
詰んだ。

無視するのは簡単だけどこの人に怒られないコードを書くにはどうすればいいのか。
2019/08/17(土) 13:28:58.21ID:aGGHXtlm
本当にむかつく。
変数名簡略化せず何の変数かすぐ分かる命名をとか言っといて、
長い変数名で行が長くなったらこの仕打ち、
許せない
175デフォルトの名無しさん
垢版 |
2019/08/17(土) 13:34:48.61ID:Ei4AHYpx
標準ライブラリでいいから人が書いたコード読んでみたら
それか、ここで晒してもいいんじゃない
2019/08/17(土) 14:24:56.99ID:zoXV1BIi
標準ライブラリも怒られるものばかりだけどね
177デフォルトの名無しさん
垢版 |
2019/08/17(土) 14:36:58.79ID:Ei4AHYpx
>>173見る限りそんなレベルじゃないでしょ
行の分割も知らないんだし
無駄に深いネストとか関数として書き出した方がいい部分とかもありそうだし

書き方知らずに規約に従おうとしてもストレス貯まるだけだと思う
2019/08/17(土) 15:14:36.17ID:zoXV1BIi
とりあえず、autopep8 を実行してみるのもいいかも
勝手に修正するのは自分の好みではないけど

pylintではなく、flake8を使ってる
この程度の指摘で十分だと思う
2019/08/17(土) 18:19:12.97ID:zUPT7dbd
頼まれてもいない(と思われる)linterを導入して怒られて腹立てるって何もメリットないなw
2019/08/18(日) 00:38:11.48ID:Jxhn0zz/
ipythonで以下のように入力するとき簡単に打つ方法はありますか?



('jack')

毎回括弧閉じや「''」を都度打っていますか?
2019/08/18(日) 00:46:13.16ID:mfXYjyR8
エディタによるだろ
2019/08/18(日) 00:55:24.73ID:Jxhn0zz/
>>180
エディタはAnaconda promptになります。
2019/08/18(日) 02:44:04.60ID:Onid3Fuw
ひょっとしてほしいものは snippet
2019/08/18(日) 02:57:22.58ID:FysLR+u/
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
import json

hensu = 'Living'
api = "http://localhost:3001/roonAPI/listZones";

r = requests.get(api)
data = json.loads(r.text)

print(data)

こんな感じのJSONからdisplay_nameが変数のhensuに該当するzonesの一塊のみ取得する方法教えて欲しいです
http://ideone.com/dINVkm
2019/08/18(日) 04:14:40.62ID:FysLR+u/
>>184
自己解決しました
多分forループで回してその中でifで探して見つかったらbreakかな?
186デフォルトの名無しさん
垢版 |
2019/08/18(日) 04:59:14.97ID:tpkGnUoc
Python初心者です。
proxy.txtにプロキシリスト(形式は0.0.0.0:000のようになっています)があり、そのファイルからreadlinesで読み込ませて串を噛ませながらスクレイピングするコードを書いています。
readlinesで1行づつリストに格納しているのでproxy.txtを作成する時には\nを入れて串ごとに改行するようにしていました。
しかし、実際にやってみるとi="0.0.0.0:000\n"のようになっておりパースエラーと表示されます。
皆さんは串のファイルを作るときはどのような形式にしていますか?

また、今回のような状況でどのようにすれば改善されるのでしょうか。
2019/08/18(日) 05:06:13.27ID:r43EL8Fq
read().split("\n")
2019/08/18(日) 05:16:25.95ID:26pp6bRY
Ruby なら、chomp で改行を削除できる

p text = <<"EOT" #=> "1\n2\n"
1
2
EOT

p ary = text.lines #=> ["1\n", "2\n"]

p ary_2 = text.lines( chomp: true ) #=> ["1", "2"]
189デフォルトの名無しさん
垢版 |
2019/08/18(日) 05:33:45.37ID:tpkGnUoc
>>187
ありがとう出来た
2019/08/18(日) 10:06:44.50ID:2AjfnEOA
>>173
lintを10割受けてたらバカになるから6割程度で受けるが吉
191デフォルトの名無しさん
垢版 |
2019/08/18(日) 10:30:57.31ID:j410954h
うbyのchompって強烈な糞バグあるで
2019/08/18(日) 12:22:49.37ID:oSoDzxI+
gitのhookでlintでエラーがあったらコミットせないみたいな事をやってる所は少数派なのか
2019/08/18(日) 13:10:43.50ID:FysLR+u/
>>185
この続きです
スクリプトを動かすとネットワークプレーヤーで再生中の曲情報をターミナルに表示します
https://i.imgur.com/NTfm72c.jpg
https://i.imgur.com/dF7P85L.jpg
https://i.imgur.com/v1VriQF.jpg
まれに曲を変えるタイミングでスクリプトが落ちてしまいます
https://i.imgur.com/nkloyjo.jpg
37行目で落ちるので、38行目からのようにしてみたけどやっぱり落ちちゃいました
落ちないようにする方法はありますか?
2019/08/18(日) 13:17:49.17ID:FysLR+u/
>>193
自己解決しました
37行目でintに返還してたのをやめて、ifの中の39行目を追加したらうまくいきました
https://i.imgur.com/h7qOORo.jpg
2019/08/18(日) 16:53:18.61ID:0nN/LwEb
>>192
少数派っつーかごく一部の意識高い奴しかやってねえよ
Reactのリポジトリすらやってない
196デフォルトの名無しさん
垢版 |
2019/08/18(日) 21:10:52.92ID:1iNtwV7Z
>>186
rstripってのもあるよ
2019/08/20(火) 20:00:14.61ID:Gkd3xMH4
>>195
その「意識高い」ってのは
マジで意識が高いのかそれとも「意識高い系」なのか……。
2019/08/20(火) 21:17:30.05ID:AoZjSCV7
一文字足すだけであら不思議!
199デフォルトの名無しさん
垢版 |
2019/08/21(水) 00:44:14.26ID:jDiMObB6
文と文系は対して変わらん
200デフォルトの名無しさん
垢版 |
2019/08/21(水) 07:08:42.46ID:plKhWM8d
python3でマルチスレッド処理をしたいです
def a(b):で作成した関数aをwhile無限ループ内で何度も繰り返したいです。
しかし、TypeError: a takes 1 positional argument but 18 were given(18のとこは15-20くらいで色々ある)
となってしまいます。

何がおかしいんでしょうか?
どうやったら治るか教えてください
2019/08/21(水) 07:31:33.39ID:G2PqedMK
>>200
その間違っているコードを示さないことには何が間違いか指摘しようがないぞ
202デフォルトの名無しさん
垢版 |
2019/08/21(水) 07:33:57.94ID:plKhWM8d
>>201
threading.Thread(target=a,args=(b)).start()
2019/08/21(水) 09:35:34.95ID:INPmh9wc
argsにタプルを指定した気になってるようだけどタプルじゃないって奴だな
204デフォルトの名無しさん
垢版 |
2019/08/21(水) 12:47:13.20ID:plKhWM8d
>>203
つまりどう直したらいいんでしょうか・・・
すみません
2019/08/21(水) 13:24:35.84ID:rtQcncog
https://docs.python.org/ja/3/tutorial/datastructures.html#tuples-and-sequences
> 問題は 0 個または 1 個の項目からなるタプルの構築です。(中略) 一つの要素を持つタプルは、値の後ろにコンマを続ける (単一の値を丸括弧で囲むだけでは不十分です) ことで構築できます
2019/08/21(水) 13:24:46.58ID:2OErRBE5
>>204
  >>202
207デフォルトの名無しさん
垢版 |
2019/08/21(水) 15:35:14.41ID:ur92HW83
threading.Thread(target=a,args=(b,)).start()
threading.Thread(target=a,args=((b,))).start()
2019/08/21(水) 15:37:24.39ID:2OErRBE5
横レスだけどなるほどなっとくした >>207 & >>205
2019/08/21(水) 19:53:15.36ID:vrRBM7oH
pythonも奥が深いな
2019/08/22(木) 12:09:15.94ID:5n19vLwe
一要素のタプルとかいう意味不明な物を許してるからこういう問題が存在するんじゃないの
2019/08/22(木) 12:38:18.50ID:+WLUVT0B
thread使ってるけど気にしたことないなぁって確認したらargs使ってなかったわ
引き渡すの全部Globalに入れちゃってるや
2019/08/22(木) 14:32:52.32ID:qSCycJ6B
a=10
b=a/2
print(b)
ってしたら、5.0ってなるねん
5ってしたいねん
どうやったらいいん?
2019/08/22(木) 14:35:51.73ID:OjO/vENV
>>212
print(b)

この部分を、

print(int(b))
とかじゃ整数にできんかね?
2019/08/22(木) 14:37:09.83ID:qSCycJ6B
>>213
できひんねん
2019/08/22(木) 14:38:20.20ID:OjO/vENV
>>214
じゃあ
a=int(10)
で最初に指定してあげるとかなら?
2019/08/22(木) 14:38:43.03ID:TnC8Wcje
5.0でええやんか
2019/08/22(木) 14:39:29.05ID:qSCycJ6B
>>213
あ、ごめん
出来たわ
2019/08/22(木) 14:39:59.01ID:qSCycJ6B
>>216
競プロでは不正解になるねん
2019/08/22(木) 14:40:36.08ID:OjO/vENV
>>217
いいよ
うんちぶりぶり!!
プログラミングなんてトライアンドエラー繰り返しだと思うしガンガレ
2019/08/22(木) 14:41:47.36ID:qSCycJ6B
>>219
おうよ!
221デフォルトの名無しさん
垢版 |
2019/08/22(木) 14:42:42.91ID:vsttXPXA
ほんとはトライアルアンドエラーやぞ
2019/08/22(木) 14:50:01.50ID:qSCycJ6B
>>221
友達おらへんやろ?
なったろか?
さみしないか?
223デフォルトの名無しさん
垢版 |
2019/08/22(木) 14:51:17.49ID:xQsiKIbM
b=a//2
または
print(f'{b:.0f}')
2019/08/22(木) 14:57:28.14ID:YHG3Udjg
教科書読んでドリル
225デフォルトの名無しさん
垢版 |
2019/08/22(木) 15:09:06.86ID:vsttXPXA
>>222
トライは動詞、エラーは名詞だから
トライアンドエラーは間違い
精進しろよ?w
226デフォルトの名無しさん
垢版 |
2019/08/22(木) 16:38:42.98ID:+sQNWHqe
>>212
python3からは勝手にfloatに変換されるので、intで閉じさせるならa//2とする
227デフォルトの名無しさん
垢版 |
2019/08/22(木) 16:40:18.63ID:+sQNWHqe
tryは名詞の意味もあるぞ
辞書引け
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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