1 名前:デフォルトの名無しさん mailto:sage [2011/11/24(木) 15:22:07.02 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その11 hibari.2ch.net/test/read.cgi/tech/1301383226/ 関連スレ Pythonのお勉強 Part45 hibari.2ch.net/test/read.cgi/tech/1321189773/ ◆関連リンク Python の Home Page ttp://www.python.org/ ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
643 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 18:46:27.49 ] なくなるなら宝石が先
644 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 19:03:06.98 ] >>643 いや 641は632に対してね
645 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:15:44.71 ] いろいろ考えたけど 内包表記やラムダなどを駆使して関数的に美しく書くなんてのは Python では目指さない方が良さそうだというところに落ち着いた やって出来ない事はないけど、やっぱり関数型言語ではないので 関数的なスタイルで読みやすいコードを書くのは難しい。 凝ったことはせずに 素直に手続き的に書いて関数も一つ一つ def する というのが Python のコツっぽいかな?
646 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:39:15.16 ] >>626 リンクのdive into python3はまとまっていてわかりやすそうかと思いました python3を対象としていますが、今からpython勉強する場合は3がいいでしょうか? なんか、ネット徘徊していると、2を勉強すべしとの意見も多いので困っています よろしくお願いいたします
647 名前:デフォルトの名無しさん mailto:sage [2012/02/26(日) 22:57:21.03 ] どっちかで迷うくらいなら、3系がいいと思うよ。 私は3系のみ勉強している。 2系を折角勉強したのに、3系では邪魔知識になるとか嫌でしょ。 既存のPythonの資産を使いたいとかなら、 2系の勉強も考えた方がいいかも知れないけど、 そうじゃないなら3系からの勉強でいいと思う。 >>646 が、Pythonをなぜ使いたいのかが一番大きい。
648 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 06:28:08.91 ] Python3の現時点のデメリットは対応ライブラリが少ないくらいで至急何か作る必要がなければ困らないと思うよ Python2は文字コードべったりなんでunicodeの暗黙の変換とかかなり分かりにくい
649 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:06:32.98 ] 勉強するだけなら Python 3 でも構わないかもね。 現実に使うのは厳しいが。
650 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 08:12:40.46 ] どうしても、本人がどうしたいかになるんだよね。
651 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 11:53:03.88 ] u"3だと日本語書くためにいちいちuつけなくていいから楽"
652 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 12:08:34.16 ] 全角だし
653 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 19:57:44.25 ] つ[from __future__ import unicode_literals]
654 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 22:12:03.40 ] >>649 目的が勉強だけって… それはプログラミングやる意味ないんじゃ…
655 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:00:49.73 ] 勉強の意味が 数学や英語の学業としての勉強じゃなくて、 学んでいるという意味の勉強じゃないのかな?
656 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:04:47.16 ] プログラム言語なんてその言語特有のお約束を覚えればいいだけじゃん 制御構文や変数はどの言語だって共通してるし つまり
657 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:06:42.91 ] >>647 単純に、Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今現在のLinuxで動いているpythonとすると2系が多いですかね 個人的には3が勉強したいですけど
658 名前:デフォルトの名無しさん [2012/02/27(月) 23:24:21.45 ] Python製のフレームワークって今何がHOTなの?
659 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:28:07.90 ] >>657 両方勉強するのはだめなの?
660 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:41:16.90 ] ライブラリの多さがpythonの利点なんだし Python3なんて選択肢に入らない
661 名前:デフォルトの名無しさん mailto:sage [2012/02/27(月) 23:47:18.01 ] 最初はどっちかに絞った方がいいと思ます。 二兎追うものは一兎も得ず っていうじゃないですか。 どちらも理解できれば一番いいけど、そう上手くいくかな? > Linuxのソフトウェア調べる仕事していて、pythonのコードに出くわすことが多かったからです 今度は、どんな目的で調べているかによる。なんつって。 範囲が広いんだよねー。 中身を読んでるってことですよね。 ふむ。 改良や開発目的で調べてるの? そのソフトウェアの開発者達が、 後継の開発を2で行うって言ってるんなら、2の勉強だろうし、 3で行うってのが多勢なら3だろうし。
662 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:07:28.87 ] smtplibについて質問させてください。 会社のメールサーバーに対して > telnet XXX.XXX.XXX.XXX 25 を実行するとうまくつながるのですが、 以下のように実行するとエラーが発生します。 原因が何かヒントをいただけないでしょうか。 import smtplib s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) c:\test\python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
663 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:09:29.04 ] >>661 中身は読んでいますけど、ほとんど趣味ですね 会社から要求されているのは単純な使い方と性能のみ でも、個人的に興味持って色々と調べています ま、趣味なんで、3勉強してみます
664 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 00:28:07.37 ] こちらからもちょっと質問させて下さい。 > telnet >>> import smtplib って同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? まあ、これが答えのような気もするけど。 socket.error: [Errno 10061] 対象のコンピュータによって拒 否されたため、接続できませんでした。
665 名前:デフォルトの名無しさん [2012/02/28(火) 01:20:53.58 ] scipyとmatplotlibが移植されたんで、自分的には3でも結構逝ける。
666 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 01:46:09.75 ] 俺はいつも逝ってる むしろ吊ってるし詰んでる
667 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 05:58:14.65 ] >605 >今までJava、C#しか経験していないため、変数に型が無い言語でどのようにすべきなのか良くわかりません。 >608 >いまいち、変数に型がないことによるメリットがわかりませんでした。 型はある 型宣言が無いだけ
668 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:05:53.88 ] >632 for x in filter(a_condition, a_list): do_something(x)
669 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:14:14.91 ] ワッフル ワッフル
670 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:31:08.22 ] >>662 telnetでサーバからのリプライは確認した? 220 <ホスト名> ESMTP Sendmail ... とか返ってくるはずだけど
671 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 06:43:35.75 ] >>670 はい、返ってきました。 これがうまくいっているので、どうしてエラーが起こるのかわからないんです…
672 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:13:17.56 ] >>671 となるとちょっとわからない。ごめん wiresharkでも使ってtelnetとsmtplibの通信内容を比べてみては
673 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:17:43.69 ] wiresharkじゃなくてdebug設定では
674 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:30:31.34 ] -v -vvv
675 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 07:37:01.98 ] >>667 メリット教えてやれよ
676 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 09:38:41.68 ] >>675 ダックタイピングができる
677 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:14:31.80 ] >>667 値に型があるんであって、変数に型はないでしょ
678 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 16:31:13.65 ] 変数はオブジェクト型またはプリミティブ型もしくはNoneです
679 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 17:53:02.28 ] Pythonにはプリミティブ型なんて無い。 Noneもただのオブジェクト。
680 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 18:15:00.11 ] pythonにはオブジェクトしかない お前もオブジェクトにしてやろうか
681 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:05:46.33 ] ひぃいぃ
682 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:27:45.80 ] ジェクジェクにしてやろう
683 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 21:29:29.76 ] 壊れてすっかり職場のオブジェ
684 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:04:10.42 ] >>671 [Errno 10061] は、WSAECONNREFUSED のことだろうから、 接続先のサーバーで smtp サーバーが動作していない (正確には、 該当のポートをリッスンしている奴がいない) ことを示している。 本当に、telnet と同じサーバーに繋ぎにいこうとしてる? もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね?
685 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:16:28.49 ] >>684 > もしくは、s = smtplib.SMTP('XXX.XXX.XXX.XXX', 025) なんてしてないよね? これはどうしてダメなんですか? 025のゼロがダメなんでしょうか。すいません。
686 名前:デフォルトの名無しさん mailto:sage [2012/02/28(火) 23:57:53.76 ] >>685 8進数だから
687 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 00:25:20.84 ] >>> s = smtplib.SMTP('XXX.XXX.XXX.XXX', 25) Traceback (most recent call last): ... から見るにそんなことはしていなそうでしたが。 同一PCかつ同一OSでの実行結果? それぞれの環境でpingがとおることは確認済? とりあえず、pingは通りましたが送信できずに困ってますとかって言って欲しい。
688 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:55:30.51 ] 良心的に見て >>> s = smtplib.SMTP('192.168.080.025', 25) とかがアウトっていう意味か ping が通ったからと言って telnet (IP) 25 が通る保障はどこにもない
689 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 03:58:36.06 ] そしてpingが通らなくてもSMTP接続出来ることなんていくらでもある
690 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 05:48:42.36 ] そして>662を読めといいたい
691 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 07:00:15.35 ] こういう話だったらいいなあ ja.wikipedia.org/wiki/Outbound_Port_25_Blocking 以下smtplib.SMTPでもdebuglevelが使えるようなので 今回の件には役に立ちそうにないけど一応 import smtplib smtplib.SMTP.debuglevel = 1 con = smtplib.SMTP(hostname, 25) ... debug情報がずらずら ...
692 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 14:21:38.30 ] クライアントの PC は同じ環境からアクセスしてんのかな あと telnet するときの IP と smtplib.SMTP するときの IP ( XXX.XXX.XXX.XXX の部分 ) は本当に同じなのかな
693 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:21:00.17 ] pythonでインスタンスのアドレスを知る方法ってないんでしょうか? ずっと勘違いしてて id でアドレス表示してるのかと思ったら 全然そんなことないですよね id の仕様を見ても「識別子」としか明言してなくてアドレスだとは一言も言ってないし
694 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 22:38:44.02 ] help(id)
695 名前:デフォルトの名無しさん mailto:sage [2012/02/29(水) 23:35:05.47 ] あってるよ Python/bltinmodule.c [926/2392行][38%] static PyObject * builtin_id(PyObject *self, PyObject *v) { return PyLong_FromVoidPtr(v); } PyDoc_STRVAR(id_doc, "id(object) -> integer\n\ \n\ Return the identity of an object. This is guaranteed to be unique among\n\ simultaneously existing objects. (Hint: it's the object's memory address.)");
696 名前:デフォルトの名無しさん [2012/03/01(木) 15:22:17.92 ] あってるね
697 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:48:39.27 ] (1) (2) (3) を同じPC(Windows XP)で実行しました。 スクリプトからの接続を拒否する仕組みってあるのでしょうか? ----------------------------------------------- (1) pingを実行した場合、以下のように成功します。 c:\test>ping 100.100.100.100 Pinging 100.100.100.100 with 32 bytes of data: Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Reply from 100.100.100.100: bytes=32 time<1ms TTL=63 Ping statistics for 100.100.100.100: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
698 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:49:08.93 ] ----------------------------------------------- (2) telnet を実行した場合、以下のように成功します。 c:\test>telnet 100.100.100.100 25 220 xxx.xxx.co.jp ESMTP Postfix
699 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 22:50:13.53 ] ----------------------------------------------- (3) pythonを以下のように実行するとエラーが出ます。 c:\test>python Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> import smtplib >>> smtplib.SMTP.debuglevel=1 >>> con = smtplib.SMTP('100.100.100.100', 25) connect: ('100.100.100.100', 25) connect: (25, '100.100.100.100') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "c:\python27\lib\smtplib.py", line 242, in __init__ (code, msg) = self.connect(host, port) File "c:\python27\lib\smtplib.py", line 302, in connect self.sock = self._get_socket(host, port, self.timeout) File "c:\python27\lib\smtplib.py", line 277, in _get_socket return socket.create_connection((port, host), timeout) File "c:\python27\lib\socket.py", line 571, in create_connection raise err socket.error: [Errno 10061] 対象のコンピュータによって拒否されたため、接続できま せんでした。 >>>
700 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:52:26.58 ] 単にファイアウォールにひっかかってるだけじゃないの?
701 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 23:54:28.83 ] >>698 この先に進もうとしようとすると同じように失敗しない? telnetでどうやってメール送れたの? 受信確認はどうやったの?
702 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 00:42:02.63 ] >>700 例えばノートンなんかに (telnet.exeの通信は止められていないけど) python.exeの通信が止められてる可能性があるってことか
703 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 02:22:05.12 ] ファイアウォールというかセキュリティソフトのチェックかもな telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけだろ
704 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:39:38.90 ] かもとだろって、両立するの?
705 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 19:54:24.88 ] 自然言語では両立するでしょ。
706 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:24:24.48 ] 嘉本さんのこと言うなー
707 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:31:16.20 ] (馬)鹿本だろう
708 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:36:14.76 ] ぶるるるぁ
709 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 20:51:13.63 ] webページをダウンロードして内容をファイルに書くところで詰まってるんだけど、 Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> open('D:\P/output.txt', 'w').write(mainline) TypeError: expected a character buffer object と出るんだけどどうしたらいいの書き込もうとする文字列が一定以上の量だとエラー出る感じだけど
710 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:21:04.13 ] type(mainline) 確認してみたら? 文字数が変わると内部でmainlineのtype変えてるんじゃないの?
711 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 21:40:50.14 ] import StringIO open('D:\P/output.txt', 'w').write(StringIO.StringIO(mainline).getvalue())
712 名前:デフォルトの名無しさん mailto:sage [2012/03/02(金) 23:37:00.57 ] >>699 >connect: ('100.100.100.100', 25) >connect: (25, '100.100.100.100') なんで二行でるんだ? とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 >>700 多分、それはない。 もし、そうなら、10060 (WSAETIMEOUT) になるはず。
713 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:34:59.65 ] >>701 今日試しました。 telnetでメールが送信できました。 以下のサイトを参考にました。 www.nurs.or.jp/~telnet/smtp.html 受信はメールソフトを使いました。 なんでだめなのか、さっぱりわかりません。
714 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:38:30.40 ] >>712 何度かためしましたが、確かに二行が表示されます。 > とりあえず、con = smtplib.SMTP('100.100.100.100') で試してみて。 やりましたが、結果は全く同じです。 ひとつわかったことがあります。 IPアドレスを100.100.100.100じゃなくて、でたらめな値に変えても全く同じエラーが発生します。 telnetを使って100.100.100.100 でメール送信できたので、ipアドレスが間違っていることはありません。 smtplib のソースにデバッグコードを埋め込んでどこまでうまく動いているか、切り分けするしかないんでしょうか。
715 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:44:54.17 ] ファイアウォールというかセキュリティソフトのチェック telnet.exe は既に許可ソフトに登録済みなのを自分で忘れてるだけ
716 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:54:29.66 ] 多分PCから出れてないわ みんながいうようにファイア・ウォールが原因だと思うぞなもし 一度ファイア・ウォール、セキュリティ関係諸々を停止させてから試してみなよ そしたら上手くいくと思う
717 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:57:53.99 ] localhost, 127.0.0.1だったらうまくいくんだっけか?
718 名前:デフォルトの名無しさん mailto:sage [2012/03/03(土) 00:58:29.82 ] 職業別の人気順位 (an・an調べ) xbrand.yahoo.co.jp/category/lifestyle/7380/1.html 1位 システムエンジニア 2位 公務員 3位 銀行&商社マン 4位 警察・消防・自衛官 5位 マスコミ・営業マン・広告マン 6位 企業経営者 7位 医師 8位 弁護士、公認会計士
719 名前:デフォルトの名無しさん [2012/03/03(土) 00:59:02.50 ] 馬鹿には無理