1 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 11:20:45 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、 お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>950 辺りで 前スレ くだすれPython(超初心者用) その4 pc12.2ch.net/test/read.cgi/tech/1243160751/ 関連スレ Pythonのお勉強 Part35 pc12.2ch.net/test/read.cgi/tech/1253535109/
237 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:36:54 ] >>236 日本で使う言語として print "こんにちは" が動かないのはどうかと思うのよ
238 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 07:49:24 ] 一行目にshebangがあるとして ソースはUTF-8で保存した上で 二行目に # -*- coding: utf-8 -*- すると幸せになる
239 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 09:37:53 ] >>238 幸せになれるというかこれしないと タイプ数アホみたいに増えるから必須だと思う
240 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:07:15 ] >>235 たしかにPythonの文字コードまわりの面倒くささは尋常じゃないね 俺は一旦すべてユニコードにしてから必要なときにエンコードする ようにしてるけど、ここまで徹底する必要あるのか?と度々思う
241 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:18:40 ] そんなんじゃPython3000についてけねーぞ 標準ライブラリですら内部でstrに変換しやがるのがあるくらいだし別に徹底してない
242 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:36:05 ] >>240 そこまで徹底するのが、文字化け対策として一番楽なんだよ。 >>237 動かないわけ無いだろ。 Python3では問題ないし、Python2でもソースエンコーディングとターミナルのエンコーディングが一致 していれば動く。 Python2 でターミナルのエンコーディングと違うソースエンコーディング使いたいなら、最初に from __future__ import unicode_literals とするか、 u"こんにちは" と書けば良い。
243 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 11:37:02 ] >>240 正解
244 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 14:38:49 ] >>234 ありがとうございます。。 うまくいきましたが、こんどはMS932というので引っかかってしまいました。 .decode('cp932','ignore')ってやるとあとあと困ったりしますか?
245 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:00:02 ] 困るかもって思うなら www.python.jp/doc/release/lib/codec-base-classes.html#codec-base-classes ここ見て置換させるとか 2chのdatなんてcp932/shift_jis/shift_jis_2004/shift_jisx0213のどれ使ってもエラー吐くときあるし
246 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 15:14:09 ] >>244 これ便利 => chardet.detect() 別途インストールしないと使えない(多分)のが玉に瑕
247 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:29:09 ] chardetはある程度の長さがないと役に立たんのがなあ まあ仕組上当たり前の事なんだが ID3タグみたいなエンコーディングどころかロケール情報もないクソフォーマット触った時は頭抱えたわ
248 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 16:38:42 ] def decorder(u): if isinstance(u, unicode): return u for cd in ['utf-8', 'euc-jp', 'cp932', 'iso-2022-jp', 'latin-1', 'ascii']: try: u = u.decode(cd) break except UnicodeDecodeError: continue else: u = u.decode('latin-1', 'replace') return u
249 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:54:33 ] >>238 それを強要する仕様を初心者向けと謳うのはどうかと思うわけだが 今時のメインシステムはWindowsでSJISだし
250 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 18:56:40 ] とりあえずUTF-8で書いとけってのにはまだ賛同できるが Emacsスタイルのコメントがむかつく
251 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:12:10 ] >>249 なんか今日の変な発言はみんなあんたなのかも知れんが Pythonには初心者に優しい仕組みを提供するみたいな理念はないぞ 読みやすく、バランス良くって結果がたまたま初心者にもそこそこ使いやすいって状況になっただけ
252 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:49:58 ] 簡単なものを複雑であるかのように見せかけてはいけない。 複雑なものを簡単であるかのように見せかけてはいけない。
253 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 19:55:57 ] thisってんじゃねーぞ
254 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:23:54 ] >>249 いや、コードページがCP932だからといって、スクリプトのエンコーディングまで 勝手にCP932だと仮定されてしまうようだとまずいだろ スクリプトを書くのは自分だけじゃないんだぞ 日本語Windowsで実行しているからと言ってブラウザがHTMLを 全部CP932だと考えるようではまずいのと同じだ エンコーディングなんて書いた奴しか分からない(推定はできるが)ので 指定させるのが確実で手っ取り速い、HTMLと同じだろ? >>250 > Emacsスタイルのコメントがむかつく 別にEmacsスタイルである必要は無いよ #coding: utf-8 とかでいい 実際には coding[=:]\s*([-\w.]+) という正規表現で エンコーディング指定らしきものとパターンマッチしている
255 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:31:28 ] そういうことじゃなくて幸せになれるのは誰かってこと Windowsでそこらのエディタ使ってる初心者が幸せになれるわけじゃないよね あとPEPから正規表現抜いてくるんなら 引用元書いたほうが勉強してる人が幸せになれるよ
256 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:35:15 ] WindowsっていつまでSJIS使うんだろうなwww
257 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:40:43 ] C の初心者は #include <stdio.h> を #include <studio.h> と平気で書いたりするからな python でも # code: shift_jis とか書いて動かないとか言い出す香具師が出てきてもおかしくない 「初心者」と「アホ」は区別して良いと思う
258 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 20:54:56 ] >>254 ブラウザは実用に支障のないレベルで文字コードを自動判別してくれるぞ そこまでは行かなくてもWindows向けインタプリタのデフォルト文字コードは mbcsでも良いはずだ
259 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:00:38 ] どうですか? boost.cppll.jp/HEAD/libs/date_time/doc/BuildInfo.html
260 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:02:39 ] スレ的にはこっちが良かったかな boost.cppll.jp/HEAD/libs/python/doc/index.html
261 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:10:44 ] >>258 > そこまでは行かなくてもWindows向けインタプリタのデフォルト文字コードは > mbcsでも良いはずだ それじゃ全然ダメなんだよ 他人が書いたモジュールやスクリプトのことも考えろ mbcsの意味がCP932なのは日本語ウィンドウズの話であって 外国ではWindows-1252だったりするわけだ Windows-1252な環境の連中の書いたモジュールやスクリプトを CP932でデコードして動くとでも思うのか?
262 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:36:33 ] >>258 誤爆する可能性のある判別法を自動適用するとかアホすぎるぞ
263 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:44:40 ] ブラウザにhtmlの文字コード自動判定する機能があるからといって、それに依存して きちんとヘッダを書かないのは間違い。 ブラウザは自動判定ミスっても間違って表示するだけだけど、 プログラムが自動判定ミスって間違って動作するとマズイだろ。
264 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:45:38 ] 曲がりなりにもプログラミング言語なのに まともにHTMLすら書けないレベルの奴はさすがに相手にしてないだろw #coding: cp932のようにソースエンコーディングを指定するのも #include <stdio.h>とか書くのも 何かを足すときに+と書くのも 全部言語仕様であり決まりごとに過ぎんと思うが
265 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:50:54 ] >>261 配布されているコードは文字コードが書いてあるんだからデフォルトの文字コードが 何になっていようが問題ないのではないかい?
266 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 21:59:59 ] > 配布されているコードは文字コードが書いてあるんだから 運用ルールで済ませるのではなく、「確実に」強制する方法を Pythonが選んだというだけだろ それ以外に「確実に」強制する方法は存在しないわけだし 1byte圏の人間がどんだけ文字エンコーディングに関心を持たないかなんて 知ってるだろ こんだけやってくれてるのはむしろ有難いと思ったほうがいいぞ
267 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:27:30 ] そうだな、これだけ厳密にやってくれてるから、Python製で日本語でも問題起きない アプリが多いんだよな。
268 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:45:24 ] >>260 そこヘッダにエンコードも書いてあるのに なんで化けるんだろう?
269 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:50:10 ] エラーは明示的に、という設計思想だから一見文字コードのエラー(UnicodeEncode/DecodeEroor)が多いように見えるが、 どこがまずいのかを明確に指摘してくれるから俺のような初心者には逆にありがたい。
270 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:56:46 ] >>269 の2行目は「それはどこがまずいのか明確に指摘してくれるってことだから〜」にしてくれ >>268 レスポンスヘッダがUTF-8になってるから
271 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 22:59:30 ] HTTPサーバのレスポンスヘッダの方が優先されるのね。不思議
272 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:03:30 ] >>271 ttp://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/charset.html HTML4.0仕様の5.2.2に優先順位が書いてある サーバレスポンスが一番優先順位が高い
273 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:32:09 ] >>270 なるほどd Apacheのバージョン変えたときに AddDefaultCharset UTF-8 のままにしちゃってるパターンか 中のひと分かってるのかなぁ
274 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:33:50 ] 馬鹿よけのためにわざとやってるサイトがあるという話を聞いたことがある
275 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:44:02 ] 「原則unicodeで必要なときだけstrに変換すべき」 理想ではあるけど現実的じゃないよね
276 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:46:10 ] utf-8派がutf-8化の強制を目的としてわざとやることはある。
277 名前:デフォルトの名無しさん mailto:sage [2009/11/15(日) 23:46:14 ] そう、従わない奴が多いからPython3はああいう仕様になった そういう意味では現実的ではない
278 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:17:28 ] 最近はUTF-8が増えてきたとは言え文字コードの扱いなんてそれぞれの言語圏で 育った文化の上に成り立っている物だし、それをガン無視して「仕様なんだから、こうしろ」とか 言っても不満が噴出して当然だよな 日本なんかいまだにJIS、SJIS、EUC-JP、UTF-8やらが入り乱れている状態だしなw
279 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:21:38 ] 意味が分からん 少なくともプログラマが吐くセリフじゃない
280 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:26:17 ] Unicodeには言語学者とかも係わってくるから騒ぎが大きいけど、 Pythonには不満が噴出するほど人がいない。
281 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:42:07 ] プログラマなら UTF-8 一択だろ JK
282 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:48:08 ] >>281 バカか?w 扱う文字コードをすべてUTF-8に統一できるわけがないだろうjk
283 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 01:55:05 ] それはお前がおかしい。
284 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 02:14:35 ] >>281 みたいなのがプログラマだったら大変だな 「仕様書が悪い」とか言い出しそうだw
285 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 08:59:32 ] >>282 扱う文字コードではなく、ソースコードのエンコーディングの話をしてるんだぞ?
286 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 09:00:43 ] 意味が分からん 少なくともプログラマが吐くセリフじゃない
287 名前:デフォルトの名無しさん mailto:sage [2009/11/16(月) 18:28:36 ] SQLインジェクションやXSSの対策ですが、 XSSはGET引数を query = cgi.escape(f.getfirst("q", "0")) で対応しているのですが完璧でしょうか? また、SQLインジェクションもこれでいけますか? SQLやXSSのほかに対策すべきことはあるのでしょうか?
288 名前:デフォルトの名無しさん [2009/11/18(水) 19:27:11 ] 初心者過ぎてお恥ずかしいですが、助けてくださいorz OSはwindowsXPです。 code.google.com/intl/ja/appengine/docs/python/gettingstarted/helloworld.html これをやろうとしていますが、「アプリケーションのテスト」のところで、 「次のコマンドで helloworld ディレクトリまでのパスを指定し、Web サーバーを起動します。 google_appengine/dev_appserver.py helloworld/」 からわからなくなりました。 コマンドプロンプトで実行するんでしょうか。 helloworldフォルダをどこにおくべきでしょうか。どう指定するのでしょうか。 code.google.com/intl/ja/appengine/docs/python/tools/devserver.html#Running_the_Development_Web_Server 「Python 開発用サーバー」ページにある「dev_appserver.py myapp 」をcmdで打ったら「dev_appserver_main.py:410] Application configuration file not found in myapp.」のエラーになりました。 よろしくお願いいたしますorz
289 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 19:35:24 ] >>288 >コマンドプロンプトで実行するんでしょうか。
そのとおりです。 > helloworldフォルダをどこにおくべきでしょうか。 ディレクトリ構成は + google_appengine/ - dev_appserver.py + helloworld/ - app.yaml - helloworld.py > どう指定するのでしょうか。 まずコマンドプロンプトで「python -V」と入力したら Python 2.5.4 みたいなのが出ることを確かめましょう。 そのあと「python google_appengine¥dev_appserver.py -p 8080 helloworld」を実行すればおけ。
290 名前:デフォルトの名無しさん [2009/11/18(水) 19:39:43 ] >>289 ご回答どうもありがとうございます。 Python2.6.4ですが、バージョンが違うからエラーになるのでしょうかorz
291 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 19:57:29 ] エラーメッセージをよくみようぜ。 Application configuration file not found in myapp とあるんだから、app.yaml が myapp の下にないんじゃないの?
292 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 22:33:46 ] >>288 さっきからマルチポストしているお馬鹿さんへ あなたがポストするべき場所はこちらです pc11.2ch.net/test/read.cgi/php/1243654802/ さようなら
293 名前:デフォルトの名無しさん mailto:sage [2009/11/18(水) 23:25:18 ] docs.python.org/ 公式では無かったようなのですが、2.4とか2.5とかのライブラリのソースが ハイライトされてるページが有ったと思います。 2,3年前に見た記憶がありますがどこか忘れてしまいました。 誰か知りませんか?
294 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:22:14 ] コストの大きい関数、largefunctionがあったとして if largefunction(arg): otherfunction(largefunction(arg)) と同じようなことを、関数呼び出しが重複しないように書くにはどうすればいいですか。 ローカルな一時変数を作成するのもおかしな話だと思うので。
295 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:36:00 ] >>ローカルな一時変数を作成するのもおかしな話だと思うので。 おかしくないよ
296 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:46:06 ] largefunctionを実行するコストよりローカル変数作るコストの方が小さいことが多い っていうか副作用を起こす関数もあるのでlargefunctionじゃなくても普通ローカル変数作る
297 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:49:01 ] おかしくないよな… ローカル変数に一旦取るのが普通だと思ってた。 そんな風に考える人も居るんだという勉強になりました。
298 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:50:23 ] otherfunction(v) if (v = largefunction(arg)) or v else pass
299 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:52:56 ] 代入文は式じゃありません
300 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:59:43 ] >>295-297 本人じゃないけど二行になるのが嫌って言ってるように感じる
301 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 02:59:44 ] (lambda v: otherfunction(v) if v)(largefunction(arg))
302 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:01:24 ] ダメじゃん (lambda v: otherfunction(v) if v else None)(largefunction(arg))
303 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:02:05 ] >>301 SyntaxError: invalid syntax
304 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 03:04:14 ] lambda のコストってどんなもんなん?
305 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 04:00:20 ] 素直に3行で書きましょう
306 名前:293 mailto:sage [2009/11/19(木) 04:12:55 ] 誰か教えてくれよ!
307 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:06:09 ] 見たことあるよ でも忘れたよw
308 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:13:24 ] 辞書でd3 = d1 + d2見たいな操作できないの? 今は以下のようにやってるんですが、不便です。 pyhotnを触り始めてまだ日が浅いので、足りない知識が多いかと思いますが、よろしくお願いします。 tmp = d1 tmp.update(d2) d3 = tmp
309 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:17:35 ] ttp://www.koders.com/python/fid90CE0CDD808CCE258E869074C8C9B17E002A531E.aspx?s=email.Message#L10
310 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:19:08 ] >>308 過去スレにあったと思う
311 名前:308 mailto:sage [2009/11/19(木) 05:24:34 ] ありがとうございます。探してみます。
312 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 05:27:00 ] 過去スレの結論は d3 = d1 d3.update(d2) だったような気がするw
313 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 09:43:53 ] もしくは、 d3 = dict(d1, **d2) だっけかな。
314 名前:デフォルトの名無しさん mailto:sage [2009/11/19(木) 20:29:32 ] feedparserでパースしたtitle要素をwxpythonのListbox内に挿入したいのですが どうすればいいのでしょうか?
315 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:46:18 ] システムのパスデリミタを気にせずに、ディレクトリ名やファイル名を結合する方法はありますか? 分割する方は割りと簡単にできたのですが、結合がよくわかりません。
316 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 08:55:02 ] os.path.append
317 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 09:01:37 ] できました。ありがとうございます。
318 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 17:19:47 ] os.path.join ?
319 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 22:39:04 ] >>294 if largefunction(arg): otherfunction(0)
320 名前:320 [2009/11/20(金) 23:01:19 ] wxPythonを使ってGUIツールを作っています。 自分の開発環境PCでは問題なく動作しているのですが、 wxPythonをインストールしていないPCで実行すると、 「ImportError: No module named wx」が出ます。 プログラムを実行させるには、 PCにwxPythonをインストールするしかないのでしょうか?
321 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:16:11 ] そうだね。 ImportErrorをキャッチして メッセージを出すのもありかも。
322 名前:デフォルトの名無しさん mailto:sage [2009/11/20(金) 23:32:20 ] py2exe
323 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:49:33 ] def Plus(args): 〜 def Hoge(cmd = 'Plus'): globals()[cmd](〜) は出来るのですが、Plus関数をHogeの内部に記述するとキーが見つからないと起こられてしまいます。 globals()をlocals()に変えてもダメでした。 関数内関数を文字列で指定して実行するにはどうすればよいのでしょうか?
324 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 00:59:36 ] 駄目な方のソースも載っけてみ
325 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:04:15 ] 駄目な例 def Hoge(cmd = 'Plus'): globals()[cmd](〜) def Plus(args): 〜 もしかしたらと思い、以下のようにしたらエラーになりませんでした。 def Hoge(cmd = 'Plus'): def Plus(args): 〜 globals()[cmd](〜) 先に定義しておかないとダメってことでしょうか?
326 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:24:31 ] Yes 上から下に向かって実行されるから。 > def Plus(args): > 〜 の意味は、〜を解析してPlusという名前の関数で登録しろという意味の実行文。 実行されなければ、存在することが出来ない。
327 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 01:37:18 ] なんか前も見た流れだな C はコンパイラはとにかくコンパイルして リンカが頑張って名前解決してるから 順序とかどうでも良くなってる 一方で Python の def/class は代入式だと思っていい
328 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 07:39:23 ] >C はコンパイラはとにかくコンパイルして >リンカが頑張って名前解決してるから >順序とかどうでも良くなってる いや ヘッダがあるから大丈夫なだけで Cも順序が逆だと プロトタイプが無いエラーになるか 暗黙の型定義で代用される
329 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:29:03 ] あるプログラム(A)の出力をpythonプログラム(B)で読み込みたいのですが import sys if __name__=='__main__': while True: l = sys.stdin.readline() if len(l) == 0: break print '>', l, print 'fin' とした場合、(B)だけで実行すると望んだ結果が得られるのですが、 > (A) | (B) とすると fin close failed in file object destructor: Error in sys.excepthook: Original exception was: 最後のfinだけが表示されてエラーが出てしまいます。 パイプで繋げた標準入力から1行ずつ読み込むにはどうすればいいでしょうか?
330 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:41:57 ] Windowsだとパイプで変な挙動をすることがあったような 環境書いたほうがいいよ で、もしWindowsなら > A | python B で試してみる
331 名前:329 mailto:sage [2009/11/21(土) 11:49:50 ] 環境はWindowsXP SP3です。 >>330 の方法で試したら望んだ結果になりました。 ありがとうございました。
332 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 13:16:25 ] float返すC++の関数があり、それをあるPythonのラッパーが呼び出します。 この返り値をunittestのassertEqualでテストしたいのですが、 assertEqual(3.141592, その関数()) とやると、第1引数は倍精度、第2引数は単精度になり、比較結果が一致しません。 assertAlmostEqualを使わないで、第1引数を単精度にする方法はあるでしょうか。
333 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:48:17 ] それ精度の問題じゃないよ
334 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:52:51 ] じゃあ何の問題なんだよ…はっきり言え
335 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 14:55:45 ] numpyあたり単精度も扱ってくれたりしないのかな 使ったことはまったくないが
336 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 17:30:01 ] 浮動小数点数でassertEqualするのが間違いだろ
337 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 18:02:51 ] 間違いってことはあるまい。 浮動小数点数なんてCPUが違うと結果違うのは当たり前だし、 x86なんかFPUを使うかSSEを使うかで結果違ってくるし、 言語によっても浮動小数点数の扱いが広げ方や丸め方が違うし、 最適化のかけ方によっても結果が変わってくるし、 そういうのをテストで弾きたいって意味でしょ? となると、弾かれたのはまさに期待通りなわけだが。