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を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。