このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。
エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで
前スレ
くだすれPython(超初心者用) その38
https://mevius.5ch.net/test/read.cgi/tech/1526522954/
探検
くだすれPython(超初心者用) その39
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/08/24(金) 07:50:35.97ID:VD4/++xS2018/08/24(金) 16:59:48.14ID:O0T9h+Ku
>>4
日経ソフトウエアって読む価値ありますか?(゚Д゚)?
日経ソフトウエアって読む価値ありますか?(゚Д゚)?
6デフォルトの名無しさん
2018/08/24(金) 22:42:39.09ID:J2z8mB41 環境整えてみたんですが
いざなにを作ればいいんですか?
いざなにを作ればいいんですか?
2018/08/24(金) 22:55:45.28ID:A0MvxlLt
自分探しの旅みてーな疑問だな
2018/08/25(土) 04:28:11.12ID:gxBSyOuw
日経ソフトウエアは、読む価値なし
日経Linux、WEB+DB、Software Design などは良い
日経Linux、WEB+DB、Software Design などは良い
2018/08/25(土) 10:02:26.96ID:H9tlLYtz
Ubuntu 18、UTF-8環境、Python 3.6.5です。
PHP(こっちもUTF-8)から引数を受け取ってPyhonで処理するプログラムを作っています。まずPHP側で
$arg = '日本語1 日本語2';
$cmd = 'python3 python.py "'.$arg.'"';
exec($cmd, $output);
とやって、python.pyで
import sys
a = sys.argv[1]
b = a.split(' ')
#listhoge{'日本語1': 0, '日本語2': 1,.....}
c = listhoge[a[0]]
で「日本語1は0」という結果を得たいのですが、
c = listhoge[a[0]]のところで
KeyError: '\udce6\udc97\udca5\udce6\udc9c\udcac\udce8\udcaa\udc9e1'
となってしまいます。
c = listhoge['日本語1']
なら、cは期待通り0が代入されます。
print(a)
#日本語1 日本語2
print(a[0])
print(a[1])
#日本語1
#日本語2
で、引数自体は受け取れているようなのですが、
if a[0] == '日本語1':
print('OK')
else:
print('NG')
の結果は「NG」です。
listhogeに正しく値を渡すには、どうしたらよいでしょうか。ご教示よろしくお願いします。
PHP(こっちもUTF-8)から引数を受け取ってPyhonで処理するプログラムを作っています。まずPHP側で
$arg = '日本語1 日本語2';
$cmd = 'python3 python.py "'.$arg.'"';
exec($cmd, $output);
とやって、python.pyで
import sys
a = sys.argv[1]
b = a.split(' ')
#listhoge{'日本語1': 0, '日本語2': 1,.....}
c = listhoge[a[0]]
で「日本語1は0」という結果を得たいのですが、
c = listhoge[a[0]]のところで
KeyError: '\udce6\udc97\udca5\udce6\udc9c\udcac\udce8\udcaa\udc9e1'
となってしまいます。
c = listhoge['日本語1']
なら、cは期待通り0が代入されます。
print(a)
#日本語1 日本語2
print(a[0])
print(a[1])
#日本語1
#日本語2
で、引数自体は受け取れているようなのですが、
if a[0] == '日本語1':
print('OK')
else:
print('NG')
の結果は「NG」です。
listhogeに正しく値を渡すには、どうしたらよいでしょうか。ご教示よろしくお願いします。
2018/08/25(土) 10:17:20.53ID:5go0Mg15
2018/08/25(土) 10:38:37.45ID:H9tlLYtz
>>10
すみません!コードを抽象化するときに書き間違えました。
a[0].a[1]のところは、正しくはb[0].b[1]です。
せっかく教えていただいたのにすみません。
b[0]を日本語1と評価されるようにするにはどうしたらよいでしょうか。
すみません!コードを抽象化するときに書き間違えました。
a[0].a[1]のところは、正しくはb[0].b[1]です。
せっかく教えていただいたのにすみません。
b[0]を日本語1と評価されるようにするにはどうしたらよいでしょうか。
2018/08/25(土) 10:53:10.81ID:5go0Mg15
2018/08/25(土) 11:10:46.62ID:H9tlLYtz
>>12
コピペで試しているので、文字列は同一だと思います。
今、試しにコマンドラインでスクリプトに引数を渡すと、コンソール上では期待通りの動作をしました。
PHPからだと、print出力的には同一に見えるけど別なデータになっているということでしょうか
コピペで試しているので、文字列は同一だと思います。
今、試しにコマンドラインでスクリプトに引数を渡すと、コンソール上では期待通りの動作をしました。
PHPからだと、print出力的には同一に見えるけど別なデータになっているということでしょうか
2018/08/25(土) 11:31:58.85ID:5go0Mg15
>>13
PHPから受け取ったのがstrじゃなくてbyte型なのかな?type()で調べてみたら?
PHPから受け取ったのがstrじゃなくてbyte型なのかな?type()で調べてみたら?
2018/08/25(土) 11:46:56.88ID:kfh++Yrt
必要なとこだけコピペで貼ってくれ
2018/08/25(土) 11:50:43.54ID:H9tlLYtz
2018/08/25(土) 13:02:46.63ID:H9tlLYtz
>>15
すみません。これでいかがでしょうか。
PHP 7.2
$cmd = 'python3 python.py "日本語1 日本語2"';
exec($cmd, $output);
Python 3.6.5
# coding: utf-8
import sys
listhoge = {"日本語1":0, "日本語2":1}
a = sys.argv[1]
b = a.split(' ')
c = listhoge[b[0]]
error.log
Traceback (most recent call last):
File "python.py", line 23, in <module>
c = listhoge[b[0]]
KeyError: '\udce6\udc97\udca5\udce6\udc9c\udcac\udce8\udcaa\udc9e1'
すみません。これでいかがでしょうか。
PHP 7.2
$cmd = 'python3 python.py "日本語1 日本語2"';
exec($cmd, $output);
Python 3.6.5
# coding: utf-8
import sys
listhoge = {"日本語1":0, "日本語2":1}
a = sys.argv[1]
b = a.split(' ')
c = listhoge[b[0]]
error.log
Traceback (most recent call last):
File "python.py", line 23, in <module>
c = listhoge[b[0]]
KeyError: '\udce6\udc97\udca5\udce6\udc9c\udcac\udce8\udcaa\udc9e1'
2018/08/25(土) 14:30:45.41ID:kfh++Yrt
2018/08/25(土) 14:50:58.87ID:H9tlLYtz
2018/08/25(土) 18:14:21.70ID:P/kKO950
また今日も天才に救われた人が居るな、解決おめでとう!
2018/08/26(日) 01:55:23.42ID:TJFxEnkY
プログラム初学者ですが、入門書を買って勉強しております。
複合代入演算子の項を見ていたら1点疑問があり、
who = '猫'
text = ''
text += '吾輩は'
text += who
text += 'である。'
print(text)
これ本では2行目の''が大事だと書かれているんですが、省略して
who = '猫'
text = '吾輩は'
text += who
text += 'である。'
print(text)
とするのはだめなのでしょうか?
初歩的な質問ですみません。
複合代入演算子の項を見ていたら1点疑問があり、
who = '猫'
text = ''
text += '吾輩は'
text += who
text += 'である。'
print(text)
これ本では2行目の''が大事だと書かれているんですが、省略して
who = '猫'
text = '吾輩は'
text += who
text += 'である。'
print(text)
とするのはだめなのでしょうか?
初歩的な質問ですみません。
22デフォルトの名無しさん
2018/08/26(日) 02:11:05.36ID:xGLfO5+N >>21
text += 'XXX'
で形が揃うから見やすいとかコピペや順序入れ替えが楽って以外の意味はないと思う
というか理由が書いてないならあまり良くない入門書だな
3.6以降ならf-stringを使って
text = f'我輩は{who}である'
のほうが良さげ
https://atsuoishimoto.hatenablog.com/entry/2016/12/25/122220
text += 'XXX'
で形が揃うから見やすいとかコピペや順序入れ替えが楽って以外の意味はないと思う
というか理由が書いてないならあまり良くない入門書だな
3.6以降ならf-stringを使って
text = f'我輩は{who}である'
のほうが良さげ
https://atsuoishimoto.hatenablog.com/entry/2016/12/25/122220
2018/08/26(日) 02:24:57.28ID:TJFxEnkY
2018/08/26(日) 04:17:09.95ID:L324XJEs
みんなのpythonって本はプログラム知識が殆ど無い入門者にお勧めできますか?
本屋で立ち読みしようと思ったんですけど無くて、アマゾンで調べたら評価はまちまちみたいで…
本屋で立ち読みしようと思ったんですけど無くて、アマゾンで調べたら評価はまちまちみたいで…
2018/08/26(日) 07:36:47.56ID:w0D5YFHr
この2冊は、既にプログラミングが出来る人向け。
数言語は知っていて、Ruby, Python を学ぶ人向け
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
以下の本は、プログラミング初心者でも読める。
スッキリわかる Java入門 第2版、2014
知らないけど、progate のサイトで勉強すれば?
数言語は知っていて、Ruby, Python を学ぶ人向け
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
以下の本は、プログラミング初心者でも読める。
スッキリわかる Java入門 第2版、2014
知らないけど、progate のサイトで勉強すれば?
2018/08/26(日) 07:44:31.55ID:KclbjBGL
>>21
同じように動くという意味では問題無い。
著者としては空の変数を定義することで
変数の宣言と値の代入を分離したかったんじゃないかな?
pythonでは変数を明示的に宣言だけすることはできないから、
同じように動くという意味では問題無い。
著者としては空の変数を定義することで
変数の宣言と値の代入を分離したかったんじゃないかな?
pythonでは変数を明示的に宣言だけすることはできないから、
2018/08/26(日) 07:49:32.68ID:KclbjBGL
2018/08/26(日) 07:58:14.06ID:L324XJEs
2925
2018/08/26(日) 09:57:49.56ID:w0D5YFHr 読む順番としては、先に「たのしいRuby」を3回読むと、
「みんなのPython」が楽に読める
「みんなのPython」を先に読むと、内容が薄くて、現実味が無いかも。
つまり、よくわからない
たのしいの方が、正規表現とか、内容が濃い
「みんなのPython」が楽に読める
「みんなのPython」を先に読むと、内容が薄くて、現実味が無いかも。
つまり、よくわからない
たのしいの方が、正規表現とか、内容が濃い
2018/08/26(日) 10:32:43.51ID:L324XJEs
>>29
そうなんですね。みんなのpythonの方が表紙にでっかく絵が書いてあったり
堅苦しい内容じゃなさそうで入門向けで良いのかなって思ったんですが内容ないんですね…
わかりました。たのしいruby買います。アドバイスありがとうございます
そうなんですね。みんなのpythonの方が表紙にでっかく絵が書いてあったり
堅苦しい内容じゃなさそうで入門向けで良いのかなって思ったんですが内容ないんですね…
わかりました。たのしいruby買います。アドバイスありがとうございます
2018/08/26(日) 12:18:03.60ID:Y1vMA8RK
2018/08/26(日) 17:39:56.34ID:O9adGcKd
もうrubyをNGしてもいいぐらい
2018/08/26(日) 18:15:35.15ID:wR7TFJf0
ガイジに優しくしよう
2018/08/26(日) 19:59:11.67ID:7VGl0ROF
脈略のないrubyコードの貼り付け、ruby本の紹介は禁止ってテンプレに入れておいてくれ
3525
2018/08/26(日) 23:41:34.26ID:w0D5YFHr Ruby, Python, JavaScript というのは、単なる各言語の文法書。
プログラミングの本じゃない
オブジェクト指向・クロージャ・スコープ・this などの概念を、学べるわけではない。
文法書を読んでも、プログラミングは出来ない
文法書を読むとプログラミングができると、ほとんどの奴は勘違いしているけど、
「みんなのPython」を読んでも文法がわかるだけで、プログラミングが出来るようにはならない
「たのしいRuby」「スッキリわかる Java入門」などを読んで、
自分でクラスを派生させたり、CSVファイルを読み書きしたり、
Sinatra をいじくりまわしたり悪戦苦闘しながら、プログラミングを学ぶ
プログラミングを学ぶ部分は、Pythonじゃなくてもよい。
いじくりまわすのには、Rubyが最も簡単
プログラミングを学ぶには、各言語の「Effective 何々」という本を読む。
これは、プロの必須本。
文法書の次のレベルへ行かないと、プログラミング自体を学べない
プログラミングの本じゃない
オブジェクト指向・クロージャ・スコープ・this などの概念を、学べるわけではない。
文法書を読んでも、プログラミングは出来ない
文法書を読むとプログラミングができると、ほとんどの奴は勘違いしているけど、
「みんなのPython」を読んでも文法がわかるだけで、プログラミングが出来るようにはならない
「たのしいRuby」「スッキリわかる Java入門」などを読んで、
自分でクラスを派生させたり、CSVファイルを読み書きしたり、
Sinatra をいじくりまわしたり悪戦苦闘しながら、プログラミングを学ぶ
プログラミングを学ぶ部分は、Pythonじゃなくてもよい。
いじくりまわすのには、Rubyが最も簡単
プログラミングを学ぶには、各言語の「Effective 何々」という本を読む。
これは、プロの必須本。
文法書の次のレベルへ行かないと、プログラミング自体を学べない
2018/08/27(月) 00:26:43.00ID:lvpUeXXJ
Rubyは衰退していくだけのオワコン言語だから手を出したら負け組だよ
2018/08/27(月) 00:53:03.94ID:HhBAi2Wr
Rubyみたいなオワコン言語の話は余所でやれ
2018/08/27(月) 02:33:22.67ID:+WOcodwf
スクリプトのやり方教えて下さい
認識できないって出るんですけど…
認識できないって出るんですけど…
2018/08/27(月) 03:15:17.22ID:yTR9Y+Mn
>>24
プログラミング未経験でオライリーの入門Pythonを買ってがんばってる
今のところついていけてるけど、
みんなのPythonはきっとイラストや絵が入ってて紙面もカラーなんだろうなって考えるとうらやましい
こっちは絵もイラストも全くないです
プログラミング未経験でオライリーの入門Pythonを買ってがんばってる
今のところついていけてるけど、
みんなのPythonはきっとイラストや絵が入ってて紙面もカラーなんだろうなって考えるとうらやましい
こっちは絵もイラストも全くないです
2018/08/27(月) 03:17:20.38ID:yTR9Y+Mn
2018/08/27(月) 03:21:04.08ID:yTR9Y+Mn
プログラミング自体を学ぶのにこれはどうですか?
初めてのプログラミング
https://www.oreilly.co.jp/books/9784873114699/
PythonじゃなくてRubyで説明されてるみたいなんですけど
初めてのプログラミング
https://www.oreilly.co.jp/books/9784873114699/
PythonじゃなくてRubyで説明されてるみたいなんですけど
2018/08/27(月) 06:12:09.02ID:ba8BcfX3
与えられた2つの数値から、最小公倍数・最大公約数を求めてみろ
43デフォルトの名無しさん
2018/08/27(月) 07:06:23.18ID:A3+vkFVR >>41
pythonなら「独学プログラマーーpython」がある。
pythonなら「独学プログラマーーpython」がある。
2018/08/27(月) 07:25:20.50ID:fqwvA6xk
スタートブックとかの方が分かりやすいんじゃないの?
プログラム初心者なら
プログラム初心者なら
45デフォルトの名無しさん
2018/08/27(月) 12:18:58.34ID:Q4eMB8Ps >>42
互除法
互除法
2018/08/27(月) 21:06:47.86ID:KW/ftoFq
subprocessについてなんですが、
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import subprocess
dl = subprocess.run(["radigo", "rec", "-a=JP13", "-id=QRR", "-s=20180827200000"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
上記のような場合、変数を引数の一部として渡すにはどうやるんですか?
以下だと{proglamId}という文字列として外部コマンドに送られてしまってダメでした。
area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", "-a={area}", "-id={ch}", "-s={proglamId}"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import subprocess
dl = subprocess.run(["radigo", "rec", "-a=JP13", "-id=QRR", "-s=20180827200000"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
上記のような場合、変数を引数の一部として渡すにはどうやるんですか?
以下だと{proglamId}という文字列として外部コマンドに送られてしまってダメでした。
area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", "-a={area}", "-id={ch}", "-s={proglamId}"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
47デフォルトの名無しさん
2018/08/27(月) 21:26:41.39ID:6eK9kwOU2018/08/27(月) 21:33:33.15ID:KW/ftoFq
2018/08/27(月) 21:56:03.71ID:KW/ftoFq
>>48
出来ました。
パターン1
area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", f'-a={area}', f'-id={ch}', f'-s={proglamId}'], stdout=subprocess.PIPE)
パターン2
area = 'JP13'
area = f'-a={area}'
ch = 'QRR'
ch = f'-id={ch}'
proglamId = '20180827200000'
proglamId = f'-s={proglamId}'
dl = subprocess.run(["radigo", "rec", area, ch, proglamId], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
どっちがスマートな書き方ですか?
出来ました。
パターン1
area = 'JP13'
ch = 'QRR'
proglamId = '20180827200000'
dl = subprocess.run(["radigo", "rec", f'-a={area}', f'-id={ch}', f'-s={proglamId}'], stdout=subprocess.PIPE)
パターン2
area = 'JP13'
area = f'-a={area}'
ch = 'QRR'
ch = f'-id={ch}'
proglamId = '20180827200000'
proglamId = f'-s={proglamId}'
dl = subprocess.run(["radigo", "rec", area, ch, proglamId], stdout=subprocess.PIPE)
sys.stdout.buffer.write(dl.stdout)
どっちがスマートな書き方ですか?
2018/08/27(月) 23:29:37.66ID:KW/ftoFq
muxx = subprocess.run(["muxer", f'-i input.aac?sbr', f'-o output.m4a', f'--optimize-pd', f'--file-format m4a'], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
とやると、muxerコマンドからは
Error: you specified invalid option: -i input.aac?sbr.
と返ってきてしまいます。
muxx = subprocess.run(["muxer", "-i input.aac?sbr", "-o output.m4a", "--optimize-pd", "--file-format m4a"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これでも上記と同じエラーになり、
muxx = subprocess.run([f'muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a'], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これだとPythonがエラーになってしまいました。
Usageは
muxer [global_options] -i input1 [-i input2 -i input3 ...] -o output
です。
コンソールで以下のようにやると正常に動いてくれます。
$ muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a
何がいけないんでしょうか?
sys.stdout.buffer.write(muxx.stdout)
とやると、muxerコマンドからは
Error: you specified invalid option: -i input.aac?sbr.
と返ってきてしまいます。
muxx = subprocess.run(["muxer", "-i input.aac?sbr", "-o output.m4a", "--optimize-pd", "--file-format m4a"], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これでも上記と同じエラーになり、
muxx = subprocess.run([f'muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a'], stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
これだとPythonがエラーになってしまいました。
Usageは
muxer [global_options] -i input1 [-i input2 -i input3 ...] -o output
です。
コンソールで以下のようにやると正常に動いてくれます。
$ muxer -i input.aac?sbr -o output.m4a --optimize-pd --file-format m4a
何がいけないんでしょうか?
2018/08/28(火) 00:20:33.07ID:TEJeUOom
端末で入力すると、シェルが、? の機能を動かすけど、
subprocess で、プロセスを直接起動すると、
シェルが介入しないから、? が展開されないとか?
subprocess で、プロセスを直接起動すると、
シェルが介入しないから、? が展開されないとか?
2018/08/28(火) 00:26:18.50ID:wjmNvrcp
>>51
?sbrの部分を省いてもエラーは改善しなかったです
?sbrの部分を省いてもエラーは改善しなかったです
2018/08/28(火) 05:00:41.28ID:PEha72vP
shell=true
とかは? と muxer なんて知らないくせに適当に言ってみる
とかは? と muxer なんて知らないくせに適当に言ってみる
2018/08/28(火) 05:07:01.91ID:PEha72vP
ん?
その前に
stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
の部分って必要なの?
その前に
stdout=subprocess.PIPE)
sys.stdout.buffer.write(muxx.stdout)
の部分って必要なの?
2018/08/28(火) 08:35:42.53ID:M3D05fOs
2018/08/28(火) 08:36:39.19ID:skYXWt6l
>>50
上2つは "-i input.aac?sbr" がオプションとして認識されてそう。'-i', f'input.aac?sbr' とかで分けてくれ
3つ目は shell=True で動く(/bin/sh -c 'muxer ....' と展開される)
シェルインジェクションとかあるので、お作法として shell=True はあまり使わないほうがいいかな
詳しくはマニュアル参照
>>49
書き方は好みだからなんとも言えんなー俺ならこんな感じで書く
arg = 'hoge'
cmd = f'bash tst_cmd.sh {arg}'
resp = subprocess.run(cmd.split(), stdout=subprocess.PIPE)
スペース入りファイル名とか使うなら、パーサー作って食わすかな
import csv
def CMD_PARSER(cmd):
....return list(csv.reader([cmd], delimiter=' ', quotechar='"'))[0]
arg = 'hoge foo'
cmd = f'bash tst_cmd.sh "{arg}"'
resp = subprocess.run(CMD_PARSER(cmd), stdout=subprocess.PIPE)
上2つは "-i input.aac?sbr" がオプションとして認識されてそう。'-i', f'input.aac?sbr' とかで分けてくれ
3つ目は shell=True で動く(/bin/sh -c 'muxer ....' と展開される)
シェルインジェクションとかあるので、お作法として shell=True はあまり使わないほうがいいかな
詳しくはマニュアル参照
>>49
書き方は好みだからなんとも言えんなー俺ならこんな感じで書く
arg = 'hoge'
cmd = f'bash tst_cmd.sh {arg}'
resp = subprocess.run(cmd.split(), stdout=subprocess.PIPE)
スペース入りファイル名とか使うなら、パーサー作って食わすかな
import csv
def CMD_PARSER(cmd):
....return list(csv.reader([cmd], delimiter=' ', quotechar='"'))[0]
arg = 'hoge foo'
cmd = f'bash tst_cmd.sh "{arg}"'
resp = subprocess.run(CMD_PARSER(cmd), stdout=subprocess.PIPE)
2018/08/28(火) 08:39:26.15ID:M3D05fOs
空白が混じってると
> 一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート
> (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです
によってエスケープされるので意図通りにシステムコールに渡らないわけだな
> 一般に、引数のシーケンスを渡す方が望ましいです。なぜなら、モジュールが必要な引数のエスケープやクオート
> (例えばファイル名中のスペースを許すこと) の面倒を見ることができるためです
によってエスケープされるので意図通りにシステムコールに渡らないわけだな
2018/08/28(火) 10:16:39.79ID:wjmNvrcp
みなさんどうもありがとうございます
>>55
>>56
>>57
「-i ファイル名」の形式で書かないといけないので「-i」と「ファイル名」で分けて書くという頭が全くなかったです。
muxx = subprocess.run(["muxer", "-i", "input.aac?sbr", "-o", "output.m4a", "--optimize-pd", "--file-format", "m4a"], stdout=subprocess.PIPE)
と分けて書くとうまくいきました。
>>53
>>56
shell=trueについて調べてみます
>>54
この書き方だとsubprocess.callとsubprocess.check_callとsubprocess.check_outputの3つがまとめて出来るらしいのでこれで書きました
>>55
>>56
>>57
「-i ファイル名」の形式で書かないといけないので「-i」と「ファイル名」で分けて書くという頭が全くなかったです。
muxx = subprocess.run(["muxer", "-i", "input.aac?sbr", "-o", "output.m4a", "--optimize-pd", "--file-format", "m4a"], stdout=subprocess.PIPE)
と分けて書くとうまくいきました。
>>53
>>56
shell=trueについて調べてみます
>>54
この書き方だとsubprocess.callとsubprocess.check_callとsubprocess.check_outputの3つがまとめて出来るらしいのでこれで書きました
2018/08/28(火) 14:55:03.72ID:WFu4qQCr
find関数で
line.find('a')だと部分一致で返してくれるんですが
c=input() aと入力して
line.find(c)とすると完全一致でしか返してくれないんですがどうすればいいですか
line.find('a')だと部分一致で返してくれるんですが
c=input() aと入力して
line.find(c)とすると完全一致でしか返してくれないんですがどうすればいいですか
2018/08/28(火) 16:02:01.79ID:eDasHWl3
んなこたぁない。
61デフォルトの名無しさん
2018/08/29(水) 09:39:33.95ID:t35BnR1i python3m ってなんですか?
2018/08/29(水) 10:09:58.87ID:zNgJ3vFs
住友と関係が?
2018/08/29(水) 17:38:59.31ID:zHN7x4pt
xmlの属性を指定する場合、以下のどっちも同じ答えを返してくれるんですが、どっちで書くのがいいんでしょうか?
パターン1
duration1 = int(root.attrib["dur"])
print(duration1)
パターン2
duration2 = int(root.get("dur"))
print(duration2)
パターン1
duration1 = int(root.attrib["dur"])
print(duration1)
パターン2
duration2 = int(root.get("dur"))
print(duration2)
2018/08/29(水) 19:50:21.16ID:+JD/mPB3
BeautifulSoup前提で喋ってます?
もしそうなら、属性が存在する限りどちらでもよい
getは属性が存在しないときNoneを返すが、attribはそうではない
まあ試してみ
もしそうなら、属性が存在する限りどちらでもよい
getは属性が存在しないときNoneを返すが、attribはそうではない
まあ試してみ
2018/08/29(水) 19:54:41.40ID:zHN7x4pt
66デフォルトの名無しさん
2018/08/29(水) 21:03:23.42ID:LyGOIS06 すいません日付の計算で疑問なんですが、
aaa_date_str = '2018-08-29 20:00:00'
bbb_date_str = '2018-08-29 19:00:00'
aaa_date = datetime.datetime.strptime(aaa_date_str, '%Y-%m-%d %H:%M:%S')
bbb_date = datetime.datetime.strptime(bbb_date_str, '%Y-%m-%d %H:%M:%S')
として、
date_diff = aaa_date - bbb_date
print(date_diff.days)
--> 0
になりますが、逆にすると、
date_diff = bbb_date - aaa_date
print(date_diff.days)
--> -1
になります。
差異が1日に満たなければゼロになるのかと思いきや
計算結果が負だとゼロにならずに-1になるのがなんか疑問です。
それとも記述に問題あるでしょうか。
aaa_date_str = '2018-08-29 20:00:00'
bbb_date_str = '2018-08-29 19:00:00'
aaa_date = datetime.datetime.strptime(aaa_date_str, '%Y-%m-%d %H:%M:%S')
bbb_date = datetime.datetime.strptime(bbb_date_str, '%Y-%m-%d %H:%M:%S')
として、
date_diff = aaa_date - bbb_date
print(date_diff.days)
--> 0
になりますが、逆にすると、
date_diff = bbb_date - aaa_date
print(date_diff.days)
--> -1
になります。
差異が1日に満たなければゼロになるのかと思いきや
計算結果が負だとゼロにならずに-1になるのがなんか疑問です。
それとも記述に問題あるでしょうか。
67デフォルトの名無しさん
2018/08/29(水) 21:09:31.82ID:GQLl9uCt68デフォルトの名無しさん
2018/08/30(木) 10:23:36.80ID:S/vwwZyF int()とかと一緒か
[0.5]=0
[-0.5]=-1
[0.5]=0
[-0.5]=-1
2018/08/30(木) 21:55:04.51ID:hf8/OGEv
70デフォルトの名無しさん
2018/08/30(木) 21:59:01.86ID:Ffnu7dR5 >>69
68が言ってるようにたぶん四捨五入なんだず
68が言ってるようにたぶん四捨五入なんだず
71デフォルトの名無しさん
2018/08/30(木) 21:59:56.98ID:Ffnu7dR5 おっと 1時間でも -1ってでるのか
じゃあ
時間は切り捨てじゃなくて四捨五入でもなくて切り上げになってんだ
じゃあ
時間は切り捨てじゃなくて四捨五入でもなくて切り上げになってんだ
72デフォルトの名無しさん
2018/08/30(木) 22:19:45.36ID:Ffnu7dR5 おっと
おれのうしろで
おれのいもうとが
「そのマイナス1はエラー値であって 数値じゃない diff.daysはぬるぽしない」
といっている
おれのうしろで
おれのいもうとが
「そのマイナス1はエラー値であって 数値じゃない diff.daysはぬるぽしない」
といっている
73デフォルトの名無しさん
2018/08/30(木) 22:29:53.78ID:Ffnu7dR5 それから
なぜ print(date_diff)してみないんだ
ともいっている
なぜ print(date_diff)してみないんだ
ともいっている
74デフォルトの名無しさん
2018/08/30(木) 22:42:08.44ID:Ffnu7dR5 おれは
aaa_date + date_diff
をためしてみてから、
timedeltaについての説明を読みに行くことを最終的におすすぬする。
aaa_date + date_diff
をためしてみてから、
timedeltaについての説明を読みに行くことを最終的におすすぬする。
2018/08/30(木) 23:01:55.56ID:TEO8FkA/
別マシンで書いたスクリプトを動かそうとしたら
dateutilが無いと言われ実行出来ません。
スクリプトにはこう書きました。
from dateutil.relativedelta import relativedelta
動いたマシンのPythonのバージョンは3.6.4、
動かないマシンのPythonのバージョンは3.6.5です。
dateutilはどこで入手するんでしょうか?
dateutilが無いと言われ実行出来ません。
スクリプトにはこう書きました。
from dateutil.relativedelta import relativedelta
動いたマシンのPythonのバージョンは3.6.4、
動かないマシンのPythonのバージョンは3.6.5です。
dateutilはどこで入手するんでしょうか?
2018/08/30(木) 23:04:27.25ID:TEO8FkA/
すみません
pip で dateutilsを入れたら使えました。
pip で dateutilsを入れたら使えました。
77デフォルトの名無しさん
2018/08/31(金) 04:09:39.70ID:rWvqNQHt python 3.6
windows10
import pyautogui
pyautogui.rightClick(100,100)
pyautogui.moveRel(10,10)
と書くと右クリックのあとマウスが動いてくれない。
これはライブラリのバグ?
windows10
import pyautogui
pyautogui.rightClick(100,100)
pyautogui.moveRel(10,10)
と書くと右クリックのあとマウスが動いてくれない。
これはライブラリのバグ?
78デフォルトの名無しさん
2018/08/31(金) 04:37:56.39ID:rWvqNQHt ごめん動いてた
2018/08/31(金) 09:38:10.61ID:cxARIA2x
罰としてお前の突起という突起をクリックしてやる
2018/08/31(金) 19:38:51.59ID:IH56D7c/
Dropboxの共有リンクを取得したいです。
dropbox.Dropbox(トークン).sharing_create_shared_link
を使うと、例えば
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行が出力されます。
sharing_create_shared_link以外の関数で、
https://db.tt/xxxxxxxだけを出力する関数ってありますか?
続く
dropbox.Dropbox(トークン).sharing_create_shared_link
を使うと、例えば
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行が出力されます。
sharing_create_shared_link以外の関数で、
https://db.tt/xxxxxxxだけを出力する関数ってありますか?
続く
2018/08/31(金) 19:39:30.70ID:IH56D7c/
sharing_create_shared_linkだと、以下のようになります。
import dropbox
dbxTOKEN = 'DROPBOX_MY_ACCESS_TOKEN'
dbxRemotePath = f'/aiueo/hage.jpg'
dbx = dropbox.Dropbox(dbxTOKEN)
dbx.users_get_current_account()
# アップロード
f = open(dbxLocalPath, 'rb')
dbx.files_upload(f.read(),dbxRemotePath)
f.close()
# 共有リンクの取得
dbxLink = dbx.sharing_create_shared_link(dbxRemotePath,short_url=True) # Dropbox から共有リンクを取得
dbxLink = str(dbxLink)[17:-1] # 整形 「PathLinkMetadata(」と「)」を除外
dbxLink = dbxLink.split(',') # リストに変換
dbxLink = dbxLink[0] # リストの1番目 (url)
dbxLink = str(dbxLink)[5:-1] # 整形
print(dbxLink)
https://db.tt/xxxxxxx # プリントされたurl
つづく
import dropbox
dbxTOKEN = 'DROPBOX_MY_ACCESS_TOKEN'
dbxRemotePath = f'/aiueo/hage.jpg'
dbx = dropbox.Dropbox(dbxTOKEN)
dbx.users_get_current_account()
# アップロード
f = open(dbxLocalPath, 'rb')
dbx.files_upload(f.read(),dbxRemotePath)
f.close()
# 共有リンクの取得
dbxLink = dbx.sharing_create_shared_link(dbxRemotePath,short_url=True) # Dropbox から共有リンクを取得
dbxLink = str(dbxLink)[17:-1] # 整形 「PathLinkMetadata(」と「)」を除外
dbxLink = dbxLink.split(',') # リストに変換
dbxLink = dbxLink[0] # リストの1番目 (url)
dbxLink = str(dbxLink)[5:-1] # 整形
print(dbxLink)
https://db.tt/xxxxxxx # プリントされたurl
つづく
2018/08/31(金) 19:40:14.75ID:IH56D7c/
文字列を分割してその中の一部を取り出す方法ですが、
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行があったとして、
url='https://db.tt/xxxxxxx',
visibility=Visibility('public', None),
path='/hoge/hage.jpg',
expires=None
こんなふうに分割したいです。
split(',')でやるとpublic', Noneここのコンマでも反応してしまいます。
今回はurlの取得が目的なので今の所実害は無いんですが、もっと簡単にdorpboxの共有リンクを取得したり確実な文字列の分割方法を知りたいです。
PathLinkMetadata(url='https://db.tt/xxxxxxx', visibility=Visibility('public', None), path='/hoge/hage.jpg', expires=None)
こういう1行があったとして、
url='https://db.tt/xxxxxxx',
visibility=Visibility('public', None),
path='/hoge/hage.jpg',
expires=None
こんなふうに分割したいです。
split(',')でやるとpublic', Noneここのコンマでも反応してしまいます。
今回はurlの取得が目的なので今の所実害は無いんですが、もっと簡単にdorpboxの共有リンクを取得したり確実な文字列の分割方法を知りたいです。
83デフォルトの名無しさん
2018/09/01(土) 12:32:11.32ID:Z1lBiRzX >>82
ずいぶん遠回りしてるけど、
a=dropbox.Dropbox(トークン).sharing_create_shared_link
として、
a.url
を参照すれば良いのでは?
他についても
a.path とかで参照できるはず
ずいぶん遠回りしてるけど、
a=dropbox.Dropbox(トークン).sharing_create_shared_link
として、
a.url
を参照すれば良いのでは?
他についても
a.path とかで参照できるはず
2018/09/01(土) 15:22:01.82ID:5RO4iQNV
すいません、ハマって困っています。
utf-8のテキストファイル(内容は'1'という文字のみ)を、python3の以下のスクリプトで
読み込んで、整数に変換しようとすると、以下のエラーが出て困っています。
Traceback (most recent call last):
File "collect_progress.py", line 75, in <module>
num = int(str)
ValueError: invalid literal for int() with base 10: '\ufeff1'
ユニコードの文字列は整数変換できないのでしょうか。
fr = open("sample.txt")
str = fr.readline()
num = int(str)
utf-8のテキストファイル(内容は'1'という文字のみ)を、python3の以下のスクリプトで
読み込んで、整数に変換しようとすると、以下のエラーが出て困っています。
Traceback (most recent call last):
File "collect_progress.py", line 75, in <module>
num = int(str)
ValueError: invalid literal for int() with base 10: '\ufeff1'
ユニコードの文字列は整数変換できないのでしょうか。
fr = open("sample.txt")
str = fr.readline()
num = int(str)
85デフォルトの名無しさん
2018/09/01(土) 15:26:08.43ID:VfnjVYeD BOMついてないか
2018/09/01(土) 15:37:12.61ID:kUpkBQ3x
echo 1 | ruby -e 'STDIN.each { |line| puts(line.to_i + 1) }'
Ruby なら、シェルから、1-liner で、2 と出力される
Python でも同じように、1-liner でやってみれば?
Ruby なら、シェルから、1-liner で、2 と出力される
Python でも同じように、1-liner でやってみれば?
87デフォルトの名無しさん
2018/09/01(土) 15:55:11.65ID:A/mNPeDe >>84
open("sample.txt", encoding="utf-8-sig")
> いくつかの領域では、UTF-8 でエンコードされたファイルの先頭に "BOM" を利用する習慣があります;
中略
> もし、そのようなファイルを読む場合には、この印を自動的にスキップするために 'utf-8-sig' コーデックを利用してください。
https://docs.python.org/ja/3/howto/unicode.html#reading-and-writing-unicode-data
open("sample.txt", encoding="utf-8-sig")
> いくつかの領域では、UTF-8 でエンコードされたファイルの先頭に "BOM" を利用する習慣があります;
中略
> もし、そのようなファイルを読む場合には、この印を自動的にスキップするために 'utf-8-sig' コーデックを利用してください。
https://docs.python.org/ja/3/howto/unicode.html#reading-and-writing-unicode-data
2018/09/01(土) 16:02:39.43ID:kUpkBQ3x
プログラムでは、BOMなしUTF-8 (UTF-8N)を使った方が無難
その代わり、Windows のExplorer ではテキスト検索できなくなるから、
Windows10・WSL・Ubuntu から、grep してる
その代わり、Windows のExplorer ではテキスト検索できなくなるから、
Windows10・WSL・Ubuntu から、grep してる
2018/09/01(土) 16:30:27.70ID:eWdCnGo4
2018/09/01(土) 16:55:46.47ID:5RO4iQNV
91デフォルトの名無しさん
2018/09/01(土) 20:51:46.35ID:5sfxmNQl2018/09/01(土) 23:59:25.43ID:eWdCnGo4
93デフォルトの名無しさん
2018/09/02(日) 05:35:01.36ID:0w6R8dvF Python初心者(プログラミング初心者)です。
スクレイピングをしようとしていたら躓いてしまったので質問をさせてください。
requestsで変数htmlに入れたサイトのhtmlをファイルに保存したいのですが良く分かりませんでした。
file.writeみたいなのも書いてみてるんですがエラー吐かれたりします。誰か例として作ってくれませんか?
requests.getで変数htmlに取得したサイトhtmlをc:/user/hoge/Documents/hymlfile.htmlに追記モードで保存したいです。
無能でごめんなさい助けてください。
スクレイピングをしようとしていたら躓いてしまったので質問をさせてください。
requestsで変数htmlに入れたサイトのhtmlをファイルに保存したいのですが良く分かりませんでした。
file.writeみたいなのも書いてみてるんですがエラー吐かれたりします。誰か例として作ってくれませんか?
requests.getで変数htmlに取得したサイトhtmlをc:/user/hoge/Documents/hymlfile.htmlに追記モードで保存したいです。
無能でごめんなさい助けてください。
2018/09/02(日) 07:13:26.28ID:5WqNet32
File.open(file_path, 'a') { |io| io.write text }
Ruby では、File.open の引数に、
ファイルパスと、ファイルを開く際の、mode を渡す
a なら追記書き込み
「python file write」で検索!
Ruby では、File.open の引数に、
ファイルパスと、ファイルを開く際の、mode を渡す
a なら追記書き込み
「python file write」で検索!
2018/09/02(日) 08:24:22.51ID:GLq4HnWW
import requests
r = requests.get("https://www.python.org")
f = open("c:/user/hoge/Documents/hymlfile.html", "a")
f.write(r.text)
r = requests.get("https://www.python.org")
f = open("c:/user/hoge/Documents/hymlfile.html", "a")
f.write(r.text)
96デフォルトの名無しさん
2018/09/02(日) 09:00:47.26ID:0w6R8dvF97デフォルトの名無しさん
2018/09/02(日) 16:47:00.30ID:RE+xVvI9 f.write(r.text)
UnicodeEncodeError: 'cp932' codec can't encode character '\U0001f5a5' in position 12657: illegal multibyte sequence
スクレイピングしたサイトに絵文字があると(?)このエラーが起こるようです。
エンコーディングの関係だと思うんですけど対処法分かる方いますか?
UnicodeEncodeErrorで調べたら解説しているところが少し見つかったんですが僕には何が言いたいのかさっぱりでした。。。。
UnicodeEncodeError: 'cp932' codec can't encode character '\U0001f5a5' in position 12657: illegal multibyte sequence
スクレイピングしたサイトに絵文字があると(?)このエラーが起こるようです。
エンコーディングの関係だと思うんですけど対処法分かる方いますか?
UnicodeEncodeErrorで調べたら解説しているところが少し見つかったんですが僕には何が言いたいのかさっぱりでした。。。。
98デフォルトの名無しさん
2018/09/02(日) 16:56:55.96ID:RE+xVvI9 f.openの時にencoding='utf-8'渡したら解決しました!!
うれしい!!!ありがとう
うれしい!!!ありがとう
2018/09/02(日) 16:59:32.33ID:5WqNet32
cp932 はやめて、BOMなしUTF-8(UTF-8N)で書き込めば?
それか、エンコード変換できない文字は、
エラーにせずに、? に置き換えるとか
それか、エンコード変換できない文字は、
エラーにせずに、? に置き換えるとか
100デフォルトの名無しさん
2018/09/02(日) 17:49:53.80ID:B4IY8jcq ElementTree、lxml、BeautifulSoupってそれぞれどう違うの?
101デフォルトの名無しさん
2018/09/02(日) 17:51:26.55ID:B4IY8jcq ElementTreeは純正
lxml、BeautifulSoupはサードパーティ
lxmlは高速だけど、動的なサイトに弱い
BeautifulSoupは比較的簡単
って感じ?
lxml、BeautifulSoupはサードパーティ
lxmlは高速だけど、動的なサイトに弱い
BeautifulSoupは比較的簡単
って感じ?
102デフォルトの名無しさん
2018/09/02(日) 19:12:56.97ID:dvfcpVZJ 何が言いたいのか
103デフォルトの名無しさん
2018/09/02(日) 19:26:55.59ID:/VgxTU/I 開けっ放しにするんはいけんよ
104デフォルトの名無しさん
2018/09/02(日) 20:28:17.67ID:NdoNeabl lxml 言う程速さを感じないんだよな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【地震速報】青森県で震度6強 沿岸部に津波警報 ★6 [ぐれ★]
- 「日の丸にバツ印」掲げた大学生 あいまいな国旗損壊罪に「怖い」 The Mainichi [少考さん★]
- 【音楽】BARBEE BOYS・KONTAが事故で四肢麻痺を公表、新体制で活動は継続 [少考さん★]
- 【野球】野球の未来に危機感「マイナースポーツになる」 宮本慎也氏が開催…学童大会 [尺アジ★]
- 中国「捜索レーダー起動は各国の通常の手法」 火器管制用か回答せず [蚤の市★]
- 【訃報】声優・西村知道さん死去 「SLAM DUNK」安西先生役 9月に体調不良のため一時休業 [少考さん★]
- 三角形はカッコいい
- ぺこーら、地震で同僚が次々配信を止めるなか強行し続けるので悪目立ちするwww [268244553]
- みなみけ三姉妹誰が一番好き?
- 俺はヤンキーだから
- 【速報】高市早苗、起床 [779938112]
- ぬるぽ
