【NGName推奨】Python初心者
おっ、Pythonスレですぅ。
>5 前スレの巫女Pyナースについて一言
7 :
デフォルトの名無しさん :2006/12/15(金) 00:13:44
まだまだいくよぉ〜〜〜!! 巫女みこナース! 巫女みこナース! リスト内包 巫女みこナース!! 巫女みこナース! 巫女みこナース! lambda 一行 巫女みこナース!! 巫女みこナース! 巫女みこナース! Py本粘着 巫女みこナース!! 巫女みこナース! 巫女みこナース! 初心者(復活) 巫女みこナース!! 巫女みこナース! 巫女みこナース! print u"文字化け"巫女みこナース!! 巫女みこナース! 巫女みこナース! メタクラ おっぱい 巫女みこナース!! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 最後にもいっちょー、ハイ! 巫女みこナース!
ぐぐる八分とは姑息だなw
>>前スレ999 > mod_pythonが使えるレン鯖なら、DjangoのBlogとかがつかえるんじゃね? 実際にmod_pythonなレン鯖ってある?
なんか自鯖でやった方がいいような。挙げられたレン鯖しょぼすぎ。
レン鯖である時点でしょぼすぎなんだから仕方ないじゃん。 自鯖立てたほうがあらゆる意味で良いのは当然。
前スレの998です >> 999さん pyblosxomとdjangoを調べてみます 自鯖も考えてみます ありがとうございました
>>> class hoge: ... class moge: ... class hage: ... class fuge: ... class fuga: ... spam = 42 ... >>> hoge.moge.hage.fuge.fuga.spam 42 >>> s = 'moge.hage.fuge.fuga.spam' >>> reduce(getattr, s.split('.'), hoge) 42
dive into pythonの翻訳って、誰もしてないの?
他力本願のクレクレヒキコモリばっかりだなこのスレは。
となりの801ちゃんは非常に読みたい
>>15 >>>class oOo:
... def __init__(self,n):
... self.oOo = 42 if not n else oOo(n-1)
...
>>>s = oOo(8)
>>>reduce(getattr,['oOo']*9,s)
42
初めてのpythonを読んだ時に、 CGIなどの知識を必要とする最後の章は読み飛ばしてしまったのですが、 Dive Into Pythonも読むのに英語の問題以外で前提とする知識はありますか?
一般常識
氏ね
>>24 正規表現、HTML、XML、HTTP、SOAPの章があるけど、同様に読み飛ばせば
よいと思う。
あと、読み始めてたら判ると思うが、機能を説明するためにC、Java、Perl、
VBScriptと比較してたりするので、いずれかの言語を知っていると読みやすいと
思うが、初めてのPythonの前半を読んでる人なら問題なく読めると思うよ。
Dive Into Pythonをざっと読んで、Programming Python 3rd Editionか
Python Referenceの必要な個所をじっくり読むのがよいと思う。
29 :
28 :2006/12/15(金) 18:00:01
あ〜、なんか「思う」がやたら多い文書だなw。 自分もいまDive Into PythonとProgramming Python 3rd Editionを 読んでるところなんで…。
と思う。まで読んだ。
と思う、まで読んだ、と思う。
Python使う奴なんて空気読めない奴ばっかりだよ、な!
33 :
16 :2006/12/15(金) 21:45:14
と思う、まで読んだ、と思う。まで読んだ。
>>17 まじかよw
既に3から5の頭まで読んだんだが。
英語は苦にならないけど、ちょっと内容検索するのに単語出てこなくて手間取った程度の問題なんだよ。
先生!ヒントが間違っていますw 誤:/tech/1166050674.dat 正:/tech/dat/1166050674.dat
>>22 >オブジェクト指向プログラムである為、コードの再利用がしやすい
Pythonの前に日本語の勉強からした方がいいかと。
がんばってくだちい。
>>34 先生! いまさらながらつくってみますた
# tateyomi.py
import re
import sys
import urllib
url_parts = sys.argv[1].split('/')
host, test, cgi, category, dat_no, res_no = url_parts[2:8]
dat_url = '
http://%s/%s/dat/%s.dat ' % (host, category, dat_no)
lines = urllib.urlopen(dat_url).readlines()
body = lines[int(res_no) - 1].split(' <> ')[1].decode('sjis')
body = re.sub(r'<.*?>.*?</.*?>', '', body)
for line in body.split('<br> '):
print line[0]
Python使い出してから日が浅いので、誰か添削してくれるとウレシス
# coding: euc-jp
(ここにはテストを書いたけど省略)
import re, sys, urllib
url_pattern = re.compile('
http:// (?P<host>[^/]*)/test/read.cgi/(?P<category>[^/]*)/(?P<dat_no>[^/]*)/(?P<res_no>.*)')
dat_url_pattern = '
http://% (host)s/%(category)s/dat/%(dat_no)s.dat'
def do_tateyomi(url, index=0):
captured = url_pattern.match(url).groupdict()
dat_url = dat_url_pattern %(captured)
line = urllib.urlopen(dat_url).readlines()[int(captured['res_no'])-1]
body = re.sub(r'<.*?>.*?</.*?>', '', line.split(' <> ')[1].decode('shift_jis'))
return '¥n'.join([line[index] for line in body.split('<br> ')])
def _test():
import doctest, tateyomi
doctest.testmod()
if __name__=="__main__":
if len(sys.argv)<2:
_test()
sys.exit()
print do_tateyomi(sys.argv[1])
↑なんか2chを愛しすぎててきもい
↑ありがとう。
43 :
37 :2006/12/16(土) 08:42:42
>>38 thx! 勝手に参考にさせてもらいます
モジュールとして使えるようにしてあるとことか、doctestしてるのもためになったけど、
特に(?P<name>...)に'%(name)s' % {'name': 'key' }、groupdictみたいな機能が
あるって知らなかったので、これから勉強してみます
lenって変数が定義されてるモジュールで、 len( "hogehoge" )って関数を呼びたい場合、どうすればいいですか?
__builtins__.len("hogehoge") こういう使い方をしないように気をつけるのがPythonic。
上書き定義する前に length = len みたいに別名を付けておくとか。
__builtins__由来のものは(簡単には)再定義できないようにしたほうが良いのだろうな。 Python 3000ではそうなるのかな。
ということは、こんなふうにできるわけか >>> len("hogehoge") 8 >>> len = 88 >>> len("hogehoge") Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: 'int' object is not callable >>> length = __builtins__.len >>> length("hogehoge") 8 できた。
49 :
44 :2006/12/17(日) 04:03:29
ありがとうございます 参考にします
言語の仕様を変えて副作用を増やすより 当たり前のことを当たり前に気をつけることを開発者に求める これがPythonic
python で書くときに問題があることが分かっていて len という変数を使うことに拘る意図がわからん
なんかホント、みんな無理してPython使ってるよねw 使命感にでも駆られているかのように。あるいは催眠術のたぐいか。
>>> from __future__ import braces File "<stdin>", line 1 SyntaxError: not a chance ワロス(www
>>52 YouTubeとかGoogleとかMicrosoftとか,無理してPython使いすぎだよね
Googleなんて作者タソ雇うなんて無理しすぎ
いい物をいいと思って使ってるだけ。無理してPythonの弱点を見つけようと してるのは藻前だろ(wwww
>>54 そこで「俺はこう使ってる。この用途においてPythonはこう便利」っていう体験を語れず、
状況に応じて何だって使いこなす最先端の人間達の例を曖昧に掬い取るしかできない言語が
Pythonなんだねえ。
誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。
PやRとそこが段違いだよね。
?
>>56 >PやRとそこが段違いだよね。
Python使いは成熟しているんだと思う。
PやRを使っている厨房とは違って、人間的に大人なんだよ。
>>56 >誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。
プログラミング言語に「養護」という言葉が出てくる理由がわからないなぁ.
俺は便利に使っている.
世界的に実績がある.
そして,オマエには便利さが分からない.
これがすべてだろ.
>>60 あ、ごめん。
君自身が「PやRを使っている厨房」だったんだね(www
名指しで君の人格をおとしめてしまってごめんなさい(wwwwwwwwwwwwwwwwwwww
>>56 とりあえずメタクラスが便利だから使ってみるといいと思うよ
>誰々も使ってる、何処何処も使ってる、なんてレベルで擁護が終わるのって泣けるよね。 だから、自分がいいと思ってるから使ってるって言ってるだろ(wwww 何がいいのか語るものは持っているが、どうせ何言っても捻じ曲げられるから しない。
このスレにPython厨のスキルや人格への様々な疑惑を投下すると、 返ってくる反応がことごとくその裏付けになるのが面白い。 言語の便利さを疑えば「どう便利なのかが返ってこない」ことで疑惑はより強まり、 人格を疑えば「草がいっぱい生えた」レスが返ってきて疑惑が確定する。 速攻で自分の首を絞めるのがPython流?
44とか47みたいな人は、他の言語を使って経験を積んでからPythonに戻ってくると 新たな発見があって安らぎを感じることができるかも知れない まあ95%無理だろうけど。センスなさそうだし。
>>65 Rubyは知らんけど、自分が使っててPerlよりPythonが勝ってると思うひとつは配列構造の柔軟さだ。
UserData = {('User1','Pass1'): 'User 1', ('User2','Pass2'): 'User 2'}
print UserData[('User1','Pass1')]
これと同様のスクリプトをPerlで書くとどうなる?
>>68 自分もPython を使い始めてけっこう経ったので、Perl のことは
かなり忘れてしまったけれど、
そういう部分でPerl へ勝負を挑んでも、リファレンス使えば
Perl でもあっさりおなじように出来たんじゃない?
(たぶん、Python が常にリファレンスを使用してるというだけでしょ)
自分としては、それよりも、Perl がOOP への対応に関して作戦ミスを
したなぁと思う。
OOP を導入する際、既存の文法へ最小限の命令しか加えないと
いう方針を採っため、めちゃくちゃOOP が難しいものになってしまった。
あのとき、大胆に新たな命令セットを導入すれば、
シンプルで明快な形でOOP できるようにすることも可能だったろうに。
そうすれば、僕がPython を使おうと思うこともなかったかもなぁ。
プログラム言語なんていくつも使えなきゃだめだよ! 好き嫌いというか道具なんだからいくつ使えたって困らないし
>>69 > そういう部分でPerl へ勝負を挑んでも、リファレンス使えば
> Perl でもあっさりおなじように出来たんじゃない?
>
> (たぶん、Python が常にリファレンスを使用してるというだけでしょ)
そこが微妙に違うところで、
確かに
>>68 の辞書UserDataを作るだけなら、Perlのリファレンスを知ってれば簡単に出来る。
しかし、その辞書(Perlで言うと連想配列)のキーを使う場合には
Perlだと連想配列を作った時と同じリファレンスでないとキーとして使えないんですよ。
だから、Perlで単純に
$UserData[['User1','Pass1']]
としてもPythonみたいに値が得られないんです。
漏れは『初めてのPerl』でPerl最高!Larry最高!みたいにかかなり感化されたんだけど 『続・初めてのPerl』読んでリファレンス周りで挫折した。あれは悲しかった・・・ Pythonだと1 < a < 100みたいに書けたりするところも好き
Perlはまわりに使える人たくさんいるけどPythonはマイナーってのがいまいち スクリプトは書き捨てだから自分だけわかればいいけど
>>71 Perl で本当に同じことをしようと思ったら
$UserData{ 'User1' . "\0" . 'Pass1' }
みたいに、各キーの「値」を合成するようなことをしなくちゃいけないってことだよね。これは、アッサリとは言いにくい。(連結文字は、各キーに含まれていないことを確認するとか、機械的にやできん)
リファレンスだと、アドレスを区別するだけだから、同じキー内容だけど、別物の場合、違うモノ扱いになっちゃう。
75 :
69 :2006/12/17(日) 15:58:24
>>71 うーん、
ハッシュ(連想配列)のリファレンスの話?
配列のリファレンスではダメなの?
リファレンスっていっても、
ハッシュ(連想配列)でなくてもリファレンスできるわけだから。
配列のリファレンスの場合のデリファレンスは、
なんたらかんたら [x][y][z]
の形式(x, y, z はそれぞれ添え字)で、3次配列でも100次配列でも
望みの場所のものをどんぴしゃで引き出せたはずだけど。
すでにPerl をインストールすらしてない身で、
あれこれいうのも辛いところながらw
Python は最終的な「見やすさ」のために、 あえて不便の道を歩んでいるように見える。 Ruby は Perl の機能を全て「分解」して、 オブジェクト指向の思想の元に「再構築」してる (構築前後で 1:1 に対応してる)。 だから、Perl で出来たことは Ruby で出来る。 これは正しいやり方の一つだ。 ただ、Perl のゴチャゴチャさを継承してしまっているのも 否めないところだ。 Python は、Perl のあり方をそもそも一旦「忘れた」上で、 1から考え直して「あらたに構築」しているっていう印象がある。 だから、Perl ・Ruby で出来ることが、Python ではなかったり することも多々あるかもしれない。そのかわり、Perl , Ruby では 考えられなかったような点が見直されていて、新鮮だ。
例えば、代入が式ではなく文っていうところ。代入式って、 書く時便利だけど、読むとなった時、実は見辛かったりする。 それを廃したのは、なかなかの判断だと思う。 そのかわり、既存の代入式が必要とされたシーンでは、 それらを使わなくてもよいように、ライブラリとかの方で工夫して、 見やすくなるように配慮する。これは正解のような気がする。 だから、Python のどこが便利だと言われて、答えられないのは、 当然のような気がする。だって、書く時の便利さを捨ててるんだから。 かわりに書き終わった後のソースのスッキリ感や、 書いた本人でなくとも読み易いという長所はデメリットを 補って余りあると思うよ。多分。 (トリッキーなコードを書かれると、引き継ぐ人がたいへんだからね) # これ、あくまで個人的な見解なんで、そんなことないぞ、 # 便利だという反論も他の Python 好きに言ってもらいたいなぁ。
>>72 >Pythonだと1 < a < 100みたいに書けたりするところも好き
をを、知らなかった。サンクス。
>>77 ああ、そういや当たり前すぎて忘れてたが、
if X=1:
・・・
がエラーになることがうれしいな。
80 :
74 :2006/12/17(日) 16:30:26
>>75 >>74 だけど、誤読していていた。キーにリファレンスを入れるというのと勘違いした
(
>>71 もそうじゃないかな)。
言いたいのは、よくある二次元配列のリファレンスによるエミュレーションの、
n 次元ハッシュ版ね。理解した。
# わしの回避策は、awk の二次元配列エミュレーションの真似
ただ、そうすると、一次元部分のハッシュの初期化を最初にしなくちゃいけないというのはあるよね。
その部分の手間が Python では省けるという認識でオケー? >> 各位
日曜日はレベルが低いなぁ
82 :
69 :2006/12/17(日) 16:42:47
自分もなにか
>>71 を誤読していたかな。
要するに、Perl においてはPython と違って、
ハッシュ(連想配列)のキーとして、リファレンスは使えない(使いにくい)だろ、
という話ね。
それに対して、Perlでは
配列でもハッシュ(連想配列)でも、リファレンス作れるし、それの組み合わせも
できる。
3次でも100次でも、n次配列の、どの階層のどの要素でも、
狙い通り取ってこれるよと返事したのだが、
少し話がずれていたね。
自分はもうPerler ではないけれど、たぶんPerler なら、
最初の要素をそういう風にしないで、うまくやると思う。
言語の特性はそれぞれ違うし、それにPerl のリファレンスの仕組みは
Python とは特性が違うけど、十分に柔軟なものと思うよ。
自分としては、Perl の問題点は OOP と思うなぁ。
あれさえ解決していてくれたら、Python は使ってなかった…
>>77 >Python のどこが便利だと言われて、答えられないのは、
>当然のような気がする。だって、書く時の便利さを捨ててるんだから。
Pythonは十分書く時も便利。ジェネレータのおかげで内部イテレータとしても
外部イテレータとしても扱える柔軟さが手に入る。(forループに任せず、next()
で手動でデータを取ってきたいことがある)itertoolsとの組み合わせも便利。
翻ってRubyは内部イテレータしかない。Generatorというライブラリはあるが、
スレッドのトランポリンを使っていて、めちゃくちゃ重い。実用にならない。
Rubyの書きやすさとしてよくメソッドチェーンがあげられるが、Pythonにも
内包表記がありデメリットにはならない。Rubyのブロックは複数行かけるが、
そういうメソッドチェーンはあまり見ないし、そういう場合Pythonだと高階関数
をそばに書いて内包表記に組み込むなどすれば、不便を感じない。
Pythonのスライスはa[1:3]のような表記だが、Rubyにはa[1..3]とa[1...3]が
あり、最後の要素を含む・含まないの違いがある。いつも混乱するので、Python
の方がその点で書きやすい。
>>77 そんなことないぞ。便利だ。w
つか、おまえ糞なエディタ使ってるとかじゃね?
85 :
71 :2006/12/17(日) 17:11:04
OOPやってみようって頃は、もうPerlは見限ってた。
>>80 私の言いたかった問題点は、
>>74 でどんぴしゃですよ。
話は変わるけど、
>>82 > 3次でも100次でも、n次配列の、どの階層のどの要素でも、
> 狙い通り取ってこれるよと返事したのだが、
ただし、もとの配列が全てn次でないと困りますね。
極端な例かもしれないけど、
Python
HASH = {('X','Y','Z'):'xyz', ('X','Y'):'xy'}
print HASH[('X','Y','Z')] #xyz
Perl
$HASH['X']['Y']['Z'] ='xyz';
$HASH['X']['Y'] = 'xy';
print $HASH['X']['Y']['Z']; #データ無し
86 :
77 :2006/12/17(日) 17:22:15
>>84 あー、いやいや書く手間自体はいいんだw。
俺個人としては、別にそれ嫌がってるわけじゃないから。
(だから、最近、Python 好きになったわけだし)
短く書けるか、長く書く必要があるかというのを
「不便」とか「書く時不便」とかいう表現をしちゃったのが
まずかったな。
漏れはとしては
>>83 のような建設的なアピールが
出た時点で、もう思い残すことはない。
Python/Tkinterも何気に便利だよね。簡単なGUIツールならこれで十分かも。 Pythonはネイティブスレッドに対応してるからIOみたく重い処理があっても リスポンス良く組むことが可能だし。
安定していて比較的高速なのも嬉しいかも。いくらLLでも、せっかく組んだのに バグで落ちたりのろのろ動くと悲しい。
pyblosxomさいこーです!! 教えてくれたひとありがとーぉ
ライブラリ入れなくても最初から色々揃ってるのも嬉しい あと文字コード関係で悩まなくて済む
>>90 それは言えるな。
俺は言語的にはLisp系が好き、Pythonは許容範囲、Perlは論外って感じなんだけど、
ライブラリはPythonが充実してるから、実際の仕事ではPythonが一番活躍してる。
92 :
デフォルトの名無しさん :2006/12/17(日) 19:43:21
正規表現で()グループ化して記憶したものを 使う場合はどうしたらよいのか教えて頂けないでしょうか。 例えばperlで置換する場合ですと s/(\d)\s(\d)/ $1$2/ といったように $数字 でよいと思うのですが、 pythonではgroupというのを使えばよいらしいことは 分かったのですがどうしたらよいのか分からずにいます。 re.sub((\d)\s(\d), ??????, ) 誠に恐縮ですがよろしくお願い致します。
>>> import re >>> m=re.search("(\\d)\\s(\\d)"," 2 3 ") >>> print m.group(0) 2 3 >>> print m.group(1) 2 >>> print m.group(2) 3 置換(sub) では、どうするんかは、知らん (もしかしたら、できぬ?)
置換は1番目の括弧の中身は\1、2番目の括弧中身は\2という感じで >>> re.sub(r"(\d)\s(\d)", r"\1\2", "5 6") 56 とすればいいんだけど、こんなとこで聞くよりマニュアル読んだほうが分かり易いと思う。
95 :
92 :2006/12/17(日) 20:09:29
うまくいきました。 本当にどうもありがとうございました。 どうやら自分のにはr"\1\2"の rがなかったようでそれを入れたところうまくいきました。 ちなみにこの r は何を意味するものなのでしょうか? 私の探し方が悪いのだと思いますがマニュアルでは みたことがなかったものでして
96 :
92 :2006/12/17(日) 20:15:47
↓ここでRP言語厨がひとこと
RPG最高。なんでこんな便利な言語誰も使わないの?
皆の者、曲者じゃ!1.5.1じゃ!!>96
昔の資料ってこと?気が付けばhas_keyとかも無くなってく位だし、時の流れって…。
読み込んだデータから、エスケープシーケンスを捨てるのはどんなコードになる?
.pycから.pyファイルを得る方法は何かありますか?
もちろんあります。
とりあえずオライリーのpython本買っとけば間違いないかね?
オライリーでも何冊か出している。もちろん全部買えば心配ない。
真の王道は ・Pythonのソース読む ・俺言語を実装 だよ。
>>108 Tkinterにいまさら感を抱くおいらはwxPythonを研究中
>>110 (゚∀゚)人(゚∀゚)ナカーマ
Tkinterはまともに扱ったことないけど、いろいろGUIツールの評判とか見て
PythonならwxPythonが良さそうだと判断した。
pythonの質問スレがなさそうなので、ここでお尋ねします。 シェルスクリプトの trap signal_handler_cmd SIGINT と同様のことをpythonでやるには、どうすればよいですか? signal.signal(signal.SIGINT, signal_handler_func) はダメでした。
問6.以下の文章を読んで問いに答えなさい。 俺も若かったからさ、昔は後先も考えねえであれこれの(A)に手を 出したもんだ。幼なじみの(B)とも深い仲になっちまってたけど、 俺調子こいててずいぶんひどい仕打ちを繰り返してた。(B)に手前 勝手に使い走りをやらせてる暇で別の(A)をブイブイ言わせたりな。 (B)のやつ、ちょっと不器用なところがあるし、ぶっちゃけ面も古風で 華ってもんがなかった。けどアイツ、うらむってことを知らねえし、 俺が呼び出すといつでも飛んできて甲斐甲斐し世話を焼いてくれた。 なんつーか家庭的ってのかな。ひどいこといっぱい言っちまった気が するけど、(B)はじっと耐えてた。俺が安っぽい(A)ばっか引っ掛けて それなりに痛い目にあってヘコんで帰ってきても、アイツはいつも そっと寄り添ってくれた。俺もなんだかんだ言って結局(B)のところに 戻って来ちまうんだよなあ。俺、アイツの気持ちにとっくに気付いて たのにいいように利用してた。最低だよなあ。まじ最低。逝ってよし つーか。やっぱあれだ、俺、(B)のこと好きだわ。うん。今すぐ会って 言ってこよ。オマエとやり直したいって。 上記の空欄(A)、(B)に適切な語句を入れなさい。(各3点) A: GUIツールキット B: Tkinter  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>115 $python -V
python 2.3.4
$uname -a
Linux my-pc 2.6.9-42.0.3.EL #1 Fri Oct 6 05:59:54 CDT 2006 i686 i686 i386 GNU/Linux
です。
A: おっぱい B: おっぱい
import signal, sys def signal_handler_func(*args): print args; sys.exit(1) signal.signal(signal.SIGINT, signal_handler_func) raw_input() 手元のLinux環境では 2.3.3 だと raw_input() が KeyboardInterrupt エラーを raise、 2.4.2 だと signal_handler_func でトラップ可、 という結果になるなあ。 バージョン依存ってことでFA?
『初めてのPython』はあまり好きじゃない 白飯をいくら喰ってもおかずにたどり着かずにいらいらする せっかくPythonの言語仕様がシンプルなんだから、一通りの概観を得たら さっさとおいしいライブラリの勉強に移行するほうが望ましいと思う そういう観点からすれば、『みんなのPython』→『Dive into Python』お勧め 後者は無料で読めるし、前半総論後半各論(ライブラリ)って構成も実践的でいいよ
手っ取り早いのは 『公式チュートリアル』→ライブラリリファレンスとソース適宜参照しながらとにかく書く だろ
耳にタコができました。
もうある程度使えているから そんな話はどうでもよかったり
どうでもいい、どうでもいい、俺はもう初心者じゃないから、どうでもいい
お、どうした? 紙ってデバイスに価値を感じるか否かだけを、引っ張りつづけて幾星霜。
最後の感じが読めないっす
初心者じゃないとか思ってる奴に限って 基本が抜けていたりする そういう奴の何割が、Pythonのモジュールの仕組みや オブジェクト思考機能 スコープについて完全に理解しているというのか チュートリアルでも書籍でもいいから、いっぺん通して読んでみろ コードのクオリティが高くなるぞ
Dive into Python はそういう意味でおすすめだが 今読むと少々古く感じる部分もあるな。
>>126 Pythonのモジュールの仕組みや
オブジェクト思考機能
スコープについて完全に理解しているというのか
また頭の悪そうな奴が出てきたぞ
仲良くしろよ
現存する全てのPythonモジュールの一覧表みたいなのってどこかにありますか?
また頭の悪そうな奴が出てきたぞ
Pythonスレだからねぇ
ひときわ頭の悪そうな奴が出てきた
いやいや俺こそが
あたまわるすぎ
頭が良いならLispに行ってるからねえ
>>138 分かった気になってる奴の典型だな。
初心者はスキルこそ低いかも知れないが,学習意欲があるだけ可能性がある。
エセ中級者はスキルが低いくせに,分かった気になって学習意欲がない場合が多いので困る。
オブジェクト指向というのはフレームワーク至上主義のことです。 データの流れる枠組みだけを必死に作ってればそれでよいのです。
出来合いのクラスとかフレームワークを使うだけなら,オブジェクト指向なんて覚えること少ないし簡単だよ。 難しいのはオブジェクト指向「設計」な。こればっかりはデザパタ学んでも本を読んでもなんともならない。 設計手法を身につけたいなら,師匠につくなどして実務で経験を積むか,既存のソースを少しでも多く読むしかない。
そこでDB設計ですよ。
>>142 いや、ネタで書いてるだけなんだろうけど、
マジレスぎみに書いておけば、
ruby はそっち方面へPython より意欲的に取り組んでいるようにも
見えるんだよ。たとえば、
Rubyプログラミング+モデリング
http://www.rubyist.net/~keiju/doc/ruby-with-modeling-for-pdf.pdf とかね。
自分の場合は、弟が会計士を取りそうなんで、会計関係のシステムでも
作りたいなと思ってあれこれ考えていたんだが、
Java でやろうかとも思ったんだけど(Java は多少とも経験がある)、
一人しか組む人間がいないのに、Java は苦しすぎると思い、
Python にたどり着いたとこ。
やっぱり大規模なシステム組むときに、オブジェクト指向は欠かせない
からね。
Java は煩瑣な言語だが、そっち方面のドキュメントはたくさん手に入る。
Python はシンプルで明快な文法だが、いかんせんそっち方面のドキュメントが乏しい。
いっそ関数だけで書いてくことにしてしまえば、悩まずに済むんだが、
(その方が早く組める可能性もないとはいえない)
悩ましいところだ…。と、グチを少々書いてみた。
みんなも頑張ってくれ。じゃ。
138が挙げてる類の本、1冊だけなら許容範囲。 2冊以上持ってる奴は出入り禁止ということでどう?
スレッド実装が腐ってるrubyで大規模システムとは勇者ですねw
>>147 そこでdRubyというバッドノウハウ投入
rubyのアドバンテージは日本語扱いだけだったが、最早それすらも他がUTF-8化して消えた。
まあ。 Cやアセンブラの開発経験が豊富な俺にしてみれば、だ。 クラスとかインスタンスとかリファレンスとかは、 全部構造体とかポインタのメタファとして理解できるわけ。 だからオブジェクト指向なんて簡単。 設計手法も根底はCとかと同じだしね。
また頭の悪(ry
from XXX import YYY とした場合に、モジュールXXXに固有の例外をキャッチするにはどうしたらいいんでしょうか。 具体的には、importだけを使った場合に、 import xml.dom.minidom try: DOM = xml.dom.minidom.parseString('python') except xml.parsers.expat.ExpatError: print "XML ExpatError." と処理することを、 from xml.dom.minidom import parseString try: DOM = parseString('python') except ???: print "XML ExpatError." ここで、???に上手く書いて処理する方法はありますか?
parseString だけ import した時点で自業自得 ExpatError を import したくない理由が何かあるの?
>>155 いえ、ExpatErrorをimportすれば(上の例では結局xmlからimportする必要がありますけど)出来ます。
Python一般のテクニックとして、上手く処理する方法があるのか知りたかっただけです。
頭悪いくせに from 〜 import なんて使うなという神のお告げだよ
importがしてることの意味わかってる?
import Tkinterすると次のようなエラーが出ます。 File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.5/lib-tk/Tkinter.py", line 38, in <module> import _tkinter # If this fails your Python may not be configured for Tk ImportError: No module named _tkinter sys.pathは ['', '/usr/local/lib/python25.zip', '/usr/local/lib/python2.5', '/usr/local/lib/python2.5/plat-linux2', '/usr/local/lib/python2.5/lib-tk', '/usr/local/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages'] /usr/sahre/tk8.4とか、/usr/share/tcl8.4とか見てもconfigureファイルないし、 そもそもyumでインストールしてるからconfigureの必要はないと思うし・・・。 あと、yum install tkinterもしてみたけど、結果は同じでした。 ちょっとスレ違いの質問かもしれないけど、どなたか解決法教えてください。
やっぱり自称中級者は基本的な知識が足りないんだ。 入門書嫁。
>>159 _tkinterモジュールがそもそもビルドされていないか
_tkinterモジュールのビルドに失敗しているか
_tkinterモジュールが必要としている何かがインスコされていないか
のどれかだと思われ。
どこのパケジ?
>>163 あれ、yum といいつつ実は Python を野良ビルドしている?
だったら
> _tkinterモジュールのビルドに失敗しているか
こっちの可能性大。
> これってPython-2.5内のconfigure->make->make installではビルドされないんですか?
状況による。
>>164 yum install pythonするとpython-2.4がインストールされませんか?
2.5が使いたかったんでPyJUGからDLしてビルドしたんですけど・・・・。
他に方法があったんでしょうか。
すいません、説明不足だったみたいで。 yum したのは yum install tk yum install tcl yum install tkinter の3つです。 Pythonそのものは上記の通りです。
>> 154 Pythonicさを求めるなら,例外も明示的にimportしておく. from zipfile import ZipFile, BadZipfile try: ZipFile(open('hoge.tgz', 'rb')) except BadZipfile: print 'bad zip file.' どのモジュールから例外が出るか分からなくても,「ある種の例外」の親クラスは共通. try: ZipFile(open('hoge.tgz', 'rb')) except Exception, e: print "exception raised from module %s" %(e.__module__) これはちょっとハックだし,例外が同じモジュールで定義されていなければうまく動かない. from zipfile import ZipFile try: ZipFile(open('hoge.tgz', 'rb')) except Exception, e: if e.__module__ == ZipFile.__module__: print 'same' else: print 'different'
>>155 何でそんなところでハマるのかな(;´Д`)
>>166 ぼくちゃんはPython2.5のtkinterと2.4のtkinter、どちらが使いたいのかな?
yumでインストールしたtkinterは2.4と2.5のどちら用かな?
170 :
166 :2006/12/19(火) 20:28:27
和気藹々
まともな人間なら普通に動かせるものが動かないという場合、人間のほうが まともでないことをまず疑うべきなんですね。
にんげんがいちばんバギーだからな。
「機械から入力を行うようにプログラムされたソフトウェアは人間から入力を受けると必ずクラッシュする」
色々とレスありがとうございます。 もう一度ビルドしなおしてみようと思います。
さて、無能で英語力もないクレクレ君の俺は ゆっくり日本語訳されるのを待つとするか。
180 :
デフォルトの名無しさん :2006/12/21(木) 16:12:04
Cygwin 上の Python から ODBC を使うにはどうしたらいいでしょうか。
Cygwinを窓から投げ捨てる
Instant Hackingの radius = input("What is the radius?") print radius*radius*3.14 のコード実行すると SyntaxError: unexpected EOF while parsing というエラーになるんだけどなぜでしょうか?
183 :
デフォルトの名無しさん :2006/12/21(木) 21:07:08
ElementTreeでtextを抽出しようとしても 最初にサブエレメントが出てくるところまでしかとれないよね。 "激ウマ<BR/>ラーメンです。"ってあっても 激ウマの部分しかとれないみたいな。 サブエレメントの後ろのtextも取り出したいんだけど なんかいい方法ない? 以前、DOMでやってたときもおんなじよーな問題がでてた記憶が....
どやてじこしたのかかこよ
>>182 ですが
PyDev上のコンソールから入力するとエラーでるけど、DOSプロンプトでpythonコマンドやcommand line使うとエラーにならない・・・
PyDevの問題?
そだよ
187 :
sage :2006/12/21(木) 21:54:30
どうやって実行したのか書こうよ なるほど・・・
>>183 「ラーメンです」を br 要素の後ろに続くテキストって考えれば
element.tail で取れます。
>>>import xml.etree.cElementTree as ET
>>> elem = ET.fromstring(u'<p>激ウマ<br/>ラーメンです</p>')
>>> print elem[0].tail
ラーメンです
190 :
183 :2006/12/21(木) 22:21:17
188,189 無事解決したよ。アリガトー!! マジ感謝
だいぶよむだけで、ぜんぶわかった
Windowsのコンソールから起動して、 import sys unicode(sys.argv[1]) ↑こんな風にしたら、 UnicodeDecodeError: 'ascii' codec can't decode byte 0x83 in position 0: ordinal not in range(128) こういわれてしまいました。 unicodeというかUTF-8にしたいのですが、どうすればいいでしょうか。 よろしくお願いします。
193 :
192 :2006/12/22(金) 15:50:48
あ、書き忘れ。 第一引数には、「エンコード」という文字を渡してます。 > python.exe hoge.py エンコード ↑こんな感じ
195 :
デフォルトの名無しさん :2006/12/22(金) 17:03:57
>>195 何かエラーが出るの?
エラーは無いけど思ったのと違う結果になるの?
そもそも何も起きないの?
もっと具体的に書いてくれ
197 :
195 :2006/12/22(金) 18:06:51
何もおきずに止まってしまう。 エラー 実行に失敗しました(例外)が発生しました
>>192 sys.argv[1](この場合 Shift_JIS 文字列)の
エンコーディングを明示的に指定してやる
sjis_str = sys.argv[1]
unicode_str = unicode(sjis_str, 'sjis')
unicode_str = sjis_str.decode('sjis') # 上と等価
デコードする際のエンコーディングを明示的に指定したくないなら、
Python2.5/site-packages/sitecustomize.py に以下を記述
import sys
sys.setdefaultencoding('sjis')
unicode() の第二引数や、encode()、decode() の第一引数を省略した場合に
defaultencoding が使われことを知っておくと混乱しないよ。
つ Jython
>>200 灯台下暗しでした。すみません。ありがとうございます。
大正デモクラシ
python cookbookって日本語版出るの?
unix(FreeBSD)で popen2 で子プロセスを呼んで 状態監視(vmstat -w 1 とか netstat -w 1) をしたいのですが, 親プロセスが終了するときに子プロセスを どうやって終了させればいいのか良く分かりません. popen2 が返してきた child の child.pid を os.kill すると sh -c netstat -w 1 の方は殺せるのですが, popen が /bin/sh 経由で呼び出した実際のプロセスの方は 生き残って親プロセス丸ごと終了できなくなってしまいます. コマンドラインでやるみたいに os.system で ps aux | grep netstat | awk '{print $2}' なんていう python っぽくないダサい手段で探して殺すというバッチイ方法じゃない 良い子の方法はどうすればいいのでしょうか?
205 :
204 :2006/12/23(土) 23:45:10
これではだめだね すまん
os.wait()
210 :
204 :2006/12/24(日) 09:44:44
永遠に終了しないコマンドは wait() しても仕方ないですよね? それとも他の使い方があるのかな?
212 :
デフォルトの名無しさん :2006/12/24(日) 13:31:04
そもそも、強制終了がデフォルトというのが、おかしいのと違う? ある条件を満たせば、自分で終了するとしとけば、 wait() しとけばいいだけと思うし。
213 :
204 :2006/12/24(日) 14:11:09
すみません, child = popen2() => 終了 child.fromchild.close() child.childerr.close() でいいみたいです. これをやっているつもりだったのですが, 終了条件投入関数が実行されていませんでした. やり方はこんななんですが: sw = status_watch('netstat -w 1') sw.run() ## time.sleep(10) sw.finish() ### いつまでも実行されない??? (続く)
214 :
204 :2006/12/24(日) 14:13:58
(続き) class status_watch(threading.Thread): def __init__(self, command ): threading.Thread.__init__(self) self.command = command self.quit = False def run(self): self.child = popen2.Popen3(self.command, 1) self.child.tochild.close() # don't need to talk to child outfd = self.child.fromchild.fileno() errfd = self.child.childerr.fileno() makeNonBlocking(outfd) # don't deadlock! makeNonBlocking(errfd) while 1: ready = select.select([outfd,errfd],[],[]) # wait for input ### do something if self.quit: return select.select([],[],[],.1) # give a little time for buffers to fill def finish(self): self.quit = True self.child.fromchild.close() self.child.childerr.close()
215 :
デフォルトの名無しさん :2006/12/24(日) 14:14:05
Unix Programming FAQ の1 プロセス制御 の章
http://www.adl.nii.ac.jp/~moro/unix-programmer/faq-j_2.html#SEC26 に、
1.16 どうすればプロセスの子孫を全て殺すことができますか?
というのがあるけど、その中に、
このための完全に一般的な手法はありません。
(略)
解決法としてそのサブプロセスを新しいプロセスグループに入れ、killするとき はそのプロセスグループをkillすることができます。
(略)
プロセスグループを作るのに望ましい関数はsetpgid()です
とある。
で、Python ライブラリ・リファレンスのp274に
setpgid(pid, pgrp)
システムコールsetpgid() を呼び出して、pid のid をもつプロセスのプロセスグループid をpgrp
に設定します。利用できる環境: UNIX
というのがあるが、これ使えないかな?
216 :
204 :2006/12/24(日) 14:18:35
>212 いや netstat, vmstat とか 「signal 食らわない限り無限ループ」 を読みたいんで... python 側は >214 に書いたように "終了()" を呼んで 後始末をさせようとしているんですが, 自分が思っているように動かないんですよね... >214 に書いているうちの,self.quit 変数が True に変わってくれないんです... (while loop で print してみてても変わってない...ナゼ???)
217 :
204 :2006/12/24(日) 14:42:16
すみませんすみません... 本件とは別のところで エラーを吐いて終了処理(finish())が きちんと実行できていなかっただけみたいです... curses と組み合わせて書いていたんですが, curses の "裏画面" のエラーメッセージとかを 見逃してました...
おととい買ったエロゲがPython2.3だった
詳細>218
メリークリスマス!
>218 kwsk!!!!
./ GR.dll, KEY.dll, ksound.dll python23.dll, run.dll, SND.dll, WIN.dll nanami.pyc, run_base.pyc nanami.exe DLLs/ _sre.pyd, bz2.pyd, datetime.pyd mmap.pyd, parser.pyd, pyexpat.pyd select.pyd, unicodedata.pyd winsound.pyd, zlib.pyd itp/ *.pyc Lib/ site-packages/ JapaneseCodecsだけ nanami/ *.pyc data/ spp/ *.pyc stdADV/ *.pyc こんな構成。 他にはプロテクト関係のソフトが入ってる。 エロゲーでライセンスキーの入力を求められたのは初めてだw これ以上は分からんがな(´・ω・`)
key.dllってスパイウェアじゃねぇの?
>>222 それって ef?
シリアル入力があるって聞いてるけど.
.pyに関連付けるもうちょっとシンプルでかっちょのよいアイコンないっすか?
家紋とかはどうよ
ジョルジュ長岡のAAでも張っとけ
PythonからWSH呼ぶのと win32com.client.Dispatch(.."..") は同じなの?
>>218 おーい、結局そのエロゲは何だったんだ?
>>218-224 を見て、「ef」というエロゲの体験版を探してきてダウンロードして
みたのだが、Pythonとは何の関係もなかった。GUIの作り方の参考になるかと
思ったのに。腹が立ったので即削除。
>>233 ぐぐったらパティスリーの待宵草ってのはPythonらしい。
メーカーサイトにはその辺何もなかったから実際どうかはしらんが。
>>234 ありがとう。その「待宵草」にも体験版はあるみたいだ。
しかし、よく考えたらエロゲに限定する必要はなかった。
つうかむしろ、エロゲでないほうが良かった。自分にはちょとつらいわ。
どう見ても3流エロゲメーカーです。 ありがとうございました。
pythonってマルチバイト文字列を変数に入れるとき、いちいち str = u"日本語" みたいにしないといけないの? めんどくさくない?
めんどくさくない
>>238 たとえばマルチバイト文字がシフトJISならファイルの先頭行に
# coding: shift_jis
を入れれば u を入れる必要はなくなるよ。
# coding: utf-8 for char in u'やらないか': print char, #=> や ら な い か for char in 'やらないか': print char, #=> 文字化け
>>241-242 240の言っていることは正しいんでは。
str = u"日本語".encode("sjis")
と書くのと
# coding: sjis
str = "日本語"
と書くのは等しいわけだから。
バイト列(文字列ではなく)を得る方法としてはまったく正しい。
encodeするって話だったっけ?
つまり
>>238 の質問内容だけで回答しようとする面子はみんな初心者。
247 :
デフォルトの名無しさん :2006/12/27(水) 10:19:38
うーんと、 # -*- encoding: mbcs -*- じゃなかったっけ? 入門書、読み直した方がいいかな? 対話モードでも使えりゃいいんだが。ていうか、 うちは対話モードも特段設定しなくても、化けはしないけど。 ただ、あの兇悪なIDLEだけは許せんなぁ。 あれは、utfからデフォルトのエンコーディングに 戻してないんだろ。 いいかげん、向うの連中もそれくらいの初歩的バグに 気づいてほしいもんだが、無理だろなー。
>>246 何もしようとしないのはみんなヒキコモリ。
トラブルを避けるためには、ASCIIコード以外を含むソースファイルには必ず正確な encodingを記述したほうが良い。(mbcsは正確なencodingではない) また文字列についていろんな処理をするなら、できるだけUnicode文字列を使うべき。 つまり '文字列' よりも u'文字列' を使うべき。 この2つは基本的には別の問題。(後者には例外も存在する) Python 3000ではUnicode文字列だけになるらしいので、もうちょっとすっきりするかも。
以上、ヒキコモリ代表からの意見でした。
>>249 >Unicode文字列だけ
byte型を使えば他エンコードの文字列を扱えるんだぜ?
252 :
デフォルトの名無しさん :2006/12/27(水) 14:56:51
明示的な方法でない utf-8 への変換でうまくやれてるのは、 実質的にはJava くらいなんじゃないの? Perl なんかでは(もう2、3年前のことしか知らないが。 5.8かな) 明示的な方法でなく自動というか勝手に utf へ変換が 行われるんだが、それがために問題が生じていて、 どうするか大問題になっていたと思う。 つまり、標準で日本語をutf へ変換するモジュールが 入ってるんだが、それとは別にPerl 本体が勝手にutf に変換してる。 ところが、Perl 本体の方は無自覚に(日本語のsjisかeuc かとか気にせず) やってるから、それは内部的には的外れなutf に変換されており、 変換モジュールの方は、sjis ならsjis があればutf へ変換する というものだが、その時点では内部的に的外れutf しかないから 全然変換できてないというものだった。 あれからその問題がどうなったか知らないが(たぶん、そのままかも)、 Java 以外の言語で、非明示的な方法を使うものは、 みんな苦しんでるんじゃないかと思う。 むしろPython は、明示的変換を採用したおかげで うまく問題を回避してると思う。 sjis のままだと、正規表現とか誤動作するが、おおかたの人は そんな問題に遭遇することもないかもしれない。
254 :
デフォルトの名無しさん :2006/12/27(水) 17:02:31
>>253 > use encoding 'shiftjis'
> などとして、Perl に処理させる前にソースを UTF-8 に
違う。そうじゃなくて、
その動作それ自体が、そのようになってなくて、
モジュールが働く前に、Perl本体の方の勝手変換が
効いてしまっている という話で、
当時は大変な問題になっていた。
ただ、その後の話は自分は知らない。
だから、Python が明示的変換を採用しているのは
賢明だとその頃は(今もだが)感じた。
ヒキコモリだから年末年始ヒマなのはわかるけど、 年に一度の大掃除くらいちゃんとやれよ。
>>255 おまえがな(WWWWWWWWWWWWW
>>255 年末年始くらいマッタリ過ごせないのはITドカタくらいだろ
今日も元気に掘った穴埋めてるのか????
そんなにムキになるなよ。掃除ちゃんとやれって言っただけだろ。
たしかにいちいち全部u書くの面倒だな 書かないとlen("あ")が2とか返すだけで一応動くみたいだけど
一応動くからいいや、と思ってるとfindとか使って痛い目に遭う。 一見動いてしまうことも多いので却ってたちが悪い。
261 :
デフォルトの名無しさん :2006/12/27(水) 21:08:09
いや、だから正規表現とかで誤動作してもいいなら、 なにも問題ないわけで、 どうせ誤動作したって、人が死ぬわけでもないしと思えるなら、 それもありかもしれない。 ただ、Perlとかでsjisで平気でやってる人たちは 誤動作問題知らないんじゃないかなぁ。 その仲間に入るか入らないか、という事でしょ。 だいたいこの問題、Java以外ではスマートに解決はできないと 思われ。
基本的には u 付ければずっとマシな状況になるんだから、よくわからないなら u 付ける 癖にするのが無難だと思う。もちろん「ニセUnicode」にならんように最低限encodingくらい はちゃんと指定しておくのが前提。
バイト列で日本語を扱うことに意外と消極的なんだね、みんな。 俺は結構好きだ。2.0 未満の頃はバイト列しかなかったしね。 ついこないだまで n = len(s) の代わりに n = 0 for c in s: if c < "0x80": n = n + 1 else: n = n + 2 みたいなことを当たり前のようにやってたわけだ。 (補助漢字? 半角カナ? (∩゜д゜)あーあー聞こえなーい) 正直UnicodeマンセーだけどUnicodeは万能じゃない。要は適材適所。
> 2.0 未満の頃は 1.6のことを忘れていたw
"0x80" → "\x80" だた。連投スマソ
>>263 俺もやってたけど、嫌な思い出なので早く忘れたいのよ。w
万能じゃないけどUnicodeのほうがマシなのは確かなので、ちゃんと使おうよ派だな。
emacsじゃないなら # -*- encoding: hoge -*- って丁寧に書かないで # coding: hoge でも同じだったっけ。
いまさらハートマークも扱えない文字コードには戻れないし
さういふ貴君もメエルはISO-2022-JPでおくつているのだらう。
>>258 大掃除なんてクリスマス前に終わらせた
今度は君の番だ
がんばれよ、社内ヒキコモリのITドカタ君(w
ヒキコモリとかITドカタってそんなに劣等感を煽る言葉なのか。
言われる側の劣等感というより、言う側のよくわからない熱さが奇妙で 色々とからかわれちゃうのでは。
>大掃除なんてクリスマス前に終わらせた 正体を現わしたな、真正ヒキコモリ! まともな社会生活を送っている者には クリスマス前に大掃除を終わらせるヒマなどない! 悪霊退散!!
>>274 自分にヒマが無くても、世の中にはお金で解決できることもあるんだよ
頑張れ、低賃金のITドカタ君(w
>まともな社会生活を送っている者には >クリスマス前に大掃除を終わらせるヒマなどない! いかにも短絡的で,コミュニケーション能力低い感がにじみ出てるな. これは本物の社内引き籠もりかもしれん.
Zope関係者、自称初心者ときて次はヒキコモリ同士の抗争か。 なごやかな2006年だったな。
ハハハ、こやつめ、ハハハ
>>276 > これは本物の社内引き籠もりかもしれん.
就職してると思うなんて、随分過大評価するんだなw
就職の話、掃除の話、低賃金の話はなどはそれぞれ適当な板・スレでやりましょう
みんPyの作者に粘着してたZOPE関係者、最近見ないな。 「しっぱい」が売れなくて、のたれ死んだか(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
サウンドデバイスドライバのオブジェクトを取得するにはどうすればいいの? linuxやsunではaudioopモジュール等が用意されているみたいなんだけど、 win用が見当たらない。。 ちなみになるべくマルチプラットフォーム向けにと考えています。
マルチプラットフォームで使える抽象化されたオーディオデバイス。 贅沢な時代になったものだな。 ついこの間まで日本中が「欲しがりません。勝つまでは。」と言っていたのに。
まずプラットフォーム判別して、その後適材適所のモジュール使って オブジェクト渡してやればいいかなーって思ってるんだけど。
ぱいがめは使えないのかな?
要はwdmオブジェクト取得したい。 教えてエロいひと
287 :
デフォルトの名無しさん :2006/12/28(木) 21:38:50
>>282 俺はそっち方面はあんまり詳しくないけど、
そういうのは、Pygame を通して sdl を使うんじゃないの?
そんなことを聞いた覚えが。
Pygame とか python sdl とかでぐぐってみたら、
情報ひっかからないかな。
288 :
デフォルトの名無しさん :2006/12/28(木) 22:16:36
>>281 >「しっぱい」が売れなくて、のたれ死んだか(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
クラス定義にdefを使うと書いてあるクソ本が売れるわけがない(wwwwwwwwwwwww
ビルトインのExceptionを継承しました。 try: raise DerivedException( "Exp" ) except Exception, E: print E.message: で、結果が >Exp という風にしたいのですが、 DerivedExceptionのコンストラクタを呼ぶのを Exception.__init__( "msg" ) とすると TypeError: descriptor '__init__' requires a 'exceptions.Exception' object but received a 'str' となります。 どうすればいいですか?
覚え書きだけど
try:
raise DerivedException "Exp"
except Exception, E:
print E
ってな感じじゃなかったっけ?
>>285-288 試してみます。ありがとう
x raise DerivedException "Exp" o raise DerivedException, "Exp"
raise Exception("hogehoge") って一般的じゃない?
294 :
デフォルトの名無しさん :2006/12/28(木) 23:51:19
すまん、ただ俺がこの方法を良く使ってただけ。
>>293 の方法では、たぶんこれじゃない?
class DerivedException (Exception):
def __init__ (self, msg):
Exception.__init__ (self, msg)
>>282 自分はWin用にctypes使って、実処理はDLL作っている。
C/C++なら大量な情報がネットに転がっているんで作りやすい。
クロス環境は適当なconstant変数つくって分岐させるのが一番楽かと。
>>295 出来ました。ありがとうございます。
selfを第一引数に持ってくるんですね・・・
みんPyの作者に粘着してるZOPE関係者に粘着してるのはみんPy関係者ですか?
みんPyの作者に粘着してるZOPE関係者に粘着してるのはみんPy関係者ですか?
Pythonのインストール方法ってPythonディレクトリ内で #./configure #python setup.py install でいいよな?
./configure; make; make install だろ普通
./configure && make && sudo make install だろ普通
インストーラをダブルクリックだろ、普通w
python-2.5-macosx.dmg をダブルクリックかな。
>>302-303 thx.
_tkinter moduleの有効化ってどうすんだ?
Modules/Setupの_tkinter moduleあたりをUncommentするんじゃないの?
これした後に make するとものすごいエラーが出るんだけど。
./Modules/_tkinter.c:2974: 警告: スカラー初期化子内の要素が多すぎます
./Modules/_tkinter.c:2974: 警告: (near initialization for ‘moduleMethods’)
./Modules/_tkinter.c:2995: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘{’ token
./Modules/_tkinter.c:2990: error: declaration for parameter ‘event_tstate’ but no such parameter
こういうのがいっぱい。
最後一行に
./Modules/_tkinter.c:3165: error: expected ‘{’ at end of input
./configure --with-tkinter だろ多分
クソ本作者は粘着カキコなんてしてないで ちゃんと大掃除しろよ!!
はしゃぐなよw
lista = ('a','b','c') listb = ('1','2','3') listc = ('A','B','C') def go(amax): for i in lista: for j in listb: rid = str(amax) + str(i) + str(j) print "%s" % rid def ge(amax): for i in listc: print "%s start" % (str(amax) + i) go(str(amax)+i) print "end" ↑をa.pyで保存して、a.ge(0)で実行で、 0Aa1 0Aa2 . . . 0Cc3までいく途中、例えば0Bb1でエラーで止ってしまった場合、次の0Bb2から 始めるにはどうしたら良いでしょうか?lista[開始位置]、listb[開始位置]と するしかないのでしょうか。ご教示お願いします。
どこまで終わったかを覚えておいて 途中から再スタートできるようなプログラムにすればいいんじゃね?
失敗しても再チャレンジでき(ry
313 :
310 :2006/12/30(土) 06:22:40
よく解りません。もう少しヒント下さいっm(_ _)m
>>310 ループの中に置く continue と、
例外処理( try, except, raise )あたりを調べてみるといいよ。
continue ならこんな感じ
list_a = [1, 2, 3, 4, 5]
for elem in list_a:
if elem == 3:
continue
print elem,
1 2 4 5
316 :
デフォルトの名無しさん :2006/12/30(土) 13:17:31
トリプルクォートで括ったときに、 def foo(): s = """ Hello World """ こんな感じでインデックスが崩れるのはどうにかならないんですか?
>>316 何のインデクス?
てかそのコード片にインデクスは使われていない
ように見えるのだが。
318 :
316 :2006/12/30(土) 17:26:26
ああ、インデクスじゃなくてインデントか。 見間違えた。 勘違いスマソ。
319 :
316 :2006/12/30(土) 18:07:17
ごめんなさい、インデントとインデックス書き間違えました。 要はトリプルクォートでくくった文字列で改行したときに、 行の先頭に文字が来るのが不細工で嫌なのです。 文字列もインデントで整形したいなと。
画面に表示するときに、一行目以外は\tを一個取り除けばいいんじゃね 俺はこっちのほうが不細工で嫌だけど
>>320 確かhelp()とかもdocstring出力するときに
そんな感じでやってるよね。
というわけでトリプルクウオート内では
インデント入れて書いて、出力時に整形に一票。
タブ一個取り除いても変数定義分ずれるんだな 結構面倒くさくないか トリプルクォート使うときは毎回一行目は改行することにして、 一行目をとっぱらうとか?
323 :
316 :2006/12/30(土) 20:39:01
特にこれといった良い方法はないんですね。 取り合えず現状のままで我慢しときます。 皆さんどうもありがとうございます。
"""\ foo bar """
325 :
310 :2006/12/30(土) 22:22:16
>>314 ありがとうございます。実はlista,b,cと0を組み合わせてリストの一つ一つを
パースしてるのですが、ADSLの回線切れで以下のエラーが起こります。
urllib2.HTTPError:HTTPerror 502: Cannot Connect
回線が繋がるまで待機するか、処理を繰り返すか、何か方法がないでしょうか。
エラーの時の挙動をどうするか聞かれても。。。 「仕様書を読め」「自分で決めろ」としか。。。
327 :
310 :2006/12/30(土) 23:34:31
>>326 という事は、回線が切れても繰り返すか待機するかの処理ができるという事
ですね。頑張ってみます。
328 :
デフォルトの名無しさん :2006/12/30(土) 23:51:30
slimeパターンを開発しました class Slime: def split( self, *args, **keys ): return self.__class__(*args, **keys) class Xxxx(Slime): blah... x = Xxxx(*args,**keys) ... ... ... y = x.split(*args,**keys)
>316-324 を読んで マニュアルとにらめっこしつつ def triplequotes(cut txt): ls = [] for s in txt.splitlines(): ls.append( s[cut:] ) return "\n".join( ls[1:] ) …というコードを書いてみた。 あんまり自信ないけど、コレで良いのかな? 他言語は触ったりするけど Python の作法に中々慣れないよ〜
330 :
329 :2006/12/31(日) 00:25:51
やっちまったorz iMonaの半角カンマ→改行の仕様忘れてました…
wxPythonでGUIプログラミングを始めようと思っています。 XRCedでwxTextCtrlを置いて、そのfont指定を有効にしてプレビューすると 12:16:47: PyAssertionError: C++ assertion "wxAssertFailure" failed in ../src/common/string.cpp(1070): Error converting multi-byte string to a wide-character string 12:16:47: Error loading resource と表示され中止されてしまいます。 またfont指定しないでプレビューすると、実際に日本語を入力しても文字が豆腐になってしまいます。 日本語が一切表示できなくて非常に困っています。どなたかお助けください! こちらの環境 Mac OS X 10.4.8 Python 2.3.5(プリインストール) wxPython 2.5.3.1(プリインストール)
332 :
デフォルトの名無しさん :2006/12/31(日) 13:01:43
winXPでpython使ってます。import resource とするとそんなパッケージはないと エラーメッセージがでてくるのですがwinXP用のresourceはどこかに落ちてないで しょうか?
>>332 あたらしいバージョンのPythonに付属してくるのではないでしょうか?
resourceのヘルプに"Availability: Unix."と書いてあるじゃないか
Unicode版のwxPythonをインストール。
337 :
デフォルトの名無しさん :2007/01/01(月) 00:16:10
>>331 あの、掘り炬燵の方がいいよ。
経験上。
>>336 19ぐらいでしょ。そういう楽しいノリのまま大人になってほしい。
perlで挫折するか普通? ま、どうでもいいけど。
ほっておいてよれ
やれ
>339 私はPerlやめてPythonに移ろうか考え中 長いコード書こうとして挫折したよ
言語習得で「挫折」って、俺的にはよーわからん現象なんだよな。 他人との競争に負けたとか、経済的に続かないとかいう理由の挫折は人生に多々あるが、 やりたくて始めて、今でも好きなだけやってりゃいいものを勝手にやめて挫折って、 なによそれ、みたいな。 「やれる自分を夢想する」のが好きなだけであって、本当はやりたくないんじゃないかな。 プログラミングを。 プログラミングが好きなら、オナニーをやめるのと同じくらい学習やめるのも困難だと思うが。
344 :
デフォルトの名無しさん :2007/01/01(月) 07:46:44
Perlで長いコードを書くには、 全部をサブルーチンで組み立てたらいいよ。 (要するに、C言語のつもりになって、メイン部のサブルーチンを設け、 そこから呼び出すサブルーチンだけでプログラム全体を組む。 そのとき、変数はグローバル変数は一切使わず、ローカル変数 my のみを使う というやり方。いわゆる構造化プログラミングだけど) Pythonへ移行するなら、その前にJavaをちょっとだけかじった方がいいよ。 というのも、現状ではPythonの書籍だけではオブジェクト指向の概念を 理解するのは難しいから。(Python自体はオブジェクト指向でなくても組めるけど) Javaをちょっとだけやって、そのとき、インプリメントだとエクステンド だのえらい面倒だなと思ったら、Pythonを使い始めたらいいと思う。 オブジェクト指向してても、オブジェクトを直にコードに埋め込んだりするなら、 構造化とさして変わるとも思えないし、 そこまでやらないなら、Python使う意味も薄いと思うから。
数学で「挫折」が理解できない人もいるだろうね
どうでもいいが
>>336 は12くらいだろ…
346 :
デフォルトの名無しさん :2007/01/01(月) 09:50:16
>>336 の場合、
よく読んでみると、プログラムが目的なのではなくて、
エロサイトについての情報収集をしたい、
それには plagger というツールが便利のようだ。
それはperl で書かれている。
だからperl をやってみた、という流れみたいだよ。
その調子だと、
Python やってみた。さっぱりエロサイトの情報が
集められない。つかえない、という結論になるような。
すべての価値基準が、エロサイトの情報収集にどれだけ
役立つかに基づいているらしい。
いちおう
>>336 になり代わって僕が聞いておこう。
数日前からPythonを使い始めました。
どうやったら、Pythonでエロサイトの情報が集められるか分りません。
誰か教えてください。よろ。
えろサイト収集ならどう見てもperlだろ。 pythonでえろサイト用スパイダーのフレームワークでも書くのか? urllib/2はバグだらけでまともに使えるのはhttplibかsocketだけだぞ。
え?! バグだらけなの?
ぶっちゃけ zsh + wget でほとんどは片付くと思うのだが... > エロツール perl だと謎の偽装ツール系も対処するライブラリとかがあるのかな? だいぶスレ違いになってきたか…
>>336 クローズドソースでしか書かない著作権馬鹿より数倍まし
353 :
デフォルトの名無しさん :2007/01/01(月) 13:25:44
>>353 それ読んでも、Plaggerに一向に魅かれないのは
俺の感覚が鈍っているのか、そこの例がイマイチなのか、
どっちなのだろうか。
ちゃんと 「エロい例」 で示してくれないと駄目だよな
>354 curl ってなんか単純に url な jpg を持ってくる っていうのがよくわからんかった記憶が。 一々 -o 指定か stdout に吐くしかなくて... wget に対するアドバンテージって何なの?
perlはそこそこやるんですが、pythonに興味持って、 いま勉強中なんだけど、もしかして無駄?
curlってIrvineみたいだな
逆っす
>>360 今ならPerlやるよりPython覚えたほうがいいよ
Pythonのほうが圧倒的にプログラム書きやすい
> 今ならPerlやるよりPython覚えたほうがいいよ > Pythonのほうが圧倒的にプログラム書きやすい そうなんだ! 書きやすいって、たとえばどんなかんじで書きやすいの?
俺の場合、仕事でPython使ってるけど 書いてて楽しいよ。
いまからやるならpythonよりrubyだよ
Ruby遅いんでPythonに乗り換えた
実行が早いだけなら、今でもperlに見所あるんだろうかね
369 :
デフォルトの名無しさん :2007/01/02(火) 08:54:08
>>368 構造化プログラミングまででいいんなら、
Perl に不足するところはないと思うけどねぇ。
だいたい、総じてPython の方が書きやすいといっても、
正規表現とかPerl の方がやりやすいでしょ?
出来合いのモジュールも多いし、とっつきやすいし。
ただ、構造化プログラミングでは役不足で、
オブジェクト指向の助けが必要だと感じるなら、
やっぱりPython の採用を考えるべきだと思う。
ていうか、Perl のオブジェクト指向がも少し使える
ものだったらなぁ。
Java よりややこしいのでは、スクリプトでやる意味がないもん。
別に自分(達)内ルールをしっかり決めてやればpythonのオブジェクト指向も perlのオブジェクト指向も大して出来ることは変わらないと思う。 組み込みメソッドとかの関係で気分的な差はそこそこあるかもしれないけど 本質的な表現力の差は無いと思う。
371 :
デフォルトの名無しさん :2007/01/02(火) 10:14:08
Perl の場合、単純なクラスの作成でも、ハッシュのリファレンスとか 使ったりして、もうそれだけで疲れ果てちゃうんだよね。 以下は、Python でのクラス作成の雛形めいたものだけど、 シンプルなキーワードと普通の関数だけで作れるのが分ると思う。 class my_class(object): def __init__(self, v): self.__value = v # 加算 def add(self, v): self.__value += v # 減算 def sub(self, v): self.__value -= v def set_value(self, v): self.__value = v def get_value(self): return self.__value obj1 = my_class(1000) obj2 = my_class(1000) obj1.add(10) obj2.sub(30) print obj1.get_value(), obj2.get_value() (実行結果) 1010 970
372 :
371 :2007/01/02(火) 10:26:54
見にくかったので、もう一度、Python のクラス作成の雛形ね。 class my_class(object): def __init__(self, v): self.__value = v # 加算 def add(self, v): self.__value += v # 減算 def sub(self, v): self.__value -= v def set_value(self, v): self.__value = v def get_value(self): return self.__value
ま た お っ ぱ い か !
そのクラスは単なる変数w
375 :
373 :2007/01/02(火) 11:34:18
うわあ、壮絶な誤爆をしてしまった・・・・・・ めちゃくちゃ恥ずかしいorz
いや、おっぱいとぱいそんは切っても切れないので、あながち誤爆でもないぞ!気を落とすな!
>370 >別に自分(達)内ルールをしっかり決めてやれば やっぱりそういう前提条件が付くということこそが 致命的な弱点だと思う > perl
379 :
デフォルトの名無しさん :2007/01/02(火) 13:15:42
>>370 Perl の場合、クラスの作成方法それ自体が複数あって、
自分が知らんやり方されたら、それが正しいのやら間違っているのやら
さえ、よく分からなくなってしまう。
それに、ハッシュのリファレンスとか駆使しなきゃいけないから、
単なる特殊記号(バックスラッシュとか)がすごい大きな意味を
持っていて、バグッたときとか、なにが起きているのか判断するのが
容易じゃない。
そもそも、クラスがなんで、コンストラクタがなんで、
オブジェクトやインスタンス、
フィールドやメソッドがなにを意味していて、
オブジェクト指向がどういうことなのか、ということを
理解している人がほとんどいないように見える。
というのも無理がなくて、
Perl でオブジェクト指向するのは、難しすぎるんだって。
(まー、Python でもオブジェクト指向分かってない人はいそうだけど。
結局、Java やって覚えるのが一番簡単だよな)
自分もPerl6 は待っていたんだよ。でも、もう待ちきれないじゃん。
>>374 いいんだよ。サンプルなんだから。
Perlはやっぱりちょっとしたツール書く方が向いてる気がするよ。 長いコード書くとぐちゃぐちゃになり易い。 ちょっとしたツールなら慣れりゃ高速で書けるし。 Rubyは俺使ってたし今も使うんだが あれはモジュールとクラスを大量に作るには 悪くない言語だけど行く末がすっげぇ不安って感じ。 matzが痛いし暴走癖あるし儲も痛いし。 んで今はPythonに挑戦中。 まだあんまり解らんが案外細かいところに手が届くと思った。 (Rubyは結構細かいところが抜けてるから)
Perlは十徳ナイフみたいなもんだよな 簡単なことは器用にこなせるけど、 それで家を建てるとなるとややこしい
>>379 デバッグが怖いのは同意。
でかいperlコードのデバッグとか、もう2度とやりたくない。
けど、だからといって「perlには○○が出来ない」というのは違うと思う。
perl6はちゃんと今週も進化してる模様・・・
http://pugs.blogs.com/ なんとなく、出てすぐはpythonよりちょっと上をいってそうな気がする
けど、pythonチーム頭よすぎなのでw、すぐいいとこ取りすると思うけど・・・w
「役不足」
Pythonは使っててケチつけたくなる点が他より少ないから コード書いてて気分がいいね。
385 :
デフォルトの名無しさん :2007/01/02(火) 16:03:56
>>382 Perl6 vs Python ていう話は、Perl6 が出ないと、
なんともいえないでしょ。
ただ、はたから見ていて、Perl6 は迷宮に迷い込んでいるように
見えるよ。そもそも、仕様は確定してから作業しないと、
時間ばかりかかるように思う。
それに、いまどうするかというのが目の前の問題だからさ。
出ていないPerl6 をいつまで待てるのか。
一方で、一貫した作法でオブジェクト指向を扱える
Python がすでにあってだよ。
待てる人はPerl6 を待てばいいけど、ならPython を
選ぼうという人も多いと思う。
python 使いから見てそんなに誉める余地のある 「Perl6」って既に 「perl」 じゃねーよな
pythonって下位互換性みたいなのはどうなのかな? テンプレートエンジンのKidとか使って何か勉強してみたいな と思ってるんだけど石橋を叩いてここは2.5ではなくて 2.4をインストールしとくべきかな…2.5はstableって書いて あるから2.5でも大丈夫な気もするんだけど…IronPythonの チュートリアルとかみると2.4とか入れてるだよね… IronpythonとかKidとか使って初心者がpythonを一から勉強 するなら2.4のほうがいいかな?
389 :
331 :2007/01/02(火) 20:06:50
>>335 お返事ありがとうございます。
Unicode版のPythonをインストールするだけで本当に解決するのですか?
というのもMac OS X 10.4にはインストールできるPython 2.3 Unicode版バイナリが無いためです。
>>389 Unicode版のwxPython
~~
さりげなくKidの宣伝をしたい奴がいるようだ
392 :
331 :2007/01/02(火) 22:58:39
>>390 ありがとうございます。つまりMac OS X 10.4.8に標準装備されているwxPythonとPythonは
なんと!「Unicode対応ビルドではない」ということでしょうか?
それはOSXが積極的にUnicodeに対応してきた歴史からみると変ですね。
現在インストールされている
Python 2.3.5(プリインストール)
wxPython 2.5.3.1(プリインストール)
がUnicode対応版かそうでないか、確認する方法は無いものでしょうか?
度々スレを汚してしまいすみませんが、よろしくお願いいたします。
最近else:の代わりにelif 1:と書くのがマイブーム(チラ裏
>>392 >>> import wx
>>> print wx.PlatformInfo
('__WXMSW__', 'wxMSW', 'unicode', 'wx-assertions-on', 'SWIG-1.3.27')
'unicode' が含まれていれば Unicode 対応ビルドです。
あと、文字がお豆腐になるならなるで最小限の再現コードを書いてくれると
答えやすいです( GUI なので厳しいかもですが)。
395 :
331 :2007/01/03(水) 01:06:04
>>392 >>> import wx
>>> print wx.PlatformInfo
('__WXMAC__', 'wxMac', 'unicode', 'wx-assertions-on')
でした!標準でUnicode対応していたんですね。wxPython側は。
最小限のコードですが、表示されたtextctrlに日本語を入力するとまんまと豆腐です。
import wx
app=wx.App()
frame=wx.Frame(None, -1)
text=wx.TextCtrl(frame)
frame.Show(True)
app.SetTopWindow(frame)
app.MainLoop()
396 :
394 :2007/01/03(水) 01:07:06
>>392 XRCed がどういうものか知らずに適当レスしました。すいません。
XML tree の encoding を utf-8 にしたらどうでしょうか。
>393 独りでやる時だけにしてくれよw
今にPerl6が出るぞ! って3年前から言ってるじゃんw
>398 それはラリーがむごもご
400 :
デフォルトの名無しさん :2007/01/03(水) 10:03:46
401 :
331 :2007/01/03(水) 11:39:45
>>396 ありがとうございます。確認したところ既にUTF-8にしてありました。
XRCedは無視してかまわないので、XRCedを使わない先ほどのサンプルコードを起動して、
空白の入力欄に日本語を入力すると豆腐と化します。
>>400 ありがとうございます。そのページは確認しております。
402 :
デフォルトの名無しさん :2007/01/03(水) 12:59:34
403 :
331 :2007/01/03(水) 13:20:45
>>402 ありがとうございました。リンク先の環境を再現することで無事解決しました。
プリインストールのPythonとwxPythonは一応Unicode対応してはいるものの
実際の表示は化けるビルドなんですね。
404 :
デフォルトの名無しさん :2007/01/03(水) 13:34:29
b = x a += b ↓↓↓ a += b = x
404 not found
406 :
デフォルトの名無しさん :2007/01/04(木) 10:59:01
クラス内でインスタンス変数にアクセスするときは絶対selfを付けなくちゃだめなの? いちいちself付けるのめんどくさい・・・
407 :
デフォルトの名無しさん :2007/01/04(木) 11:04:02
Windows 上で、ソースファイルを UTF-8 にしていて、 print u'あいう' とすると、コンソールにちゃんと表示されるのに、 sys.stderr.write(u'あいう') とすると、文字化けして表示されるのは何で? どうしたら文字化けせずに表示できる?
409 :
デフォルトの名無しさん :2007/01/04(木) 11:26:56
>>406 めんどくさいって、もしかして入力補完とか使ってないのか?
(エディタはなに?)
そもそも、クラス作成とかの定型作業なら、わざわざ打つ部分より
コピペしてる部分の方が多いと思うんだが。
>>407 コンソールウィンドウの環境設定の表示用エンコーディングと
Pythonの入出力のデフォルトエンコーディングを一致させる
それと ソースコードのテキストのエンコーディングと ソースコード行頭のエンコーディング宣言を一致させる Pythonではその4つを正しく設定しておかないと文字化けしてしまいます。
> クラス内でインスタンス変数にアクセスするときは絶対selfを付けなくちゃだめなの? つけなくちゃだめです。以上。
>めんどくさいって、もしかして入力補完とか使ってないのか? Pythonの入力補完のあるエディタってどんなのがあるの?
>>408 上のコードを jsonparser.rb として保存
下のコードに
require 'jsonparser'
415 :
デフォルトの名無しさん :2007/01/04(木) 11:55:55
>>413 僕の場合は、サクラエディタでキーワードが少ないから、
自分で勝手にキーワード登録増やして使ってるけど。
self.って打つの、補完するほど面倒か?
っていうか補完以前に クラス変数かインスタンス変数かは プログラマが意識して決めることなんだから サボりようがないよな?
>>415 俺はSyntaxHighlighterのキーワードが充実してるみたいだから
それを参考にしてキーワード増やして使おうと思ってる
rubyなら@で澄むのにっていう話じゃないの?<selfめんど 自分もはじめそう思った。
自分自分自分自分自分自分自分自分自分自分自分自分自分
>>412 以降self談義している人は皆微分積分。
422 :
デフォルトの名無しさん :2007/01/04(木) 15:28:37
>>418 組み込み関数とかだけなら、これで得られるけどね。
import __builtin__
dir(__builtin__)
あと、必要なキーワード、一気に得られる方法があるといいのだけれど。
自分はちまちま、気のつくたびに登録してる。
>>422 ん、\SyntaxHighlighter_1.4.1\Scripts\のshBrushPython.jsに
キーワードなら書いてあるからそれをコピペすればおkだよ
shBrushPython.js(登録キーワード一覧)->shCore.js(textaream->listタグ+hilight化エンジン)
->\Styles\SyntaxHighlighter.cssで下記のtagを色づけ
'keyword''builtins''magicmethods''exceptions''types''commonlibs'
424 :
デフォルトの名無しさん :2007/01/04(木) 16:58:19
.py書けるのに英語わからないとかありえないから
.py ドットパイ ドッパイ オッパイ
>424 Exciteでも使って頑張るヨロシ >425 日本語のチュートリアルある以上 多少の.py書く程度なら出来るだろw
# tateyomi.py
import re
import sys
import urllib
threadURL = "
http://pc8.2ch.net/test/read.cgi/tech/1166050674/28 "
url_parts = threadURL.split('/')
host, test, cgi, category, dat_no, res_no = url_parts[2:8]
dat_url = '
http://%s/%s/dat/%s.dat ' % (host, category, dat_no)
lines = urllib.urlopen(dat_url).readlines()
# 本文の抽出 ' <> 本文 <> '
body = lines[int(res_no) - 1].split(' <> ')[1].decode('sjis')
# リンクタグのカット
body = re.sub(r'<.*?>.*?</.*?>', '', body)
# 行ごとに分割してその一文字目を出力
for line in body.split(' <br>'):
print line[1]
ちょっと質問してみる
続き...
>>37 のが面白そうだったのですこし変えて
実行してみたら
#IndexError: string index out of range
となり上手くいきませんでした…orz
2chのdatの構造は
<>_行_<br>_
_行_<br>_
_行_<br>_
_行_<>
のようなので'<br>_'ではなくて'_<br>'で分割しても
上手くゆくと思うのですけれども上手く分割できず
理由がわからない…orz
line[1]だろ。常識的に考えて・・・
空行の存在を忘れてるようだ
>>430 すみません張り間違えましたline[0]です…orz
>>431 '<br>_'ではなくて'_<br>'でも
<>_行_<br>_
_行_<br>_
_行_<br>_
_<br>_
_行_<>
が['_行_', '_行_', '_行_', '', '_行_']と同じように
分割されるように思うのですけれども…よくわからない…orz
自己解決しましたお騒がせしてすみませんでした <br>_の場合 ['_行_', '_行_', '_行_', '_', '_行_'] _<br>の場合 ['_行', '__行', '__行', '__行_', ''] <- 5つ目の要素が空となりline[0]で出力しようとするとerrorとなる
435 :
デフォルトの名無しさん :2007/01/04(木) 20:36:26
hoge = 0 # 取り得る値に関する説明や注意 pydoc で変数の説明を表示したいんだけど 書き方が分からない
<>_ 行_<br>_ 行_<br>_ 行_<br>_ _<br>_ 行 _<> <br>_の場合 ['行_', '行_', '行_', '_', '行_'] _<br>の場合 ['行', '_行', '_行', '_', '_行'] <br>の場合 ['行_', '_行_', '_行_', '__', '_行'] □□□_□ 出力できる // □は2バイト _ は1バイト □____ #IndexError: string index out of range □____ #IndexError: string index out of range なんか間違えてたみたいなので訂正して置く
>>436 モジュール、クラス定義、または関数(メソッド)定義の最初に文字列を置いてその中に書く。
例えば pydoc.py の先頭とか pydoc モジュール内の関数の定義とかを見てみりん。
いやいやいや、モジュールの変数ね DATA セクションに表示される項目のところ
インスタンスごとに doc を保持する仕組みがないと pydoc 使うのは無理か。 doyxgen がいつの間にやら python に対応してたので こっち使うことにするよ。
441 :
デフォルトの名無しさん :2007/01/04(木) 22:51:55
意味が分らん… orz インスタンスごとに、フィールド・メンバーの 解説をいろいろ書き分けて書くのん? いや、いいけど…
class node: def __init__(self, id): self.id = id l = [node(1), node(2), node(3)] print node(1) in l これ実行するとFalseになるんですがnodeクラスのidが含まれているときにTrueを返すよい方法はないでしょうか? contain(id, list) というlの各要素を順番に調べてidと等しいか調べる関数を自分で作ればよいと思うのですが効率的にinと比較してどうなんでしょうか? ちなみにlistの要素数はものすごく大きいです。
実態参照してるからFalseになる罠。 idが一意なら、ListやめてDictionaryにしたら?
444 :
デフォルトの名無しさん :2007/01/04(木) 23:59:12
>>> class node(object): ... def __init__(self, id): ... self.id = id ... >>> n1 = node(1) >>> n2 = node(2) >>> n3 = node(3) >>> >>> l = [n1, n2, n3] >>> print n1 in l True
__eq__ と __ne__ を定義して id を比較
>>443 ,444,445
アドバイスありがとうございます。
>>443 順番が重要なのでDictionaryはだめなんです・・・
>>444 keyで比較したかったので・・・
>>445 下のように__eq__を実装してできました。inも__eq__で実装されてるみたいですね。
class node:
def __init__(self, id):
self.id = id
def __eq__(self, other):
return self.id == other.id
l = [node(1), node(2), node(3)]
print node(1) in l
順番が重要ってのは、ランダムアクセスしたいってこと?それとも最初から 順番にアクセスできればいいわけ?
>>447 nodeのidが小さい順に並べておきたかったんです。
だから新しいノード追加するときはnodeのidが小さい順番に並ぶようにリストにinsert()してます。
辞書だと自分で追加した順番が保てないので・・・
はじめはSet使おうと思ったのですがnodeのような可変オブジェクトを入れられないみたいでだめでした。
問題はそこじゃないし解決したからいいんでないか >>> node(1) == node(1) True >>> node(1) != node(1) True うほっ
ありがちな list+dic の折衷型クラスを使う(or自分で実装)
>>448 setに入れるなら__hash__を定義する必要がある。(これも順番は保てないが)
class Node:
def __init__(self, id):
self.id = id
def __hash__(self):
return hash(self.id)
def __cmp__(self, that):
return cmp(self.id, that.id)
s = set()
s.add(Node(1))
s.add(Node(2))
print Node(1) in s
print Node(3) in s
>438 お前どこの出身だッ、その方言は聞いたことがある よもや愛知県三河地方ではあるまいな
みりんは確かそうだな
>>448 bisectモジュールが役立つ鴨。
import bisect
class Node:
def __init__(self, id):
self.id = id
def __cmp__(self, other):
return cmp(self.id, other.id)
def __repr__(self):
return "<Node#%d>" % self.id
def insert(a, x):
i = bisect.bisect_left(a, x)
if a[i] == x:
raise ValueError, "already there"
a.insert(i, x)
def contains(a, x):
i = bisect.bisect_left(a, x)
return i < len(a) and a[i] == x
nodes = [Node(1), Node(3), Node(5)]
print contains(nodes, Node(2))
insert(nodes, Node(2))
print contains(nodes, Node(2))
456 :
455 :2007/01/05(金) 09:54:38
修正。 if i < len(a) and a[i] == x: raise ValueError, "already there"
>>448 dictにしといて
使うときに、sorted(dict.values(), lambda x, y:x.id - y.id)で、番号順にすればいいと思う。
>>420 自分の意見というか、matzがpythonのことおもちゃ言語っていう
根拠のひとつでもあるんじゃないの?たぶん、
cの構造体ポインタにあたるものが見えちゃってるみたいな
>458 でも実際はRubyの方がよほどオモチャな件
まぁPython使いは アニメキャラ・バトルロワイアル感想雑談スレ8 でも見てなさいってこった。
見に行くのめんどうだから3行くらいで要約してくれ
perlの方にはヒキ板のスレがあるなw この機能煽るネタ提供するだけだな
俺の見ているスレも出てるw
>>452-453 愛知の田舎に10年ほど住んでたもんでかんわ。たまに三河弁が口をついて出るw
・・・これは流行る・・・!
ここは超初心者もしつもんしていいですか?
Python初心者なら。 PC初心者は(・∀・)カエレ!!
PCは98の時からで5年です。 Python初心者の♀です。
PC-98か
1998 + 5 = 2003 2007年の話としてはおかしいよな... ( ゚д゚ )ハッ! 98才のときに始めてから5年のハカーばあさん!?
ばあさんも質問していいでつか?
ばさんはXPじゃ
「質問してもいいですか?」って最初に言うヤツにはかかわらないほうが良い、の法則
>>471 を読んで
「そこは『コンピューターおばあちゃん』だろうが!」
と咄嗟に思う世代。
476 :
デフォルトの名無しさん :2007/01/05(金) 18:28:51
このスレを見ている人はこんなスレも見ています。(ver 0.20) 【AoE3】Age of Empires III 第76幕【TWC】 [PCゲーム] アニメキャラ・バトルロワイアル感想雑談スレ8 [アニキャラ総合] ◆ ポルトガル語・総合スレッド 10 ◆ [外国語] 【MU】マヤ鯖攻城戦専用晒しスレpart10 [ネットwatch] おい、魔王様階級ども!バンバンどうですか? [バイク] (,,゚Д゚).o0(Pythonユーザって・・・・・・・・)
Python使ってもいないのにこのスレ毎日覗いてる俺は そんなの問題にならないくらいキモいスレに行きまくってるから 心配すんな。
478 :
デフォルトの名無しさん :2007/01/05(金) 19:03:27
>>469 で、質問はなに? 待ちくたびれてきた。
やりたいことは、python2.2という、サーバー内のCGIプログラムを使い サイトマップを生成し、サイト内にyahoo,google,msnで採用された 登録用のサイトマップファイルを作ると言うものです。 1. python 用の実行プラグラムファイル、と データ用のファイルを作り 自分のレンタルサーバの中のCGIフォルダの中にアップロードしました。 2. この後なのですが、サーバー内の python2.2 に実行コマンドを出し python2.2を実行させると書いてあるのですが、 どうやって、実行コマンドをサーバー内の python2.2 に出すのか分かりません。 説明には ssh 等を使ってと書いてあるのですが。 使用しているサーバーのOSは unix です。 よろしくお願いします。
480 :
デフォルトの名無しさん :2007/01/05(金) 19:38:14
>>479 sshでログインしてプロンプトから
%cd 目的のフォルダ
%python 目的のスクリプト
482 :
デフォルトの名無しさん :2007/01/05(金) 19:56:53
483 :
482 :2007/01/05(金) 20:04:32
479 (-_-;)ウー
むずかし〜
> 説明には ssh 等を使ってと書いてあるのですが ってのがどこなのか(サイトなのか本なのか)書いた方がいいね。 他の人が貼ってるリンク先そのものだったら、貼ってもらった手間が無駄になる。
489 :
デフォルトの名無しさん :2007/01/05(金) 22:17:10
あほー、Google、msnでは初心者はHPなぞ作るなってことかw
>プラグラムファイル
てか、何がわからないのかわからない。 リモートログインしてスクリプト走らせるだけの話じゃないのか・・・? 自動更新にしたいなら、cronしこむなりすればいいんじゃ
リモートログインはどうやるの?
スレ違い
@@@ パンパンパンパーン
@@@@@ ∩
6 -ω-ノ 彡
(⊇ ⊂彡☆))д´)
>>494
496 :
デフォルトの名無しさん :2007/01/05(金) 23:02:25
>>496 もうググリ真下。
すみません。
xmlはあっぷしました。
サーバーはリナックスらしいけどリモートログインってUNIXのばっかりじゃん。
リモートログインなんてFFFTPなんかで自分のサーバーにログインするだけジャマイカ!!
500 :
デフォルトの名無しさん :2007/01/05(金) 23:33:58
すまん。 俺はHomePageBuider を使うようになってから、 リモートログインなんて、忘れちまったよw 昔は、telnetで入ってviでmlのログの管理とか してたんだけどな。 最初はftpを知らなくてさw ずっとtelnetでviしてた。 viのクソぶりには泣けたなぁ。 誰か、unixに秀○を移植してくれ、と思ったよ。 って、ここなんのスレよ!
つまり、ナイス500ゲットということで。
つkermit
>498 ガッ
>503 ぬ、ぬるぽどこッ?!
>>454 def decbin(b):
s = ""
if b > 1 : s = decbin(b
>>1 )
return s + "01"[b&1]
>479 Pythonの話じゃないな >474 の法則は正しいかもしれない。
> 【AoE3】Age of Empires III 第76幕【TWC】 [PCゲーム] > アニメキャラ・バトルロワイアル感想雑談スレ8 [アニキャラ総合] > ◆ ポルトガル語・総合スレッド 10 ◆ [外国語] > 【MU】マヤ鯖攻城戦専用晒しスレpart10 [ネットwatch] > 【転職】−転職板@何でも質問所− その65 [転職] 今日は転職らしい
509 :
デフォルトの名無しさん :2007/01/07(日) 03:07:14
お願いします。 htmlに含まれる表を配列に起こすプログラムを教えてください。
>>509 import HTMLParser, urllib
class Parser(HTMLParser.HTMLParser):
def __init__(self):
HTMLParser.HTMLParser.__init__(self)
self.tables = []
self.data = None
def handle_starttag(self, tag, attrs):
if tag == "table":
self.tables.append([])
elif tag == "tr":
self.tables[-1].append([])
elif tag in ["th", "td"]:
self.data = ""
def handle_endtag(self, tag):
if tag in ["th", "td"]:
self.tables[-1][-1].append(self.data)
self.data = None
def handle_data(self, data):
if self.data is not None:
self.data += data
file = urllib.urlopen("
http://www.python.org/doc/lib/typesseq.html ")
parser = Parser()
parser.feed(file.read())
parser.close()
for n, table in enumerate(parser.tables):
for i, row in enumerate(table):
for j, data in enumerate(row):
print 'table #%d (%d, %d) => "%s"' % (n, i, j, data)
補足:
>>510 のプログラムはもっとも単純な表を想定している。
複数行(複数列)にわたるセルがあっても何もしないし、
表の中に表が現れると破綻する。実体参照も無視してる。
文字コードも関知しない。あくまで参考程度に。
512 :
509 :2007/01/07(日) 04:47:34
どうもありがとうございます。
Excelにコピペしてcsvで保存してcsvreader.
Pythonのcsvモジュールは使い物にならないから困る
Unicode未サポート ゆえに日本語データが処理できない
知ったか乙 日本語データでも処理できてるし
"hoge,fuga",other data,30 みたいなのもイケるの? ドキュメント見たけど、自分で実装するのと比べて 大したことはやってくれないよね、これ…
仕事を頼まれる ↓ ('A`)ヴァー という顔をしつつ、 内心 python+csvモジュールで楽勝(゚∀゚) すでに定時帰宅ムード ↓ 使い方忘れてるので 読んで吐き出すだけのコードを書いてみる 日本語もOKなご様子 ↓ 問題ないので本格的に書く ↓ 動かしてみたら期待通りに行かない なんでunicodeでないのでありますか。こやつ。 ↓ モジュールを直そうと思うがC実装 ↓ やっぱ自分のソースを直す ↓ あ、あれ?残業?!
csvのように下種な作業で比較的用いられるような代物が ちゃんと整備されていないとはどういうこっちゃ。
>>521 多分、csv の方言が多すぎるからだろ。
csv の標準が規定されているのかどうか知らんが、
例え規定されていたとしてもそれに従っていないモノが多すぎるんだろ。
>>523 十年前でも遅いと思うが、2005年10月かよ。
XMLで読み書きしろって流れなんだろうな ( ゚д゚)ハッ! XML-CSVブリッジ!?
>>525 XMLがブレイクしだした時にその手のコンバータって山ほど作られていると思うけど。
>>526 話を聞かないってことは流行んなかったんだよなきっと
>>527 そりゃ csv 側に方言があり過ぎるから、みんな自分の用が足せる
コンバータをちょろちょろって書いておしまいだからだろ。
2.5のマニュアル見たら文字コード変換のラッパー例が書いてあった。 2.4のときは無かったような〜。。。 csv モジュール、前は Python で書いてあったが 高速化のためにC実装になったと記憶している。 方言うんぬんより、このC実装の書き換えが大変なのだと思う。 文字列処理周りはバグとセキュリティホールの宝庫だし。 Pythonコード で書いてあれば codecs を通すだけで済むはず。 ElementTree も一癖あるので注意が必要(((´・ω・`)カックン…
PythonのCSVモジュールだってRFC 4180準拠って書いてないしなw
532 :
デフォルトの名無しさん :2007/01/08(月) 00:03:01
もともとの話は、
>>509 の話を受けて
>>513 が
エクセルにコピーして csv で書き出せば、html中の表を
配列に入れられるだろ といったことからだから、
むしろエクセル準拠のcsvでなければダメなんじゃない?
Pythonのcsvモジュールはdialectってのでcsvの方言に対応できる. セパレート文字列,改行コード,クォートの設定など. で,デフォルトで使われるdialectはExcel準拠になってる. Windows使いの人から渡されるExcelのCSVファイルを処理するプログラムを 最近作った.別に問題なく読めた.ちなみにPython2.4
Excel以外から出力されたCSVがとても怖い。 「"」文字中の「"」文字はカンマと隣合っていないと文字列終端としない、 等等の訳ワカメ仕様を実装することになる。 そういう所は、CSV出力を考慮してちゃんとエスケープして欲しいんだよねぇ…。 そんな事を考えつつ詳細設計にEBNFを載せつつ実装をしてたら、レビュー時に 「えっ、そんな難しく考えちゃってるの?」、という突込みが。 一応弁解はしたが、分かってくれたか疑問。こんなことで仕事できない奴と思われたくない罠w
>このスレを見ている人はこんなスレも見ています。(ver 0.20) >◆ ポルトガル語・総合スレッド 10 ◆ [外国語] >【PodCast】アキバ系!電脳空間カウボーイズ [プログラマー] >【転職】−転職板@何でも質問所− その65 [転職] おまえら器がでかいな。
そんな怖いCSVファイルがあるのか...
みんなCSVで何の受け渡ししてんの? プログラム経験浅いんで、CSV=ダメ形式っていう認識しかないんだけど・・・
M$製品が出力するCSVはだめだめだけど それ以外の一般にはCSVは普通に使われるよ
excelに読み込ませる以外の用途を列挙せよ。
>このスレを見ている人はこんなスレも見ています。 専ブラ使ってる連中は集計されない。 Webブラウザ利用者と専ブラ利用者の間では 性格・行動に違いがあるから何とも云えん。
>>537 かといって総合的にそのcsvの代わりとなるうるものが存在しないのもまた事実。
KSV = Kanpa Separating Values
自分で使うときはタブ区切りばっかりつかってる
>544 TSVとも呼ぶね
個人的にCSVの代替はXMLだと思うが、何故か難しく捉えられる傾向にあるので躊躇する。 少しも難しくないのになぁ…。 要素の検証が面倒臭いという意見も良く聞くが、CSVの時は検証しなかったんかい!、と突っ込みたい。 ただXMLは、WindowsだとIEが絡んでよく強制終了に陥るのはどうにかして欲しい。
>>546 XMLはどうしてもCSVよりパーザが重くなる。とくにDOMなんかはサーバアプリケーションで使うにゃ論外だし。
後、データがCSVに比べて膨れ上がり過ぎ。XMLってなにげにXSLTでもかますんじゃなきゃCSVより格下のデータ形式だと思う。
548 :
546 :2007/01/08(月) 07:02:49
>>547 半分同意。格下とまでは思わないけど…。
DOMの構築時間はDOM実装によるけど、MSXML4あたりが良い実測値弾いてた。
PythonでもXPathをほぼ完全に使いたい時はMSXML4を使っている。
並列読み込みに対応したライブラリならDOM構築の処理時間は苦にならない。
データ量は拡張可能な環境だったら問題ないよ。
問題はCSVと対比させた処理時間だけど、かなり最適化しても1.6倍ぐらいなる。
夜間バッチ処理なんかだと致命的かも。
DOM以外でXSLTかけた事はないけど、昔はXML>CSV変換をXSLT使ってやっていた。
恐らくXMLtoCSV変換で最速だと思う。
csv だってなんだって "csvで吐くことを意識したデータ出力" に 気を使って設計・実装してあれば全然問題ないさ。 ほとんどが空白の数百columnを毎秒吐き出すヴァカとか 文字列処理がややこしくなるのに quote 仕様その他を 考えずに , だの " が入ったレコードを作る DQN がいなければ…
>>549 XMLだと逆に複雑なデータ構造であろうともそのまんま記述できちゃうからって
ろくにデータ構造の正規化を行わずにデータ形式を決定し、
そのデータ形式の複雑さに比例した複雑さを持つデータ処理プログラムを書かなきゃならなくなる。
って、罠に一度嵌りましたよ、ええ。orz
漏れも XML は CSV 以下だと思う 無駄大杉 そこで YAML ですよ
>>550 あるあるwwww
XPathで取得⇒コレクションでループ、の流れをXML設計時に考えておかないと駄目なんだよな。
ref属性で他の要素を参照とか、あまり私を怒らせない方がいい…。
ElementTreeとかもまだまだなんだよなぁ。
今後に期待。特にXPath系。
>>541 過去ログ見るにはにくちゃんねる以外の方法はないの?
他のサイトでサービスしてたりしない?
S式パーサがあればXMLなんて不要。 どうしようもなく冗長なXMLを使ってる馬鹿は考えを改めた方がいい。
馬鹿馬鹿しいほど冗長なくせに誤り訂正すら出来ないw
>>556 は誤り訂正という言葉を使ってみたかった説に清き1票
>557 自分で固定長フィールドの形式を決めてやれば 出来ることはできるだろうけど… 聞かないね.
どうでもいいが、いい加減スレ違い。
>>560 野菜ジュースで盛り上がってるどっかのスレに比べればまだまし。
ヨソはヨソ! ウチはウチ!
下見て暮らすな、上見て暮らせ
じゃあメタクラ(省略されました。続きを読む場合はおっぱいおっぱいと書き込んで下さい。)
メタクラッシャー大岩・・・メタクラスだろうな…。 XMLもYAMLもS式も、Pythonで扱う観点で話題があれば有用だと思う。 XMLは先行技術なんで、色々なAPIと「繋がる」利点がある。今のところ この利点以上の利点を他のフォーマットに見出せないのが現状。 単なるデータ形式と捉えれば、使いどころがあるからCSVの代用としての フォーマットとしてはXMLよりアドバンテージがあるだろうよ。 ところでsqllite3て使ってる?こいつが面白くて、ポストAccessだと睨んでいるんだが。 今のところフロントアプリ組んで、理解を深めているところ。
)スの話にはならなかったか。 他のDBは何かと縛りが出来るがsqliteだと気楽に使えるね。 ちょっと違うかも知れんが C++を(バリバリに組むのでなく)便利なC言語として使うような感じで データファイルをsqliteに組み換えちゃおうかと思ってる。
SQLite面白いよね。 でもAccessとかFileMakerとか、GUIフロントエンド込でナンボのDBは 比較対象としては相応しくないような。 かといってDBM系ともサーバクライアント方式のRDBとも比較し難く、 良い意味で微妙なポジションだね。 直接SQLを書かず、O/Rマッパを使うことを前提とした場合の対抗馬はMetaKitかな。 Pythonバインディングもあるし。
阿波波波波波
569 :
デフォルトの名無しさん :2007/01/09(火) 12:34:56
いろいろはいるよ
>>566 >ちょっと違うかも知れんが
>C++を(バリバリに組むのでなく)便利なC言語として使うような感じで
>データファイルをsqliteに組み換えちゃおうかと思ってる。
っshove
っdbm
っConfigParser
2.3から追加されたos.walk()なんだけど、これって txt_2ch_logとか2ch_logとか2chlogとか名前が不適切なpathを 引数に渡すと上手く動かないのかな?log2chにしたら動いたんだけど… unixとかのフォルダの命名規則はよく分からないけど、C言語の 変数の宣言の時みたいに名前の最初を数字で始めてはいけない、 とかそういうルールがあったりするような気がするのでつが…
環境は windows xp pro で python2.4(c:\Python24\python.exe)です。書き忘れてました…orz
ドキュメント読め デフォルトでエラーは、無視される。 引数のonerrorにos.errorを受け取る関数を指定すれば、 エラー発生時に呼ばれる。 def func(e): print e for x in os.walk("log2ch",onerror=func): print x
574 :
デフォルトの名無しさん :2007/01/09(火) 23:05:40
pyExceleratorでExcelのデータを吸い出そうとしているのですが、以下の症状で困っています。 グラフがオブジェクトとして存在するシートが複数あるとき、(例えばsheet1,sheet2,sheet3) pyExcelerator付属のxls2txt.pyで読み込むと、読まれないシートが出てくる(sheet1,3,5,7だけとか) 各シートのグラフを消去すると全シートを読み込むのですが。。。 グラフが載ったシートでもそのまま読ませたいです。 解決方法知っている方教えてください。お願いします。 環境は OS winXP (cygwinで走らせてます。) python:ver2.4.3 pyExcelerator:ver0.6.3a です。
ねぇ、Jythonってもう進化は期待できないの?
JavaVMはgroovyに夢中なのさ
ごめんConfigParserって撤廃対象だった気がする
>579 そうなの!? 代わりに何を使うのが推奨?
>>578 ん、そっかじゃあ起こるのはうちの環境だけなのかもしれないやね
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32
>>573 ありがd
っsimplejson
iPhoneにpythonが乗りますように(ー人ー)
OSXが動くそうだから、乗るだけなら出来るんじゃね? GUIとかがPythonで自由に作れれば面白そう
あいふぉんとぱいそんってちょっとにてる
それほどでもないよ
PEP#3108 ConfigParserは名前が変わるだけ?
って書いてあるじょん。
John?
無限にログを出力するプログラムに時刻をつけたいです(unix環境) こんな timelabel.py をつくりました ## timelabe.py import sys for line in sys.stdin: sys.stdout.write("%13.2f \t%s" % (time.time(), line) ) % logger | timelabel.py とやっても,うまく出力されません(バッファリングのせい?). logger は ^C を打つまで止まらないやつです. % ls | timelabel.py みたいな"stdin が eof までいくコマンド" なら動作するのですが, このバッファリングをやめさせるにはどうすれば良いのでしょうか?
logger -s
logger はログ吐きの仮想例のつもりだったんですが 同じ名前のコマンドがあったんですね。 実際には vmstat とかの出力を捕まえるイメージです... 結局こうすれば一応動いているみたいです。 while True: line = sys.stdin.readline() if line == '': break sys.stdout.write("%13.2f \t%s" % (time.time(), line) )
よいか、ジェラール われわれはインペリアルクロスという陣形で戦う お前は私の後ろに立て お前のポジションが一番安全だ
| \ __ / _ (m) _ピコー |ミ| / `´ \ ('A`) ノヽノヽ くく
pythonで作られたguiアプリで有名なのはなんですか?
redhat のインストーラじゃねーの? あと sketch とか
Access IBM
601 :
デフォルトの名無しさん :2007/01/14(日) 22:39:11
開発はしてないけど インストールできるよ 705NKIIでも Nokiaの型番で調べるといいかも(6630?6680?) 電車の時刻表のPythonアプリをかいたひとがいて それ動かしてる まとめサイトが今でもあるなら、そこに情報あるんでない
質問です。 あるクラスのインスタンスを MyClass('文字列') MyClass(arg1, arg2) MyClass(arg1, arg2, 真偽値) # arg1, arg2 は別の独自クラスのインスタンス の3つの形式で作成したいのですが __init__ はどう定義すべきでしょうか? 後2者はデフォルト値で出来そうですが 最初の形式も受け入れたいのです。
604 :
デフォルトの名無しさん :2007/01/14(日) 23:24:07
>>602 702NK(6630) S60 2nd Editon にはインストールできてるんですけど、
705NK(N73) S60 3rd Edition では Symbian Signed 版がまだリリースされてないのです。
3rd Edition は Self Signed 版しかなくて日本版の端末には単純にはインストール不可っぽい。
それで、誰か知ってる人居ないかなと思いまして。
もう少し調べてみます。
>>603 class MyClass:
def __init__(self, *args):
argc = len(args)
if argc == 1:
print '形式1'
elif argc == 2:
print '形式2'
elif argc == 3:
print '形式3'
else:
raise TypeError('引数の数があってねーよ')
引数の型をチェックしたければisinstance関数で適当に。
>605 ありがとうございます。 そんな感じで書けば良いんですね。
urllib2使ってGoogleの単位換算機能を使おうと思ったが、403ではじかれる。 今日は疲れたのでもう寝る。
また今度がんばってね☆
>> 604 勘違いはなはだもうしわけない 705なんてあるのね
>>607 いいことを教えてやろう。
googleはブラウザや公式APIを使わないリクエストを弾くのだ。
だからUserAgentをIEやFirefoxに変えてやればいいのでは。
断定口調でよろしく
>>611 ぐちゃぐちゃだな。いやがらせかこれは。
開くとかきついとかぐちゃぐちゃとか、エロいなお前ら。
めっちゃ強引になっちゃった
import re
import urllib
import urllib2
re_calc = re.compile("calc_img\.gif.+<font size=\+1><b>(.+)</b></td>")
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
base_url = "
http://www.google.co.jp/search?q= "
def urlencode(_s, _encoding="utf8"):
return urllib.quote_plus(_s.encode(_encoding))
def main():
query = raw_input(">>> ")
if not query:main()
elif query.strip().lower() == "exit":return
rf = opener.open(base_url + urlencode(query))
html = rf.readlines()
for line in html:
result = re_calc.search(line)
if result:
print result.group(1).replace("<font size=-2> </font>", "")
break
rf.close()
main()
main()
POSTに'num=0'をつけると、検索結果0件になるから、帰ってくるデータが少なくなるよ。
だからおまいらそういうときはBeautifulSoupを使えと何度言ったr(ry
使ったこと無いけど つpygoogle
C:\Python24\Tools\Scripts にgoogle.pyなんて ファイルがあるのを知っているのは漏れだけで いいと思うんだ…
興味をもって調べたら数日前に新規受付停止してて泣いた
な、なんだってー もう配布してないのかよorz やろうと思ってたのに
なぜここで報告?
ボウヤーだからさ
調べてみたらLhaplusとかのアーカイバでuuencodeに対応してるって
書いてあったからコピペしてきてテキストファイルに貼り付けて拡張子を
tar.gzに変えて無理やり解凍してみようとしたけどうまく行くわけもなく…orz
http://www.jp.freebsd.org/QandA/HTML/736.html 戻し方 :
% uudecode hogehoge.uue
uuencode されたファイルの前や後ろにいかなる情報があっても, それらを無視しますので,
ヘッダの除去などといった余計な操作はしなくても結構です.
cURL(htmlクライアントみたいなもの)でhtmlデータを落としてきてパイプで繋いで
uudecodeに喰わせればあとは勝手に解凍してくれるってわけね…windowsには
uudecodeなんてないよ…orz
>>630 >書いてあったからコピペしてきてテキストファイルに貼り付けて拡張子を
>tar.gzに変えて無理やり解凍してみようとしたけどうまく行くわけもなく…orz
そこまでやってなんで最後ではまる?
拡張子を.uueにしてみれ
python的にはuuモジュールかbinasciiモジュール使うのも有りかいね
>>632 Lhaplusを入れ直して、拡張子を.uueに変えたら解凍できますた。
dくすです
Pythonでレファレンス見ながら書いてみた
import uu
fs = file('aaa.uue', 'rb')
uu.decode(fs)
三行で解凍できそうでした
(error吐いてたけどtropy.tar.gzが空のファイルで出来てた)
File "C:\Python24\lib\uu.py", line 99, in decode
raise Error, 'No valid begin line found in input file'
uu.Error: No valid begin line found in input file
http://www.koders.com/python/fid7721A5C1D8AB627BBC9E66717A1434C1BFFEEC1B.aspx#L99 uu.pyの99行目をbeginからbegin-base64に書き換えてみた
File "C:\Python24\lib\uu.py", line 137, in decode
data = binascii.a2b_uu(s[:nbytes])
binascii.Error: Illegal char
「binascii」をJGrepでGrepしてみた
C:\Python24\Lib\test\test_binascii.py
"""Test the binascii C module."""
Cなのかというか何だそれどこからインポートしてるだよ…orz
637 :
633 :2007/01/19(金) 01:12:39
おや。uuモジュールはbegin-base64扱えないみたいねスマソ 結局のところbase64なわけだから、元ネタの >begin-base64 644 tropy.tar.gz の**次**の行から、最後の >==== の**前**の行までをbase64.decodeすれば良いだけの話。 (手元の環境で確認済み)
>>637 解凍デキタ━━━(゚∀゚)━━━!!
base64圧縮ってなんか面白いですね。thxです!!
Ubuntu 6.10 jaのtkinterのentryウィジェットでscim-anthyを使って 日本語入力できない。
そりゃ新品が手に入らないからに決まってる
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST, PORT)) data = s.recv(1024) としたら data = '\xe5Jk*\x91\x98\xfa\xdf\x88m\n' となりました。 実際受け取ったのは E5 4A 6B 2A 91 98 FA DF 88 6D 0A のようなバイナリデータですが binascii.b2a_hex(data)とすれば一致するようです。 pythonでのバイナリデータの表現、扱いがわからないのですが 良い方法ありませんか?
>>643 エスパーレスすると、
data = [ord(c) for c in data]
とかすれば望むものが得られるのではないか?
>pythonでのバイナリデータの表現、扱いがわからないのですが そのコードの最後でtype(data)をやれば分かる >良い方法ありませんか? 何をする方法?
>>645 日本語もろくに理解できないひとは黙っててください
IDねえのにも慣れてるし、そのレベルのエサじゃ荒らせないよ。
おまえらどんな環境で開発してますか? 参考にさせてください。 自分はJavaから流れてきたからeclipseでやってたけど、 お手軽にやりたいのにあんな巨大なIDE使うのもバカらしいなと思って、 最近xyzzyにしてみました。 でも、eclipseだと他のプラットフォームでも使い勝手が同じだからなー。
Emacs
IDLE
iPython + vim
Emacs WideStudioってどう?
653 :
648 :2007/01/21(日) 09:14:23
みなさんありがと。 iPythonとWideStudioってちょっと面白そう。
Stani's Python Editor とか Komodo とか。
>>647 最近うんこAA見ないね。
なんか手を変え品を変えって感じだな。
! | 丶 _ .,! ヽ > ``‐.`ヽ、 .|、 | ゙'. ,ト `i、 `i、 .、″ | .,.:/"" ゙‐,. ` / ` .,-''ヽ"` ヽ,,,、 ! 、,、‐'゙l‐、 .丿 : ':、 <おまたせー 、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''` .,"-、 ,r"ツぃ丶 `````` ../ `i、 ,.イ:、ヽ/ー`-、-ヽヽヽ、−´ .l゙`-、 _,,l゙-:ヽ,;、、 、、丶 ゙i、,,、 ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`": │ `i、 、、::|、、、ヽ,、、. ```: : : ``` 、.、'` .|丶、 .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´ l゙ ゙).._ ,、':゙l:、、`:ヽ、`:、 : `"```¬――'''"`゙^` : ..、丶 .l゙ `ヽ ,i´.、ヽ".、".、"'ヽヽ;,:、........、 、、...,,,、−‘` 、‐ |゙゙:‐, ,.-l,i´.、".`ヽ,,,.".` `゙゙'"`'-ー"``"``r-ー`'": _.‐′ 丿 ,! j".、'ヽ,".、".、"`''`ー、._、、、 、._,、..-‐:'''′ .、,:" 丿 ゙l,"`"`''ヽヽ"`"` ```゙'''"ヽ∠、、、、ぃ-`''''": ` 、._./` ._/` `'i`ヽヽヽ`''ーi、、、: : 、.,-‐'` 、/` ``ヽン'`"` : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^ ,、‐'"` `"'゙―-、,,,,..、、 : ..,、ー'"'` : `‘"`―---------‐ヽ``"''''''""
昔win32にiPythonインスコして日本語使ったら 目も当てられない状況になったのだが今はどうなっているのやら。
>>657 手元の環境で試してみた。
$ ipy
Python 2.4.1 (#65, Mar 30 2005, 09:13:57) [MSC v.1310 32 bit (Intel)]
Type "copyright", "credits" or "license" for more information.
IPython 0.7.2 -- An enhanced Interactive Python.
? -> Introduction to IPython's features.
%magic -> Information about IPython's 'magic' % functions.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: print "日本語"
日本語
In [2]:
OKみたい。
出さんでええ
本格なエディタと別にCopal使ってるよ。Windows限定でスマンな。 スクリプトを保存しないで実行できるし、plinkと組み合わせて リモートのUNIXマシンのpythonだって実行できるし、 数行から数十行のスクリプトを試す場合、非常に便利。
661 :
デフォルトの名無しさん :2007/01/23(火) 12:28:54
pythonで外部コマンドを使うにはどうすればよいのでしょうか? perlでのsystem('ls')見たいな感じです。
662 :
デフォルトの名無しさん :2007/01/23(火) 12:30:54
てか、今調べたらそのまんまでした。 宮崎マンセー
>>615-617 いつの間に…
おおよそきれいにできました。とんくす
import urllib2
from BeautifulSoup import BeautifulSoup
query_url = '
http://www.google.co.jp/search?num=0&q=yard+to+feet ')
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
soup = BeautifulSoup(''.join(opener.open(query_url)))
try:
print soup.find('img', {"src":"/images/calc_img.gif"}).findNext('b').string
except:
print "N/A"
>>661-662 apacheと一緒に使うとくだらない仕様(あるいはバグ)があるのでよぷ注意
>>643 array.array('B',data)
日本語の文字列を文字列を文字参照(
&が消えちったので書き直し 日本語の文字列を文字列を文字参照(&#xnnnn;みたいな形式)に エンコードするにはどうしたらいいですか?
へぇ、日本語なんて定義されてたんだ
# -*- coding: utf-8 -*- s = u'あいうえお' s.encode('ascii', 'xmlcharrefreplace')
>>668 定義っていうかユニコードの文字参照だお。
ありがとうございますー
>>667 別解:文字のコード値は ord() で得られる。
>>> text = unicode("あいうえお", "mbcs")
>>> for c in text: print "&#%d;" % ord(c) # まずは単純に for ループで
あ
い
う
え
お
>>> ["&#%d;" % ord(c) for c in text] # リスト内包でも OK
['あ', 'い', 'う', 'え', 'お']
>>> "".join(["&#%d;" % ord(c) for c in text]) # つなげて完成
'あいうえお'
>>> "".join("&#%d;" % ord(c) for c in text) # 2.5だと [] が省ける
'あいうえお'
>>>
「今、Pythonスクリプトの何行目?」を知る方法はないかと調べてたら、 inspect モジュールの f_linenoというのがあったのですが、 #!/usr/local/bin/python import inspect ThisFrame = inspect.currentframe() def LineNo(): print "(1) %d in function" % ThisFrame.f_lineno print "(2) %d in function" % ThisFrame.f_lineno print "%d in main script" % ThisFrame.f_lineno LineNo() これを実行すると 9 in main script (1) 10 in function (2) 10 in function となり、これはこれで正しいですけど、関数定義の中の実際の行番号がわかりません。 もっと、スクリプトの中の絶対的な行番号を知る方法はないでしょうか。
呼出し元(ひとつ上のフレーム)の行番号を参照してみるテスト。 import sys def lineno(): try: raise ValueError except: return sys.exc_info()[2].tb_frame.f_back.f_lineno
>>674 意味はまだわかりませんけど、その定義を書いて下のようにしたらできました。
ありがとうございます。
def LineNo():
print "(1) %d in function" % lineno()
print "(2) %d in function" % lineno()
frameの意味とか勉強してみます。
連続ですみません。 関数定義の中にinspect.currentframe()を書けば良かったです。 def LineNo(): FuncFrame = inspect.currentframe() ・・・ もうちょっと実験すればよかった
それだとframeが循環参照になって解放されないらしいから、まずいと思うよ。 Python2.5 ドキュメントの 26.10.4 The interpreter stack 曰く、最後に del frame しなきゃいけないらしい。下のようにするべき? import inspect def lineno(): frame = inspect.currentframe() try: return frame.f_back.f_lineno finally: del frame def LineNo(): print "(1) %d in function" % lineno() print "(2) %d in function" % lineno() print "%d in main script" % lineno() LineNo()
678 :
673 :2007/01/24(水) 18:12:44
奥が深いですね・・・ もうちょっと勉強してみます
DevCamp、アプリケーションフレームワーク一色だな・・・
もっとも他にどんなお題が設定できるかというと... 科学計算ネタとか?
科学計算なあ。 計算対象(なんたら力学とか)のチョー専門的な話と 解法(離散化手法とか求解性能の分析とか)の割と専門的な話と ハード(SMPクラスタとか)の話とソフト(SciPyとか)の話があって、 最初の2つは知らない人、使わない人にはワケワカメな可能性が高いし、 あとの2つはあんまり面白い話題がないんだよねえ。 フーンで終わってしまう。俺は好きだけどねえ、そういう話。
よくわからんのだが、pythonでtask dispatchみたいな真似を している奴はいないのか? drubyってのは話には聞くが、rubyがわからないので使った ことない。
python distributed objectsでググればぼこぼこ出てくるって話だったな
>683 おお、ほんとだ。どうもありがと。 ついでですいませんが、どれかお勧めのあったら教えてください。
SOAP とかそのほかいろいろ実装はあるよね p2p型機構のもあるし
689 :
677 :2007/01/26(金) 15:19:47
>それだとframeが循環参照になって解放されないらしいから、まずいと思うよ。 ちょっと訂正。最近のPythonのGCは循環参照も検出できるからいつかは解放される。 ただ、循環参照してないオブジェクトが参照カウントが0になった途端に解放される のに比べて、解放されるまでに時間がかかるのでメモリ的に嬉しくないのと(GCに負荷も かかるはず)、循環参照検出機能がgc.disableなどでオフにされてると解放されないのとで、 「delしたほうがいい」ということみたい。(絶対じゃないみたい)
写真ないの? 以前の羊丸飲みネタは写真付きだったが、、、
↑画像、何がどうなってるのか分からないw
結局は負けたも同然ってことか ワニますこっと な言語ってあったっけ?
>694 なに勝ち負けにこだわってんだよ。
勝てないなと思うと 勝負事に興味の無いオレ、を表明するんだよね
つか、そもそも何と何の勝負なのかわけわからんじゃないかw
2.5をmingwでコンパイルしようとしたのですが、うまくいきません。 mingwでコンパイルしてる方いらしたらconfigureのオプションを 教えていただけないでしょうか。次のようにすると、 configure --without-threads --with-pth --pregix=/home/im/python25 configureは通るんですが、 ./Modules/posixmodule.c: In function `posix_mkdir': ./Modules/posixmodule.c:2199: error: too many arguments to function `mkdir' というエラーで引っ掛かってしまいます・・・。mingwの問題のような気がしないでも 無いですが、ひょっとしてposixmodule.cを手で直すしかないのでしょうか・・・。
>>699 pyMinGWというパッチが存在することからして、
Python.org謹製のtarballではコンパイルは通らない希ガス。
てか、なにゆえ自炊しているの?
拡張モジュールをMinGWでコンパイルして使いたいだけなら
本体側はPython.org謹製のWin32版をインストローリングすればいいわけだが。
>>700 えっと自分でビルドしてるのは、pythonを組み込み言語として
使おうと思ってるからでして、本家配布のものはVC7で
コンパイルされてるらしいので、できればmsvcrt.dllにCランタイムを
統一したいからです。あとインストーラが嫌いなんです・・・
あとユーザーの環境と組み込みの環境でバージョンが異なる場合を
考えると、ユーザーに本家からダウンロードさせるよりも、
python25.dllをアプリと一緒に配布した方がいいかなと・・・。
pyMinGWはちょっとググって見ます。ありがとうございます。
pythonとは微妙の異なるが、emacsでタブと、空白に色をつけたい場合はどうしたらいいでしょう? python-modeとかにないですか? 時々、タブと空白を混ぜて書いてしまって、訳がわからなくなる。
pythonと全く関係ないと思いますがfont-lock使えばいいと思います
ところで聞いてくれ
>>702 よ、スレとあんまり関係ないけどさ。
あやしいリージョンを M-x untabify または M-x tabify すればいいと思われ。
python-mode 使っていたらそもそもそんなことに悩まなくて済むはずだが
俺は indent-tabs-mode を nil にして、インデントは空白で統一している
個人的にはblank-mode.elが手軽だから、 たまーに確認程度に一時的onにする事はある
pythonの使える、おすすめのホスティングサービス教えてください(海外可)。 できればTurboGearやDjangoのつかえるやつ。
textdrive
xreaはpython2.4.3が入ってておすすめ
>711 xreaはサーバアカウント取得する時に どのサーバか選択出来るから無問題
sakuraんとこのバージョンはどうなってんのかな 一通りFAQ見てもみつからないんだけど
>>714 全サーバで同じかどうかは分からんけど
$ /usr/local/bin/python
Python 2.4.3 (#2, Nov 7 2006, 17:01:53)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
でも、俺自分のホームディレクトリの下に 2.5 をビルドして使ってる.
何の問題もないよ.
>>715 えっ!?
どうやって自分でビルドするの?
コンパイラ入ってるの?
sakuraもxreaもgcc使えたはずだけど
さくらでsqliteがコンパイルできんかった
>>715 xreaってSSH使ってコンパイルできたっけ?
最近ためしたとき無理だったが。
あれ? それなんだったけかなぁ 3.4.xはだめとか3.2.xはいけるとか そんなんだったきがする さくらでtrac動かすページに情報あったような...
自分でgccからコンパイルせにゃならんのね 鯖の仲間よ、ちょっとだけ負荷かけるが許してくれ
[nice]⊂(゜∀゜ )サンキュー おいらブサイクなんで nice -20 で逝こうとした。 でも否定されました。 あ り が と う sakura たん
import cElementTree as ET weblog = ET.parse(file('_OWv_Q_JNaU.xml')).getroot() for e in weblog: # xml要素の列挙 これがないとe.findall()が使えない… print e.text # XPath items = [] # ここで定義しないと駄目、嵌った…orz for i in e.findall('time'): secstr = i.find('sec').text sec = float(secstr) # sec = int(secstr) print sec # ここでは元のデータと同じ桁数なのに #print "%.3f" % sec items.append([sec, i.find('comment').text.encode('sjis')]) # listに入れたらfloat表記 print items; items.sort(); print items for e in items: # [[],[],[]] の 形式のリストから中身を取り出す print "%.3f\n%s" % (e[0],e[1])
> ○募集期間 > 1月末まで。 明日までか・・・・。
729 :
デフォルトの名無しさん :2007/01/30(火) 18:12:57
アタマくせえ
python 2.5.1 は4月まで延期 from python-dev
Pythonが流行るかどうかはgoogle次第か
バージョンアップについていけん・・・頭がまだ2.3なんですけど
>>726 ElementTree に XPath は実装されてないよ。
find() なんかの引数に渡せるのは、 'body/div/p' みたいに
要素名をスラッシュで区切った文字列だけだと思ってほぼ問題なし。
root = ET.fromstring(xml)
items = []
for time in root.findall('timeline/time'):
sec = time.find('sec')
comment = time.find('comment')
items.append([float(sec.text), comment.text])
ElementTree 公式のドキュメントと、urllib, urllib2 を調べると吉です。
737 :
726 :2007/01/30(火) 22:17:18
>>733 1.6で勉強したから、それ以降のことはよくわからない
Perlも4まで
>Perlも4まで ( ゚∀゚)人(゚∀゚ )ナカマー! >1.6で勉強したから、それ以降のことはよくわからない ヽ(´ー`)人(´ー`)ノナカーマ
Jythonと共に2.1で進化が止まったヨー
sorted関数が便利
枯れた環境が最高です
>>744 |
|
___ ,-────-、 | 最高ですか〜〜〜〜!?
/ ` \ |
/ヾ ヾ .,! !,,!_´,,//_// ヽ|
/=/`''~~ /彡- |\
|=.| 二 | 三- | \______
ヽ| ── \三- |
| ヽ ,, 、ー ̄ \ |
/ / \ |=/\- (
| / |/ / ,,|
| ( 。つ\ ノ ||
.| / 丶ー ヽ | |
| /____」 | ! ! .|
| |/ / / ノノノノ
| |__/ // /\_
//⌒丶 -─ / /≒/
( ヘ )____/_ノ /≒ /≒
/ /-' /≒ / ≒
/ ̄ ̄\_____/ ≒, / ≒≒
/─ \ / ≒ / ≒≒
,,.-- 、 / ,-、ヽ /l l !;;ノ |' 〈 < うるせえ | |ヽ.| / ヽ ./ l l l |
745 :
デフォルトの名無しさん :2007/01/31(水) 20:49:04
SciPyが使いたくて、Enthought Pythonをインストールしました。 で、IDLEを起動しようとしたんですが、 "tk84.dllが見つからなかったため、このアプリケーションを開始できませんでした。" とエラーが出て起動できません。 import Tkinterすると159と同じエラーが出ます。 IDLE以外にもTkを使ってるパッケージは同様のエラーで使えない状態です。 何か解決策があれば教えていただけますか。
tk84.dllを拾ってきたらいいんじゃね? activetclに入ってるらしいよ ググる先生が教えてくれたから間違いないよ
747 :
デフォルトの名無しさん :2007/01/31(水) 23:30:46
[Python-Dev] Happy Birthday, Guido!
749 :
745 :2007/02/01(木) 09:26:17
>746-747 ありがとうございます。 >746 とりあえず試してみます。 >747 仕事で個人的に使おうかと思っているのですが、 周りの人間が「オレもそれ使いたい」という状況になったときに、 導入障壁が低い環境にしたかったからです。 Scipy単体で入れるには、LAPACKなどのライブラリも含めて ビルドする必要があるらしいので。
単純に python.org の python-2.5.msi と scipy.org の scipy-0.5.2.win32-py2.5.exe と numpy-1.0.1.win32-py2.5.exe を 拾ってきてインスコすればいいんじゃないの?
751 :
745 :2007/02/01(木) 17:11:34
>750 downloadにバイナリが置いてあったんですね。 installのページしか見てなかった。orz
>>751 ところで SciPy 使ってどういう計算をする予定?
スクリプト言語で科学技術計算をやろうとするところに興味がある。
>スクリプト言語で科学技術計算をやろうとするところに興味がある。 いまや "フツー" じゃねーの?
matlabみたいに使うんじゃね?
755 :
745 :2007/02/02(金) 21:18:47
どういう計算かと言われると今の時点では特に無いのですが、 研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。 matlabは職場にあるんですがライセンスが限られているので、 フリーで使えるのはありがたいです。 計算時間が問題になるような用途には 専用のツールやらシミュレータやらで対応します。
>>755 >どういう計算かと言われると今の時点では特に無いのですが、
>研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。
>matlabは職場にあるんですがライセンスが限られているので、
>フリーで使えるのはありがたいです。
>計算時間が問題になるような用途には
>専用のツールやらシミュレータやらで対応します。
matlabを買った方がいいよ.
>>755 レスありがとう。なるほど、行列が扱える高機能電卓として使うってことね。
>>753 フツーなのかなあ。
pure Python スクリプトとして計算プログラムを書くの?
それとも C/Fortran コードを呼び出すためのグルー言語扱い?
並列化とかフツーはどーしてんだろう。。。
分野にもよるんだろうけど、ぐぐってたら 高エネルギー系かなにかの学会(シンポジウム?)での 発表資料で大規模なデータ処理・分析に python を 大々的に使ってるよーというような資料を見たことはあるな. それを探してっていうよりさりげなく引っ掛かってきた例だし numeric のスライドとかにも使われている例とか 出てなかったっけ?
python本家サイトのトップはNASAで採用が表示されているが
>>757 計算ごりごりのとこはCか何かで書いて、それの貼り合わせ用にPythonでしょ。
特に分業化が進むと有り難みがわかるよ。
>>758-760 レスどうも。
そーいや、シミュレータの制御全般に Python を使っている、という事例が以前 PyJUG のニュースに載ってたね。
その研究グループを率いている東大のD先生は大の Python 好きなのだそーな(直接うかがった)。
また先日、PyGTK でシミュレータのインタフェースを書いている別の研究グループのポスター発表を見かけた。
ところで、シミュレーション目的に使われる言語のデファクトスタンダードは MATLAB なんだよね。
インタラクティブな開発環境がシミュレーションの方法・アルゴリズムを考える研究者にとって便利なんだろう。
しかし、MATLAB は基本的に逐次の処理系なので、昨今安価に利用可能になってきている SMP マシンや
PC クラスタの並列計算性能が活かせない。じゃーどうするかというと、研究者が MATLAB で書いたアルゴリズムを
プログラマが時間をかけて C や Fortran に書き直して並列化していた。開発効率が恐ろしく悪いので何とかしたい、
ってんで Star-P なんて製品が出てきたけど、まだ発展途上っぽい。
個人的に Python が科学技術計算分野での役割は MATLAB とかなりかぶっていると思ってる。でもって
MATLAB と同じ問題を抱えている気がする。つまり、研究者がインタラクティブな開発環境としてプロトタイプに
使うにはうってつけだけど、いざ並列計算環境で実問題を解きましょうという段になると、結局 C や Fortran による
書き直しが必要になってくる。Star-P に Python/NumPy バージョンが存在するのもうなずける。
でね、「Python で科学技術計算」とゆーのをちょくちょく耳にするようになってきたので、
インタラクティブな pure Python の逐次環境と C/Fortran でゴリゴリ書かざるを得ない並列環境とのギャップを
みんなどーやって埋めてんのかなあ、と思うわけです。そのギャップに対して俺は何ができるのかなあ、と。
そもそも誰も Python でプロトタイピングなんかしてなくて、単なるグルー言語、貼り合わせ用なのかも知れない。
でもそれって「Python で科学技術計算」って言えるのかなあ、と。取り留めのはなしでスマソ。
PyGTK ぢゃなくて WxPython だった。もひとつ訂正: Python が科学技術計算分野での役割 → Python の科学技術計算分野での役割
761の話は並列でするような高度な計算でないと科学技術計算と言えないという ものが前提になってると思うんだけど、そうなの?
764 :
デフォルトの名無しさん :2007/02/03(土) 21:09:23
>>763 んー、俺の関心が主に並列計算にあって、逐次よりも並列の方が C/Fortran で書く必要性が顕著だから
761みたいな書き方になった(言い訳)。並列化のために云々というところを「高速(逐次)計算のために」と
読み替えても761の趣旨は変わらないです。
行列計算みたいなのは numeric とかの場合でも 実際には C で書いたライブラリに放り投げるから そんなに遅くはないんですよね?
そういうことなら >「Python で科学技術計算」って言えるのかなあ 言えるんじゃね?761の興味には適さないかもしれんが、一般的には言える。
あれ、ageてしまった。
>>764 は答えになってないかも。
pure Python (pure MATLAB) で十分間に合う程度の計算は科学技術計算とは言えない、とか
そういう意図は全然ないので念のため。俺の関心が HPC 方面にあるというだけのことです。
本気で高速化しようとしたらキャッシュ効率なども考慮すべきなので、 C などの言語で書くのは必然になる。「Python で科学技術計算」 なら それほど真剣に高速化する必要はないけど、それなりの速度が出て、 しかもちゃらっと書ける、ってのが落としどころなんだと思う。 そう考えると、いわゆるスケルトン系のアプローチなんかは向いてる ような気がする。言語の性質にも適合するところが多そうだし。
>>765 そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは
Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、
そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。
>>766 > 761の興味には適さないかもしれんが、一般的には言える。
そーなんだよね、やっぱ。これからは相手の趣旨を確かめるようにしないとなあ。
>>768 そこが落としどころだと俺も思う。
たぶん「本気の高速化」が必要な人には Python の「貼り合わせアプローチ」はアピールしないんだろうなあ。
ちょっと話が変わるけど、先日 High Performance Ruby (HPR) の開発者の話を聞いた。 MPI でコリコリ並列プログラムを書くのはたいへんなんで、もっと抽象度を上げましょう、 とゆーことで、逐次の Ruby を並列プログラムが書けるように拡張してますよーという内容。 1.クラスタを構成する個々の計算ノードを place オブジェクトとして抽象化 2.for ループを並列化して、ループ内のコード(クロージャ)を place オブジェクトに割り当てて並列実行 てなことをやるという話だった。 Python もこういうアプローチを進めてみると「本気の高速化」が必要な人にもアピールするかもなあ。 インタラクティブな逐次環境と高性能計算(HPC)用途の並列環境のあいだのギャップを埋める可能性は こっちの方向にある気がしてきた。 みんな、取り留めのないはなしに乗ってくれてありがとう。
や は り R u b y か
>そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは >Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、 >そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。 「ボトルネックはCで書くからRubyの遅さは問題にならない」はむしろRubyの売り文句だった 希ガス。「逆に考えるんだ。RubyをGCのついたCライブラリと考えるんだ」というのもあったね。
あー、えーと、俺は自他共に認める根っからの Python 使いなので念のためw
「〜なあ」ってMatzの口調にそっくり。もしかして本人?
770=773です。
>>772 Ruby のことは知らないけど、
少なくとも Python では「遅さは問題にならない」というわけにはいかなくて、
Cで書かれたライブラリを呼んでいても数パーセントの呼び出しオーバヘッドが乗ってくる。
結局のところ、生産性を取るか高速性を取るかという話になってるんだよねえ。
ぶっちゃけ、グルー言語としての Python はほぼ完成の域にあって
技術的にはあまり面白みがないし、前述のギャップも埋められそうにない。
じゃあどういうアプローチなら可能で、俺にも貢献ができそうかなあと思ったわけです。
776 :
デフォルトの名無しさん :2007/02/03(土) 22:49:07
>>770 そういう話であれば Fortress の今後に期待
>>777 先日 Sun のインタプリタがフリーソフトになったし有望株だね。
昨年の春に Guy L. Steele Jr. の講演を聞いたよ。
開発目的は To Do for Fortran What Java Did for C なんだと言ってた。
数式っぽくコーディングできるあたりは MATLAB ユーザにも受けるかもね。
HPR の開発者の人も Fortress を含め DARPA HPCS 言語を引き合いに出して
並列プログラミングの生産性を上げることが HPR の目標だと言ってた。
この方面は今後面白くなりそうだね。
Python ベースの分散並列プログラミングのフレームワーク作りとかやったらチョー楽しそう。
誰も使わないに200ルピー
なんかガキっぽいタイトルだなw
ガキっぽい脊髄反射しかできないやつにそういわれると説得力あるな(wwwwwww
>RubyやPerlを習得した若年層のWeb開発者を中心に、Pythonへの関心が高まってきています。 この表現に何か引っ掛かるものが・・・w
ルビーやパールはリナックスだからな パイソンはABCから派生したらしいね パイソンはスクリプト言語で速度重視では ないだろ
785 :
デフォルトの名無しさん :2007/02/04(日) 14:23:43
>>783 あんまり粘着するとZOPE関係者だと疑われるよ
>784 どこのコピペ?
コピペじゃないよ ルビーやパールはリナックスの人が使うから パソコンユーザーのほとんどがウインドーズの人 だからパイソンを使うという話
そういう意味ではパイソンもリナックスだよ。たいてい標準装備だし。
>>780 > Software Design、LLフレームワーク、.Net Expertの既存コンテンツからの再録を中心にすえることで、コストを抑えた製作を行う予定です。
激しく萎える説明文ですな.
>>789 www
企画書かなんかをそのまま写しちゃったのかな
>>780 Djangoって書いてあるけど,これまでSDの記事になったことってあったっけ?
どこからの再録なんだろう?
>>791 書き下ろしの記事もあるみたいだね.
雑誌のMOOKなんだから、再録があるのは普通.
いずれにしろ、ここに巣くってる貧乏人のITドカタ共には関係のない話だけど.
IT貴族もいるお\(^o^)/
>>792 プログラミングなんか仕事にするかよ、失礼なw
老後の趣味です
pythonをinteractive modeで起動したときに、C-pやC-nって使えるはずですよね? MacOS X (MacBook intel core duo) でPython2.5をコンパイルしたら、C-pもC-nも使えないから困ってます。 $ cd Python-2.5/ $ ./configure --prefix=/usr/local $ grep readline config.log ... ac_cv_lib_readline_readline=yes ac_cv_lib_readline_rl_callback_handler_install=yes ac_cv_lib_readline_rl_completion_matches=no ac_cv_lib_readline_rl_pre_input_hook=yes #define HAVE_LIBREADLINE 1 readlineはちゃんと検出されてるんだけどなあ。 なんかアドバイスちょーだい。
大変っスねw
なにそのつまらん返しw
>>796 OSX(10.3.9)ですが、普通に使えてますよ。
ターミナルの設定なんかを見直してみては?
unix 上の python で str = '\hoge\real\path' # window系の path 文字 idx = str.find('real') ってことをやりたいんですが '\r' として 解釈されてしまうんでどうにもマッチできません。 re.escape() ってのがソレかと思ったんですが \r は そのまま残ってしまいました... orz どうやって加工すればいいのでしょうか?
Rubyとは違い、シングルクオートでもエスケープ文字は有効になる。 >>> '\n' == "\n" True だから '\\hoge\\real\\path' とするか r'\hoge\real\path' とするといい。
803 :
726 :2007/02/05(月) 14:43:37
「'\r' として解釈されてしまう」ということまで判っているのに解決できないという というのが興味深い。
ごめんなさい.... >802,803 を読んでそっかーと思って調べなおいてみたら... 読み込んだ時点で '\\r' に変換されていたのに 自分のコード片のテストを '\r' な文字を突っ込んで やろうとしていた自分の勘違いミスでした... アドバイスありがとうございます
806 :
デフォルトの名無しさん :2007/02/05(月) 17:12:35
>>775 なんか、話を蒸し返すようで悪いが、
言語がスレッドセーフであるのも大事なんだろうけど、
プログラムする側も、マルチスレッドのデザインパターンが
使えないとまずいんじゃないの?
結城氏の本にデザパタのマルチスレッド版があったが(java本だけど)。
もっとも、自分の場合は普通のデザパタを学ぶので、手一杯。
いつか余力があったら、マルチスレッドのデザパタもやりたい…。
プログラミングの鬼門一覧 ・ポインタ(リファレンス) ・構造体 ・オブジェクト指向 ・マルチスレッド すべての鬼門を越えられないと,デザパタを学んでも"設計"ができるようにはならない. できない人は手足君として一生こき使われる運命.
デザパタ=劣化オブジェクト指向 どうしてみんな自分の手足を縛りたがるのかが不明
>>807 そんな基本的なことを知らない馬鹿はまずいないw
オブジェクト指向の知ったかが多いことは過去スレが示している
811 :
デフォルトの名無しさん :2007/02/05(月) 17:52:16
うーん、Cの方かと思うけど、 Pythonの場合は、 ・ポインタ(リファレンス) ・構造体 はいらないよ。 Pythonは変数は基本的に参照渡しがデフォだし、 構造体は、メソッドのないクラスで代用だと思う。 オブジェクト指向とマルチスレッドは必須じゃないけど、 使えるようにはなりたいねー。 ただ、マルチスレッドの優先度は低いでしょ。 デザパタ本は、Pythonで書かれた本がほしいよね。 もっとも、慣れればjavaをPythonに直すのはたいした事も ないけど。 みんなして、デザパタ本のJavaをPythonで組みなおしてるのは 無駄の極みだと思うので、誰か本ででもwebででも公開して ほしい…。
812 :
デフォルトの名無しさん :2007/02/05(月) 17:58:10
>>808 大丈夫かよ。
メソッドで直接インスタンスの生成とかしてないだろうね?
「みんなして」ってことは
>>811 氏は当然してるってことだよね。
それを本やwebで公開したら良いと思ってるんだよね。
だったら自分でするべきことは決まってるよね?
_,,..,,,,_ . _ ./ ,' 3 / ヽ--、 l / ヽ、 /`'ー/_____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
816 :
811 :2007/02/05(月) 18:20:35
じゃ、Template Method パターンを。 >>> import sys >>> import exceptions >>> >>> class _Template(object): # Abstract なつもり ... def write(self): # public なつもり ... self._writeHeader() ... self.__writeBody() ... self._writeFooter() ... def _writeHeader(self): # protected なつもり ... raise exceptions.NotImplementedError, '%s' %`self.__class__` ... def _writeFooter(self): # protected なつもり ... raise exceptions.NotImplementedError, '%s' %`self.__class__` ... def __writeBody(self): # private なつもり ... sys.stdout.write(self._message) ... >>> class Implement1(_Template): ... def __init__(self, message): ... self._message = message ... def _writeHeader(self): ... sys.stdout.write('/ ') ... def _writeFooter(self): ... sys.stdout.write(' /\n')
なんだよそれw
818 :
811 :2007/02/05(月) 18:21:31
>>> class Implement2(_Template): ... def __init__(self, message): ... self._message = message ... def _writeHeader(self): ... sys.stdout.write('+-' + '-' * len(self._message) + '-+\n| ') ... def _writeFooter(self): ... sys.stdout.write(' |\n+-' + '-' * len(self._message) + '-+\n') ... >>> x = Implement1('test1') >>> x.write() / test1 / >>> x = Implement2('test2') >>> x.write() +-------+ | test2 | +-------+ ホントは、どっかで拾ってきたものだけどなw
819 :
デフォルトの名無しさん :2007/02/05(月) 18:26:24
やれやれ、 インデント崩さずに持ってくるのは、難しい…org
ファイルロックについてお尋ねします。 Windows, MacOS, UNIXの各プラットフォーム間で可搬性を なるべく失わずにファイルロックを行うにはどうしたら良いですか? file.flock(FILE::LOCK_SH) のようなことがしたいのです。 os.open()でいけるかとも思ったのですが、ファイルオブジェクトを 返すのではなくディスクリプタを返すらしく、使うのに躊躇しています。
ファイルディスクリプタの扱いがわからんレベルなら、 マルチプラットフォームは諦めたほうがいい。
>>816 >>818 そういうのって、先に、Implement1と2があって、共通部分を自然に抽出
したら、_Templateが出てきました。っていうのが本来の流れであって、
はじめから_Templateありきで書き始めるのは、むしろ生産性が落ちると思う。
そして、本当に、_writeFooter、_writeHeaderが必要なのかどうか(この場合必要ない。
を考えなくなるから、いつまでたってもコードがきれいにならない
823 :
デフォルトの名無しさん :2007/02/05(月) 19:45:51
テンプレート・パターンの重要な点は、 細部なんかどう書くのか分らないけど、 これこれこういう筋道で組み立ててよ、と指し示すためのものだ ということでしょ。 テンプレートは作ったから、あとは君、頼むね、っていうか。 エラーが出るようになっているのは、そうなっているかを チャックするためだし。 一般的にいって、オブジェクト指向ではクラスを作る人と 使う人が別にいて、クラスを作る人は苦労をしょいこみ、 クラスを作る人は楽をするようにする、というものでしょ。 気がついたら、ほとんどフレームワークのようになっていた というのが理想なんじゃないかな。もちろん、そんなにうまく いくもんじゃないけど。 クラスを作る人が苦労を背負い込めば、使う人は楽をできる。 それが基本の考えと思うよ。 あるいは、一度苦労してクラスを作っておけば、 あとで何度でも楽ができるというか。 クラスを作るのは一度だけ、でも、インスタンスは何でも 使うもんだし。
>>811 ポインタが分からないヤツにどうやって参照渡しを説明しろと?
構造体が分からないヤツにどうやってオブジェクト指向のデータ構造を説明しろと?
825 :
デフォルトの名無しさん :2007/02/05(月) 19:58:04
>>824 いや、だって、cならそうだろうけど、
Pythonでは基本的に参照渡ししかないし、
構造体はないから、メソッドを省いたクラスを使うしかないし。
もちろん c ならお説のとおりと思いますが。
オレはVBで参照渡し覚えたけどな だからCをやったときすぐにポインタが理解できた
775です。流れを無視して遅レス。
>>806 えーと、あまり網羅的に見ているわけじゃないけど、
すくなくとも俺の知る限り、科学技術計算、特に高性能計算(HPC)の分野では
オブジェクト指向のオの字もないです。もちろんデザパタもね。
MPI とか OpenMP といった並列化技術が主流で、
みんな C/Fortran でゴリゴリと構造化プログラミング(笑)してます。
つまり、「デザパタ」と呼べるようなオブジェクト指向的共通認識が全然ない。
もちろん MPI や OpenMP には各々「定石」の書き方、たとえば all-to-all とか
reduction みたいな各種の常套手段があって、知らないと困るわけだけど、
そういうのはデザパタとは呼ばない気がする。
でもって、今ある道具や定石は抽象度が低くて生産性があまりよろしくない。
それで Fortress とか HPR とか
>>778 の「分散Python」みたいな話が出てくるわけです。
所詮何が必須かなんて何をやりたいかによって変わってくるんだろうけど、 参照渡しと値渡しの違いが判らないと、pythonでも困る場合が多いような。 値渡し相当にしたくて、リスト[:]でコピーして渡す場合も多いよね。
それに、デザパタってのは右も左もわからないような新兵どもを それなりに使える駒の集団にするための道具であって、 一人で動くプログラマにはあまり関係ない。 「珠玉の〜」であろうとKnuth本であろうと先人の生きたコード 読んで学ぶのだろうと、好きなやりかたで学べばだいたい同じような 所に落着くしね。
>>830 そうそう、デザパタなんて色んなスキルのヤツが沢山いる開発チームで使う
コミュニケーションの道具に過ぎない
プログラミングの神髄はもっと深いところにあるし
誰でも神髄に触れられるわけではない
>ポインタ抜きでデータ構造について説明できる 参照渡しにしろポインタにしろ同じものを別の単語で説明しているだけだし 「ポインタ抜き」に拘る理由も[ポインタを抜いてもいい」理由もないと思う むしろ ぽいんた というのがハッキリ見えているのは 概念の説明には便利だと思う。
>>828 オブジェクト指向の前に構造化設計/分析が先じゃないかな。
>>833 んー、たぶん、C/Fortranでゴリゴリってのが現場の要求に一番見合ってる分野なんだと思う。
読みやすくーとか、保守性がーとか言ってたらコードがどんどん遅くなって、
大枚はたいて買った計算時間が無駄になる世界だからね。とても保守的で旧態依然としてる。
そういう世界だと Python みたいな「速度はそこそこだけど書きやすい」的な言語は
はっきり言って異端で、使っている人がいると目立つのです。
並列計算機が安くなって計算時間を金で買わなくてもよくなった人が増えた一方で、
解くべき問題が複雑になって生産性が速度に優先するようになってきたってことなんだろうなあ。
いい流れだ。
835 :
デフォルトの名無しさん :2007/02/06(火) 01:07:37
横からだけど、構造化設計/分析って、 UMLなどのオブジェクト指向・分析設計のこと? それとも、構造化プログラミングの設計のこと? 僕としては、ぱっぱと関数にわけでくみ上げていける 構造化プログラミングの良さをもっと見直してもいいんじゃないかな、 という気もしてる。 UMLでいつまでも足踏みしてるのも馬鹿らしいし。 いったん構造化でコードを組んでから、必要な部分だけクラス化して いくというような手法がいいんじゃないかと思うんだけど、 邪道かなぁ。 リファクタリングが手法として認められるなら、 これだって、よほどマトモな考えと思うんだが。 あー、もとの話はマルチスレッドによる高速化の話だったんだよね。 デザパタのマルチスレッド版の話を持ち出したのは、スレッドの同期を いちいち手作業で考えていたのではやってられないと思ったので。 形式をあわせるだけで、スレッドの同期やロックが安心できるなら、 その方がいいかなと。 Javaではマルチスレッドのデザパタがあるようだし。(結城氏の本ね) ところでその前に、Python自体がスレッドセーフなのかどうかが 分らないんだけどw
「科学技術計算」というのがどこからどこまでを指すのかわからないけど、大学なんかで実験データを 加工したりといった用途ならPythonで十分な希ガス。漏れはC++で組んだけど、結構大変だった。 そういえば「電脳Ruby」とかいう数値計算にRubyを使う話があるけど、この分野なんかでもPythonで 十分といえるのではないだろうか。
無政府状態 ↓ 手続きの抽象化 ↓ [構造化プログラミング] ↓ データ構造の抽象化 ↓ [オブジェクト指向プログラミング] ↓ データ構造の抽象化を前提とした手続きの抽象化 ↓ [関数型プログラミング] ← 今このへん ↓ ?????
>835 オブジェクト指向を含めず構造化のみで組むってこと? 俺は逆に構造化のみのプログラミングの方が データと手続きを分離しなくちゃいけなくて面倒だと思うのだが…
もうちょっとふさわしいスレでやってくれよ。邪魔。
>>838 スキルも経験も作りたいものも様々だから一概には言えない。
明らかに不毛な議論。
>>821 おれも調べたけど、Pythonではwindowsとunixとで共通に使えるfile lockは提供されてないみたい。
これぐらいあってもおかしくないのにね。Rubyにはあるからできないはずないんだけど。file descriptor関係なく。
おれは
fcntl = msvcrt = None
try:
import fcntl
except ImportError, ex:
try:
import msvcrt
except ImportError, ex:
pass
として、あとはfcntl is not Noneならfcntl.flock()を、msvcrt is not Noneならmsvcrt.locking()を呼び出す関数を定義している。
>>827 の方法だとうまくいかないと思うけど、うまくいったら教えて。
842 :
デフォルトの名無しさん :2007/02/06(火) 05:57:08
>>838 >オブジェクト指向を含めず構造化のみで組むってこと?
じゃなくて、Pythonではオブジェクト指向が強制されてないのを逆手にとって、
構造化プログラミングを基本としつつ、必要なところだけオブジェクト指向に
するという考えもあっていいんじゃないかなといってみただけだよ。
構造化は、とにかく簡単に手がつけられるからね。
オブジェクト指向だと最初の設計ですべて前倒しにくるから、
やんなるときもあるなあと。
Pythonの勉強をしています 以下のようにしたのですがうまくいきません >>> keys = ['a', 'b'] >>> vals = [] >>> index = {} >>> for i in keys: ... index[i] = vals ... >>> index {'a': [], 'b': []} >>> index['a'].append('hoge') >>> index {'a': ['hoge'], 'b': ['hoge']} キー a の要素である空リストに hoge 文字列を追加したいのですが b にも追加されてしまいます。 >>> index {'a': ['hoge'], 'b': []} こうなってほしいのですが、ご助言お願いします。
for i in keys: index[i] = [] とか。 あと、keys とか index は辞書やリストのメソッド名になってるから 使わない方がいい。
844さん ありがとうございます。 index[i] = [] でできました。 自分でも調べてみまして、Python ライブラリリファレンス の シーケンス型ってとこに「注意しなさい」とかいてありました。 index = range(0) とやっても大丈夫でした。 なぜ駄目なのかはよくわかっていません。 ists = [[]] * 3 と lists = [[] for i in range(3)]の違いです。 同じ場所をみてしまう? もう少し自分で調べてみます。 あと、keysとかindexとか普通につかってました。 どうもありがとうございました。
参照渡しがどうのこうのってはなしじゃないの?
プログラミングの基本はなんでも同じなんだよ。 だってハードウエアのアーキテクチャはもう何十年も変わってないんだから。 ポインタとかリファレンスの概念が分からない人は壁にぶち当たって挫折する。
>845 >同じ場所をみてしまう? そういうことです。詳しくはほかの人がいっている 参照渡しとかポインタと化のキーワードについても調べると ためになると思うよ
あまりにもドンピシャな質問だったので、ネタかと思ったぐらいだ。
>>843 を生かすのであれば
index[i] = vals[:]
かね
>>> index = {} >>> vals = [[]] >>> index["a"] = vals[:] >>> index["b"] = vals[:] >>> index {'a': [[]], 'b': [[]]} >>> index["a"][0].append(1) >>> index {'a': [[1]], 'b': [[1]]} >>> マジレス禁止だからねっ
852 :
827 :2007/02/06(火) 19:32:33
>>841 WinXP SP2 + Python2.5 + pywin32-210 で試してみました。結果は、
win32file.LockFileEx(hfile, flags, 0, 0xffff0000, __overlapped)
OverflowError: long int too large to convert to int
お察しのとおり、動きませんでした・・・。
msvcrt.locking()は排他ロックしかないのが気になります。
RubyだとWin95ならLockFile()、NTならLockFileEX()を呼んで
File::flock()しているようなので、ctypesをで同様のことができないか調べてみます。
いろいろと勉強になりました。ありがとうございました。
>>821 >>841
>>844 >あと、keys とか index は辞書やリストのメソッド名になってるから
>使わない方がいい。
別にビルトイン関数じゃないし、問題ない希ガス。
>>> index
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'index' is not defined
それに、仮にindexがビルトインで自前で定義した変数・関数が
それを隠しても、モジュールなり関数なりの中だけ(スコープの中だけ)
だから気にする必要なさげ。(自分が使わなければ問題ない)
>>843 keys = ['a', 'b']
index = dict([(k, []) for k in keys])
>>> def foo(): ... def list(*a): # ビルトイン関数を隠す ... print "list" ... list([1,2,3]) ... >>> foo() list >>> list([1,2,3]) # 関数の外は俺list()のスコープ外だから影響なし [1, 2, 3] Rubyとかだと、うっかりトップレベルでindex定義しちゃうと悲惨なことに なるけどね。
メソッド名を使うのはへっちゃらだな。ビルトイン関数名はハマる場合あり。
Pythonはスコープのルールがシンプルだからいいよね selfもまんざら捨てたものじゃない
843です
皆さんありがとうございます
本当に参考になります
>>854 さん
!これかっこいいですね
これ使います
ありがとうございました
へー、dictってタプルのリストで初期化できるんだ。知らんかった。
862 :
860 :2007/02/07(水) 02:46:45
>861 スマン。Tutorialに書いてあるの斜め読みで読み落してた。
ジェネレータ式が使える。 index = dict(((k, []) for k in keys))
>>862 俺も知らんかった。今ちょうど下のようなのが欲しかったから、こりゃ便利。
Keys = ('K1','K2')
ValsA = ('V1A','V2A')
ValsB = ('V1B','V2B')
DictA = dict(zip(Keys,ValsA))
DictB = dict(zip(Keys,ValsB))
コンソールからディレクトリ名を入力させてやる時に、入力補完 とかするにはどうしたらいいですか。
IPythonを使う
下らない質問ですいません。 ipython 0.7.3 + python 2.5 ですが。 In [23]: s = '@'.decode('cp932'); print s, type(s), hex(ord(s)) @ <type 'unicode'> 0x2460 これあってますよね。でも In [24]: s = u'@'; print s <type 'exceptions.UnicodeEncodeError'>: 'cp932' codec can't encode character u'\x87' in po sition 0: illegal multibyte sequence In [27]: print type(s), hex(ord(s[0])*0x100+ord(s[1])) <type 'unicode'> 0x8740 タイプはunicodeなのにコードはsjis。どうして? python 2.5だと >>> s = '@'.decode('cp932'); print s, type(s), hex(ord(s)) @ <type 'unicode'> 0x2460 >>> s = u'@'; print s, type(s), hex(ord(s)) @ <type 'unicode'> 0x2460 で望んだ結果になるんですけど。
Python3000wktk
>>870 一般に、対話環境において、s = u'@' が s = u'\x87\x40' と等価になるか
s = u'\u2460' と等価になるかは個々の対話環境の実装・バージョン依存だと思われ。
だめなものはだめ。
(もちろんソースファイルに書く場合は # -*- coding: spamspam -*- の設定次第。
これはまた別問題。)
>>872 わかりました、とりあえず対話環境ではこういうものだということで理解しました。
どうもありがとうございます。
875 :
デフォルトの名無しさん :2007/02/09(金) 23:24:57
Some クラスのインスタンス s = Some() に、メソッドを追加することはできますか? s.Foo = メソッド のようにしたいのですが。
メソッドを定義して代入しちゃいなよ、you
877 :
デフォルトの名無しさん :2007/02/09(金) 23:40:42
どんな風に書いたらよろしいでしょうか。
>>> import new >>> S = type('S', (), {}) >>> s = S() >>> s.amethod = new.instancemethod(lambda x, y: y, s, S) >>> s.amethod(10) 10 >>>
pythonスクリプトのなかでPythonのバージョン番号を調べる方法はありますか
import os os.system('python -V')
import sys version = sys.version.split(' ')[0]
import sys print sys.version_info
import commands print commands.getoutput("python -V")
>880 /usr/local/bin/python2.3 とかを起動してたら?
TMTOWTDI!
886 :
デフォルトの名無しさん :2007/02/10(土) 11:36:34
いつも思うんだけど読めない略語なんかつくってどうするつもりなんだろう
ああいうのは、読めるかどうか、知ってるかどうかで 何か差別化をしたい人が使いたがるだけ。
ということにしたいのですね。
作った本人は、その分かりづらさに気付いてない。それだけのことです。 BGNとかVRSNとか。なんのことやら。
はみちちです
>>886 読んで貰えなければそれはそれで構わないと思っているのだろう。
公共の場を使って非常に狭い範囲の読者だけに伝えるという非効率的な行為に
喜びを覚える種類の人間だと思われる。
別にプロファイリングでオナニーする必要は無いと思うんだ。
pythonの正規表現めんどくせええええええええええええええええ
Perlへお帰りください
と言うより、openが組み込みクラスオブジェクトfileの別名だな。
未だに codecs.open のまんま
数値を2進数表記に変換する関数はありますか? 16進数や8進数に変換する事はできるのに・・・ うーん・・・
自分で作ってた
関数、ライブラリになかったら自分で作るものだと思ってた
2chで教えてくれると思ってたッ
def a(n,s='')return s if n == 0 and s else a(n/2, str(n%2)+s)
def a(n,s=''):return s if n == 0 and s else a(n/2, str(n%2)+s)
905 :
デフォルトの名無しさん :2007/02/13(火) 05:52:38
pythonでFortranのunformattedのバイナリファイルを 読み込むにはどうすればいいのでしょうか?
>>903 みたいな表記って難しい・・・
とくにif n == 0 and sのあたりがどうにも・・・
lambda x: ''.join( [(x>>i and str(x>>i & 0x1) or '') for i in range(32)][::-1])
def a(n,s=''): return s if n == 0 and s else a(n/2, str(n%2)+s) if n >= 0 else '-'+a(-n)
909 :
デフォルトの名無しさん :2007/02/13(火) 12:01:38
Pythonの奴らってドSの集団だな(WWWWWWWWWWWWWWW
勉強にはなるし使えるかも知れないけど きちんと関数名を考えて docstring をつけておかないと 後で絶対分からない代物だな
pythonの良さって可読性とかじゃなかった?w
>912
>>902-903 >>907-908 は
Pythonの可読性を敢えて無視した結果だろw
ワンライナーで書くなら、読みにくいと言われるPerlや
キモイと言われるRubyの方がマシに書けてしまうよ。
普通にPythonで書くなら
>>904 かと。
914 :
デフォルトの名無しさん :2007/02/13(火) 14:46:11
俺はPython を2.5(win)からしか知らないが、 コメントに日本語を使うと落ちてしまうというのは、 昔からなの? 対話モードだと、ちゃんと動くんだけどな。 悲しい…。 なぜ落ちるのか分らなくて(対話モードでは問題ないだけに)、 デバッグ・モードにすら入れないし、分らなくて非常に悩んだ。
codingの指定ちょんとしてないだけだろ・・・
>>914 昔も今もそんな現象はないと思う。
参考までにエンコーディングとコメントに書いた文字列は何?
917 :
914 :2007/02/13(火) 15:28:49
いろいろ調べたところ、不具合の理由は、 site-packages の中に置いた sitecustomize.py 中身 import sys sys.setdefaultencoding("mbcs") が、なにも効いていないようなのが理由だと思えます。 当方 winですが、実行したいプログラムの冒頭に # -*- encoding:mbcs -*- と置けば、問題ないのを確認しました。 初歩的躓きに、付き合ってくれてありがとう。
>>917 いや、setdefaultencodingはソースファイルのエンコーディングとは無関係だから…orz
PEP-0263。
ちょんとする…
lambda以外をやっと解読した・・・
ライブラリの中の関数とか変数を 変えるにはどうやればいいですか? 再定義みたいなことって出来ます?
その行為が良いか悪いは置いといて普通に代入すればいいでしょ
>>> mod = open('/tmp/lovespam.py', 'w').write("print 'I love spam!'¥n") >>> import lovespam Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: No module named lovespam >>> import sys >>> sys.path = sys.path + ['/tmp'] >>> import lovespam I love spam! >>>
fromとかimportとかの名前の取り方がよく解らん。 階層構造?なんでしょうか?
>>924 君の質問がよくわからん。
日本語?なんでしょうか?
階層構造とか何を言ってるのかよくわからん。 単なる名前指定?なんでしょうか?
質問に対して煽りで応えるpythonクオリティ ま、phpかrubyつかっとけ
これが永久凍土の問題ってやつか
冷えるなぁ
では、ここでエスパーの俺が答えよう
>>924 はい。階層構造なんです。
エスは余計だな。
>>> import sys >>> sys.ps1 = '+++' +++ import os +++ for d in ['foo', 'foo/bar', 'foo/bar/baz']: ... os.mkdir(d) ... open(os.path.join(d, '__init__.py'), 'w').write('') ... +++ open('foo/bar/baz/qux.py', 'w').write('quux="5"') +++ import foo.bar.baz.qux.quux Traceback (most recent call last): File "<stdin>", line 1, in ? ImportError: No module named quux +++ from foo.bar.baz.qux import quux +++ quux '5' +++ foo.bar.baz.qux Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'foo' is not defined +++ from foo.bar import baz +++ baz.qux.quux '5' +++ foo.bar.baz.qux.quux Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'foo' is not defined +++ import foo +++ foo.bar.baz.qux.quux '5'
分からん奴はRubyなりPerlなり使っとけということで
そこで躓くならRubyだろうがPerlだろうが駄目な気もするが・・・
* phpかruby * RubyなりPerl 共通項:Ruby わかりやすい自演だな(www
同一人物ならRubyのRは両方大文字だろ・・・常識的に考えて
じゃあ、phpかPerlってことで。
>>924 まずはPython2.4JPドキュメントのチュートリアル6「モジュール」を読んでみるんだ。
読んだら
>>933 の書いてくれたサンプルコードを試してみる。
そのときはfoo/bar/bazがディレクトリ(パッケージ)、qux.pyがファイル(モジュール)、
quuxが変数(名前)であることを確認してからimportを試すこと。
誰でも多少はつまづくところだと思うからがんばって。
940 :
デフォルトの名無しさん :2007/02/14(水) 19:16:35
画面付きアプリも作れますか?
ウィンドウやボタンとかのGUIプログラムのこと? つくれるよ。 Tkinter とか wxPython とかでググれ
cursesでぐぐるのも可。呪いの言葉ではないよ。
cursesは素人にはお勧めできないと思う‥‥‥。 sttyって何? みたいな。
Tkinterはtcl/tkの知識があれば扱いやすいのかもしれないけど、他の言語の 常識的なGUIライブラリに触れたことがある人はwxPythonのほうが絶対扱い易いでしょ。
>945 >他の言語の常識的なGUIライブラリ MFCのことかーーーーーーっっ!! # あれを常識的と言われてもその、なんだ。困る(異端とまでは言わんが……なぁ)
>>946 > MFCのことかーーーーーーっっ!!
違うと思う
Windows用なら wx その他重視なら tk Windows用GUIを作ったことがあるなら もしくは使い慣れているのが Windowsならばなら wxの
949 :
940 :2007/02/15(木) 08:42:24
>>946 MFCは異端でしょう。存在が間違いというか。
Jestem Tkinterski. (私は Tkinter 好きです。)
そこでPyQtですよ。
953 :
940 :2007/02/15(木) 10:53:37
wx, tk, PyQt, Flexという単語は頭に入りましたが、何が何だか...
>>954 >Pythonに最初からついてくるGUIライブラリはTkinterだけ
そしてそれが何故かと言うと・・・
http://www.wxpython.org/quotes.php > wxPython is the best and most mature cross-platform GUI toolkit,
> given a number of constraints. The only reason wxPython isn't the
> standard Python GUI toolkit is that Tkinter was there first.
> -- Guido van Rossum
Tkinterが始めにあったからという理由だけなんだね。
これから始めるなら wxPython のほうが断然お勧めだけどなぁ・・・
そういえばpy2exeのサンプルもTkinterじゃなくて、wxだったなあ
>>957 使ってない。エディタでソースごりごり。w
エディタゴリゴリで高機能GUI作れるんかなぁ? VisualWxとかどうよ? 見つけただけで使った事無いんだけど。
>>960 「高機能」って意味がわからんけど、Sizerとかの扱いに慣れれば却って楽だよ。
「見た目」で設計しちゃうと、クロスプラットフォームで破綻しやすいよ。
プログラムには論理情報を書いて、ツールキットにレイアウトさせたほうが良い。
あ、クロスプラットフォームで使われてますか? じゃあ、どういうアプリをどういう風に作るのかアーキテクチャーとか教えて下さい。 実行環境も教えて?
最近どのスレもこんな感じだ・・・
964 :
デフォルトの名無しさん :2007/02/15(木) 13:07:07
最近、時間発展の数値シミュレーションの可視化に Tkinter を使ったお。 数値シミュレーションの部分は C で書いてある。 これを C で書いた拡張モジュール経由で Python 側から呼び出す。 Python 側では一定時間毎に C の数値計算コードを呼び出して 計算結果を Tkinter の Canvas で描画。 シミュレーションの制御は start, stop, ステップ実行の3つのボタンで。 これぐらいシンプルだとどのツールキットでも大差ない。 ____ /⌒ ⌒\ /( ●) (●)\ /::::::⌒(__人__)⌒::::: \ だから標準添付の Tkinter でやるお! | |r┬-| | \ `ー'´ / もちろん拡張モジュールは標準添付の distutils を使ってビルド。 Windows でも Linux でも素の Python だけでビルド&実行できるお。
ソースと画像うpしる! ブログでも良いお。
>>964 Adsenseヘルプ関係はPythonですよ
ウェブサイトじゃなくてデスクトップアプリが知りたいでつ。
じゃあ、自分で調べろとしか
今自分でウェブで調べてるんですが、何か?
>>970 ならここで聞くなでFA
人に聞く態度じゃない。
>>966 ____
/ \
/ _ノ ヽ、_ \
/ o゚((●)) ((●))゚o \ ほんとはうpしたいんだお…
| (__人__) |
\ ` ⌒´ /
____
/ \
/ _ノ ヽ、_ \
/ o゚⌒ ⌒゚o \ でもまだバグってて流体粒子が爆発したり壁をすり抜けたりするんだお…
| (__人__) |
\ ` ⌒´ /
Sitemap作るのもPythonじゃなかったっけ
Gtk+ の OS X 対応状況ってどう?
tk はエディタで書くのがいいと思うけど、 他はIDE の支援がないと、辛いんじゃない?
pythonでGUIの需要が以外と高いことに驚いた 俺も勉強する。Tkinter
GUIはRADで切り貼り、ってイメージがどうも強い。いつ刷り込まれたんだろ。 あと、JAVAの貧相なGUIセット(Sun OSみたいな奴)の悪い印象も。
>947 いや、wxはどーにもMFC臭がするもんで、つい。
>>979 MFCに無かった重要な概念として、wxにはSizerってのがある。
要するにレイアウトマネージャだな。
glade + pygtk が一応お手軽ですが、 windows + py2exeでexeにしようとすると、pango関係のエラーで 日本語が豆腐になってしまうんですよ。 hoge.pyだと動作するんですが、、、なやましいです。
紙でレイアウト+テキストエディタでコーディング最強!! WindowsもLinuxもMacもばっちこーい!!
pygame‥‥‥はちょっとちがうか。 とある環境のモニタプログラム(グラフとかトラフィックとか出力する)を 書いたときに使ったなぁ。
ボタンとかリストとかのGUI部品が要求されてない状態で、 単純に線を引くとか面を貼るだけが目的なら、 地味に最強だもんなあpygame
985 :
デフォルトの名無しさん :2007/02/16(金) 05:18:12
986 :
デフォルトの名無しさん :2007/02/16(金) 06:28:06
pythonでWinkeyやF1などのkeyを押した状態にするプログラムを作りたいのですがどうすればいいのでしょうか。
988 :
986 :2007/02/16(金) 07:17:22
Python Extensions for Windowsというモジュールを使えばいいのですね。ありがとうございます。
>>979 MFC(正確にはAppWizardか)には、resource.hがあって、
プロジェクト超えてダイアログ使いまわせないが、
VisualWxはそれが無い分”MFCらしさが無い”と言えたりしない?
990 :
デフォルトの名無しさん :2007/02/16(金) 16:40:13
im3 = ImageChops.difference(im1,im2) が ValueError: image has wrong mode になる サイズは同じはずなのに。何がいけないのだろう
modeがおかしいって言ってるよ。インデクスカラーとトゥルーカラー画像diffしてない?
アップルに対抗してPyPhone希望
pyPodもいいなぁ。って、iPodLinuxでいいのか‥‥‥。
pyを付けただけで なんかこう……
なんだよ
(*´д`*)ハァハァ
埋め
1000ソン
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。