Pythonのお勉強 Part16

このエントリーをはてなブックマークに追加
346デフォルトの名無しさん
>>336 の場合、
よく読んでみると、プログラムが目的なのではなくて、
エロサイトについての情報収集をしたい、
それには plagger というツールが便利のようだ。
それはperl で書かれている。
だからperl をやってみた、という流れみたいだよ。

その調子だと、
Python やってみた。さっぱりエロサイトの情報が
集められない。つかえない、という結論になるような。

すべての価値基準が、エロサイトの情報収集にどれだけ
役立つかに基づいているらしい。

いちおう >>336 になり代わって僕が聞いておこう。

数日前からPythonを使い始めました。
どうやったら、Pythonでエロサイトの情報が集められるか分りません。
誰か教えてください。よろ。
347デフォルトの名無しさん:2007/01/01(月) 09:54:40
>>337
掘り炬燵とは?何かの例えですか?
348デフォルトの名無しさん:2007/01/01(月) 10:43:56
えろサイト収集ならどう見てもperlだろ。
pythonでえろサイト用スパイダーのフレームワークでも書くのか?
urllib/2はバグだらけでまともに使えるのはhttplibかsocketだけだぞ。
349デフォルトの名無しさん:2007/01/01(月) 11:31:19
え?!
バグだらけなの?
350デフォルトの名無しさん:2007/01/01(月) 11:31:23
ぶっちゃけ zsh + wget でほとんどは片付くと思うのだが... > エロツール

perl だと謎の偽装ツール系も対処するライブラリとかがあるのかな?

だいぶスレ違いになってきたか…
351デフォルトの名無しさん:2007/01/01(月) 12:44:36
>>336
クローズドソースでしか書かない著作権馬鹿より数倍まし
352デフォルトの名無しさん:2007/01/01(月) 13:24:04
>>336-351
っBeautifulSoup
353デフォルトの名無しさん:2007/01/01(月) 13:25:44
>>350
いや、perlの連中の間では、Plaggerとかいうのを使って、
こんなことをするのが流行っているらしいんだ。
(スレ違いではあるかもしれんが)

Googleで「はらへった」と検索するとピザが届くようにするまで
http://e8y.net/blog/2006/07/25/p126.html
354デフォルトの名無しさん:2007/01/01(月) 13:54:47
>>350
curlで片付くぜ
355デフォルトの名無しさん:2007/01/01(月) 16:04:15
>>353
それ読んでも、Plaggerに一向に魅かれないのは
俺の感覚が鈍っているのか、そこの例がイマイチなのか、
どっちなのだろうか。
356デフォルトの名無しさん:2007/01/01(月) 17:22:30
ちゃんと 「エロい例」 で示してくれないと駄目だよな
357デフォルトの名無しさん:2007/01/01(月) 17:24:59
>354
curl ってなんか単純に url な jpg を持ってくる
っていうのがよくわからんかった記憶が。

一々 -o 指定か stdout に吐くしかなくて...

wget に対するアドバンテージって何なの?
358デフォルトの名無しさん:2007/01/01(月) 17:32:54
>>356
エロい例
ttp://yusukebe.com/archives/06/08/24/194057.html
ttp://yusukebe.com/archives/06/10/21/201644.html

エロくないけどなんとなく面白い
ttp://yusukebe.com/archives/06/12/03/230402.html

しかし、情報収集ぐらい手動でやりたい気もする・・・
359デフォルトの名無しさん:2007/01/01(月) 19:08:46
>>357
zshとか使わなくても連番を展開できる、などなど
curl http://www.hoge.com/hoge[012-125].jpg -O
360デフォルトの名無しさん:2007/01/01(月) 19:58:22
perlはそこそこやるんですが、pythonに興味持って、
いま勉強中なんだけど、もしかして無駄?
361デフォルトの名無しさん:2007/01/01(月) 20:24:35
curlってIrvineみたいだな
362デフォルトの名無しさん:2007/01/01(月) 21:45:59
逆っす
363デフォルトの名無しさん:2007/01/01(月) 21:47:41
>>360
今ならPerlやるよりPython覚えたほうがいいよ
Pythonのほうが圧倒的にプログラム書きやすい
364デフォルトの名無しさん:2007/01/01(月) 23:27:47
> 今ならPerlやるよりPython覚えたほうがいいよ
> Pythonのほうが圧倒的にプログラム書きやすい

そうなんだ!
書きやすいって、たとえばどんなかんじで書きやすいの?
365デフォルトの名無しさん:2007/01/01(月) 23:46:32
俺の場合、仕事でPython使ってるけど
書いてて楽しいよ。
366デフォルトの名無しさん:2007/01/02(火) 00:02:23
いまからやるならpythonよりrubyだよ
367デフォルトの名無しさん:2007/01/02(火) 00:09:58
Ruby遅いんでPythonに乗り換えた
368デフォルトの名無しさん:2007/01/02(火) 04:27:14
実行が早いだけなら、今でもperlに見所あるんだろうかね
369デフォルトの名無しさん:2007/01/02(火) 08:54:08
>>368
構造化プログラミングまででいいんなら、
Perl に不足するところはないと思うけどねぇ。
だいたい、総じてPython の方が書きやすいといっても、
正規表現とかPerl の方がやりやすいでしょ?
出来合いのモジュールも多いし、とっつきやすいし。
ただ、構造化プログラミングでは役不足で、
オブジェクト指向の助けが必要だと感じるなら、
やっぱりPython の採用を考えるべきだと思う。
ていうか、Perl のオブジェクト指向がも少し使える
ものだったらなぁ。
Java よりややこしいのでは、スクリプトでやる意味がないもん。
370デフォルトの名無しさん:2007/01/02(火) 09:29:12
別に自分(達)内ルールをしっかり決めてやれば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
372371: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
373デフォルトの名無しさん:2007/01/02(火) 11:33:45
ま た お っ ぱ い か !
374デフォルトの名無しさん:2007/01/02(火) 11:34:05
そのクラスは単なる変数w
375373:2007/01/02(火) 11:34:18
うわあ、壮絶な誤爆をしてしまった・・・・・・
めちゃくちゃ恥ずかしいorz
376デフォルトの名無しさん:2007/01/02(火) 11:37:25
いや、おっぱいとぱいそんは切っても切れないので、あながち誤爆でもないぞ!気を落とすな!
377デフォルトの名無しさん:2007/01/02(火) 11:39:13
>>373
誤爆に見えなかった
378デフォルトの名無しさん:2007/01/02(火) 11:57:42
>370
>別に自分(達)内ルールをしっかり決めてやれば

やっぱりそういう前提条件が付くということこそが
致命的な弱点だと思う > perl
379デフォルトの名無しさん:2007/01/02(火) 13:15:42
>>370
Perl の場合、クラスの作成方法それ自体が複数あって、
自分が知らんやり方されたら、それが正しいのやら間違っているのやら
さえ、よく分からなくなってしまう。

それに、ハッシュのリファレンスとか駆使しなきゃいけないから、
単なる特殊記号(バックスラッシュとか)がすごい大きな意味を
持っていて、バグッたときとか、なにが起きているのか判断するのが
容易じゃない。

そもそも、クラスがなんで、コンストラクタがなんで、
オブジェクトやインスタンス、
フィールドやメソッドがなにを意味していて、
オブジェクト指向がどういうことなのか、ということを
理解している人がほとんどいないように見える。

というのも無理がなくて、
Perl でオブジェクト指向するのは、難しすぎるんだって。
(まー、Python でもオブジェクト指向分かってない人はいそうだけど。
 結局、Java やって覚えるのが一番簡単だよな)

自分もPerl6 は待っていたんだよ。でも、もう待ちきれないじゃん。

>>374
いいんだよ。サンプルなんだから。
380デフォルトの名無しさん:2007/01/02(火) 13:19:46
Perlはやっぱりちょっとしたツール書く方が向いてる気がするよ。
長いコード書くとぐちゃぐちゃになり易い。
ちょっとしたツールなら慣れりゃ高速で書けるし。

Rubyは俺使ってたし今も使うんだが
あれはモジュールとクラスを大量に作るには
悪くない言語だけど行く末がすっげぇ不安って感じ。
matzが痛いし暴走癖あるし儲も痛いし。

んで今はPythonに挑戦中。
まだあんまり解らんが案外細かいところに手が届くと思った。
(Rubyは結構細かいところが抜けてるから)
381デフォルトの名無しさん:2007/01/02(火) 13:56:48
Perlは十徳ナイフみたいなもんだよな
簡単なことは器用にこなせるけど、
それで家を建てるとなるとややこしい
382デフォルトの名無しさん:2007/01/02(火) 14:47:31
>>379
デバッグが怖いのは同意。
でかいperlコードのデバッグとか、もう2度とやりたくない。
けど、だからといって「perlには○○が出来ない」というのは違うと思う。

perl6はちゃんと今週も進化してる模様・・・
http://pugs.blogs.com/

なんとなく、出てすぐはpythonよりちょっと上をいってそうな気がする
けど、pythonチーム頭よすぎなのでw、すぐいいとこ取りすると思うけど・・・w
383デフォルトの名無しさん:2007/01/02(火) 15:43:31
「役不足」
384デフォルトの名無しさん:2007/01/02(火) 15:57:32
Pythonは使っててケチつけたくなる点が他より少ないから
コード書いてて気分がいいね。
385デフォルトの名無しさん:2007/01/02(火) 16:03:56
>>382
Perl6 vs Python ていう話は、Perl6 が出ないと、
なんともいえないでしょ。

ただ、はたから見ていて、Perl6 は迷宮に迷い込んでいるように
見えるよ。そもそも、仕様は確定してから作業しないと、
時間ばかりかかるように思う。

それに、いまどうするかというのが目の前の問題だからさ。
出ていないPerl6 をいつまで待てるのか。
一方で、一貫した作法でオブジェクト指向を扱える
Python がすでにあってだよ。

待てる人はPerl6 を待てばいいけど、ならPython を
選ぼうという人も多いと思う。
386Perl6知らないけど:2007/01/02(火) 17:16:50
python 使いから見てそんなに誉める余地のある
「Perl6」って既に 「perl」 じゃねーよな
387デフォルトの名無しさん:2007/01/02(火) 17:36:44
pythonって下位互換性みたいなのはどうなのかな?

テンプレートエンジンのKidとか使って何か勉強してみたいな
と思ってるんだけど石橋を叩いてここは2.5ではなくて
2.4をインストールしとくべきかな…2.5はstableって書いて
あるから2.5でも大丈夫な気もするんだけど…IronPythonの
チュートリアルとかみると2.4とか入れてるだよね…

IronpythonとかKidとか使って初心者がpythonを一から勉強
するなら2.4のほうがいいかな?
388デフォルトの名無しさん:2007/01/02(火) 19:13:11
389331:2007/01/02(火) 20:06:50
>>335
お返事ありがとうございます。

Unicode版のPythonをインストールするだけで本当に解決するのですか?
というのもMac OS X 10.4にはインストールできるPython 2.3 Unicode版バイナリが無いためです。
390デフォルトの名無しさん:2007/01/02(火) 21:02:52
>>389
Unicode版のwxPython
        ~~
391デフォルトの名無しさん:2007/01/02(火) 22:46:28
さりげなくKidの宣伝をしたい奴がいるようだ
392331: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対応版かそうでないか、確認する方法は無いものでしょうか?

度々スレを汚してしまいすみませんが、よろしくお願いいたします。
393デフォルトの名無しさん:2007/01/02(火) 23:47:17
最近else:の代わりにelif 1:と書くのがマイブーム(チラ裏
394デフォルトの名無しさん:2007/01/03(水) 00:46:16
>>392
>>> import wx
>>> print wx.PlatformInfo
('__WXMSW__', 'wxMSW', 'unicode', 'wx-assertions-on', 'SWIG-1.3.27')

'unicode' が含まれていれば Unicode 対応ビルドです。

あと、文字がお豆腐になるならなるで最小限の再現コードを書いてくれると
答えやすいです( GUI なので厳しいかもですが)。
395331: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()
396394:2007/01/03(水) 01:07:06
>>392
XRCed がどういうものか知らずに適当レスしました。すいません。
XML tree の encoding を utf-8 にしたらどうでしょうか。
397デフォルトの名無しさん:2007/01/03(水) 01:09:32
>393
独りでやる時だけにしてくれよw
398デフォルトの名無しさん:2007/01/03(水) 04:44:59
今にPerl6が出るぞ!
って3年前から言ってるじゃんw
399デフォルトの名無しさん:2007/01/03(水) 09:03:52
>398
それはラリーがむごもご
400デフォルトの名無しさん:2007/01/03(水) 10:03:46
>>395
僕はmacもwxもよく分からないけど、以下のページの情報は参考にならないかな。
http://ymasuda.jp/python/wxpython/index.html
401331:2007/01/03(水) 11:39:45
>>396
ありがとうございます。確認したところ既にUTF-8にしてありました。
XRCedは無視してかまわないので、XRCedを使わない先ほどのサンプルコードを起動して、
空白の入力欄に日本語を入力すると豆腐と化します。

>>400
ありがとうございます。そのページは確認しております。
402デフォルトの名無しさん:2007/01/03(水) 12:59:34
このページの人は、MacOSX 10.4.8 で wxPython2.8.0.1 を使って
問題なく日本語の表示を行っているねぇ。
http://www.harukaze.net/~haruka/wxpython/index.html
403331:2007/01/03(水) 13:20:45
>>402
ありがとうございました。リンク先の環境を再現することで無事解決しました。
プリインストールのPythonとwxPythonは一応Unicode対応してはいるものの
実際の表示は化けるビルドなんですね。
404デフォルトの名無しさん:2007/01/03(水) 13:34:29
b = x
a += b

↓↓↓

a += b = x
405デフォルトの名無しさん:2007/01/03(水) 15:01:38
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'あいう')
とすると、文字化けして表示されるのは何で?
どうしたら文字化けせずに表示できる?
408デフォルトの名無しさん:2007/01/04(木) 11:20:57
ttp://webos-goodies.jp/archives/51019710.html
これ面白いね。
C:\Program Files\Apache Group\Apache2\htdocs>ruby delichio.rb
delichio.rb:8: uninitialized constant JsonParser (NameError)
ってなって漏れはっヘタレだから実行できなかったけど…orz
409デフォルトの名無しさん:2007/01/04(木) 11:26:56
>>406
めんどくさいって、もしかして入力補完とか使ってないのか?
(エディタはなに?)

そもそも、クラス作成とかの定型作業なら、わざわざ打つ部分より
コピペしてる部分の方が多いと思うんだが。
410デフォルトの名無しさん:2007/01/04(木) 11:47:46
>>407
コンソールウィンドウの環境設定の表示用エンコーディングと
Pythonの入出力のデフォルトエンコーディングを一致させる
411デフォルトの名無しさん:2007/01/04(木) 11:50:20
それと
ソースコードのテキストのエンコーディングと
ソースコード行頭のエンコーディング宣言を一致させる

Pythonではその4つを正しく設定しておかないと文字化けしてしまいます。
412デフォルトの名無しさん:2007/01/04(木) 11:51:24
> クラス内でインスタンス変数にアクセスするときは絶対selfを付けなくちゃだめなの?
つけなくちゃだめです。以上。
413デフォルトの名無しさん:2007/01/04(木) 11:52:40
>めんどくさいって、もしかして入力補完とか使ってないのか?
Pythonの入力補完のあるエディタってどんなのがあるの?
414デフォルトの名無しさん:2007/01/04(木) 11:55:21
>>408
上のコードを jsonparser.rb として保存
下のコードに
require 'jsonparser'
415デフォルトの名無しさん:2007/01/04(木) 11:55:55
>>413
僕の場合は、サクラエディタでキーワードが少ないから、
自分で勝手にキーワード登録増やして使ってるけど。
416デフォルトの名無しさん:2007/01/04(木) 11:57:28
self.って打つの、補完するほど面倒か?
417デフォルトの名無しさん:2007/01/04(木) 12:39:35
っていうか補完以前に クラス変数かインスタンス変数かは
プログラマが意識して決めることなんだから
サボりようがないよな?
418デフォルトの名無しさん:2007/01/04(木) 12:49:18
>>415
俺はSyntaxHighlighterのキーワードが充実してるみたいだから
それを参考にしてキーワード増やして使おうと思ってる
419デフォルトの名無しさん:2007/01/04(木) 13:47:11
rubyなら@で澄むのにっていう話じゃないの?<selfめんど
自分もはじめそう思った。
420デフォルトの名無しさん:2007/01/04(木) 13:51:59
自分自分自分自分自分自分自分自分自分自分自分自分自分
421デフォルトの名無しさん:2007/01/04(木) 15:25:35
>>412以降self談義している人は皆微分積分。
422デフォルトの名無しさん:2007/01/04(木) 15:28:37
>>418
組み込み関数とかだけなら、これで得られるけどね。
import __builtin__
dir(__builtin__)

あと、必要なキーワード、一気に得られる方法があるといいのだけれど。
自分はちまちま、気のつくたびに登録してる。
423デフォルトの名無しさん:2007/01/04(木) 16:45:10
>>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
あー、これね。
http://www.dreamprojections.com/syntaxhighlighter/
うーむ。よさげなんだが、英語がわけわか… orz
425デフォルトの名無しさん:2007/01/04(木) 17:10:10
.py書けるのに英語わからないとかありえないから
426デフォルトの名無しさん:2007/01/04(木) 17:13:44
.py
ドットパイ
ドッパイ
オッパイ
427デフォルトの名無しさん:2007/01/04(木) 17:48:52
>424
Exciteでも使って頑張るヨロシ

>425
日本語のチュートリアルある以上
多少の.py書く程度なら出来るだろw
428デフォルトの名無しさん:2007/01/04(木) 18:59:16
# 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]

ちょっと質問してみる
429デフォルトの名無しさん:2007/01/04(木) 19:06:52
続き...
>>37のが面白そうだったのですこし変えて
実行してみたら
#IndexError: string index out of range
となり上手くいきませんでした…orz

2chのdatの構造は
<>_行_<br>_
_行_<br>_
_行_<br>_
_行_<>
のようなので'<br>_'ではなくて'_<br>'で分割しても
上手くゆくと思うのですけれども上手く分割できず
理由がわからない…orz
430デフォルトの名無しさん:2007/01/04(木) 19:15:55
line[1]だろ。常識的に考えて・・・
431デフォルトの名無しさん:2007/01/04(木) 19:22:34
空行の存在を忘れてるようだ
432デフォルトの名無しさん:2007/01/04(木) 19:35:14
>>430
すみません張り間違えましたline[0]です…orz

>>431
'<br>_'ではなくて'_<br>'でも

<>_行_<br>_
_行_<br>_
_行_<br>_
_<br>_
_行_<>
が['_行_', '_行_', '_行_', '', '_行_']と同じように
分割されるように思うのですけれども…よくわからない…orz
433デフォルトの名無しさん:2007/01/04(木) 19:44:46
自己解決しましたお騒がせしてすみませんでした

<br>_の場合
['_行_', '_行_', '_行_', '_', '_行_']
_<br>の場合
['_行', '__行', '__行', '__行_', ''] <- 5つ目の要素が空となりline[0]で出力しようとするとerrorとなる
434デフォルトの名無しさん:2007/01/04(木) 20:00:28
某3835
> 2ch で聞こうと思ったのですが、アクセスできませんでした。人大杉と出て
> しまいます。

URL が変わったからかな。
古い URL にアクセスすると http://www2.2ch.net/live.html に飛ばされる。

ってここに書いても意味ない罠。
435デフォルトの名無しさん:2007/01/04(木) 20:36:26
>>421
トン
やっぱりそうですか・・・
436デフォルトの名無しさん:2007/01/04(木) 20:45:16
hoge = 0 # 取り得る値に関する説明や注意

pydoc で変数の説明を表示したいんだけど
書き方が分からない
437デフォルトの名無しさん:2007/01/04(木) 21:01:20
<>_
行_<br>_
行_<br>_
行_<br>_
_<br>_

_<>

<br>_の場合
['行_', '行_', '行_', '_', '行_']

_<br>の場合
['行', '_行', '_行', '_', '_行']

<br>の場合
['行_', '_行_', '_行_', '__', '_行']

□□□_□ 出力できる // □は2バイト _ は1バイト
□____ #IndexError: string index out of range
□____ #IndexError: string index out of range

なんか間違えてたみたいなので訂正して置く
438デフォルトの名無しさん:2007/01/04(木) 21:01:35
>>436
モジュール、クラス定義、または関数(メソッド)定義の最初に文字列を置いてその中に書く。
例えば pydoc.py の先頭とか pydoc モジュール内の関数の定義とかを見てみりん。
439デフォルトの名無しさん:2007/01/04(木) 21:12:56
いやいやいや、モジュールの変数ね
DATA セクションに表示される項目のところ
440デフォルトの名無しさん:2007/01/04(木) 22:29:15
インスタンスごとに doc を保持する仕組みがないと
pydoc 使うのは無理か。

doyxgen がいつの間にやら python に対応してたので
こっち使うことにするよ。
441デフォルトの名無しさん:2007/01/04(木) 22:51:55
意味が分らん… orz
インスタンスごとに、フィールド・メンバーの
解説をいろいろ書き分けて書くのん? いや、いいけど…
442デフォルトの名無しさん:2007/01/04(木) 23:31:52
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の要素数はものすごく大きいです。
443デフォルトの名無しさん:2007/01/04(木) 23:41:38
実態参照してるから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
445デフォルトの名無しさん:2007/01/05(金) 00:02:12
__eq__ と __ne__ を定義して id を比較
446デフォルトの名無しさん:2007/01/05(金) 00:12:06
>>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デフォルトの名無しさん:2007/01/05(金) 00:33:55
順番が重要ってのは、ランダムアクセスしたいってこと?それとも最初から
順番にアクセスできればいいわけ?
448デフォルトの名無しさん:2007/01/05(金) 00:41:20
>>447
nodeのidが小さい順に並べておきたかったんです。
だから新しいノード追加するときはnodeのidが小さい順番に並ぶようにリストにinsert()してます。
辞書だと自分で追加した順番が保てないので・・・
はじめはSet使おうと思ったのですがnodeのような可変オブジェクトを入れられないみたいでだめでした。
449デフォルトの名無しさん:2007/01/05(金) 00:42:22
問題はそこじゃないし解決したからいいんでないか


>>> node(1) == node(1)
True
>>> node(1) != node(1)
True

うほっ
450デフォルトの名無しさん:2007/01/05(金) 00:43:23
ありがちな list+dic の折衷型クラスを使う(or自分で実装)
451デフォルトの名無しさん:2007/01/05(金) 00:56:11
>>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
452デフォルトの名無しさん:2007/01/05(金) 02:10:39
>438
お前どこの出身だッ、その方言は聞いたことがある
よもや愛知県三河地方ではあるまいな
453デフォルトの名無しさん:2007/01/05(金) 02:47:37
みりんは確かそうだな
454デフォルトの名無しさん:2007/01/05(金) 05:22:46
Pythonで10進数の数値を2進数に変換するには、どうやればいいのでしょうか?

PHPのdecbin()に相当する関数を持つモジュールがあればいいのですが。
http://jp.php.net/manual/ja/function.decbin.php
455デフォルトの名無しさん:2007/01/05(金) 09:48:38
>>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))
456455:2007/01/05(金) 09:54:38
修正。
if i < len(a) and a[i] == x:
    raise ValueError, "already there"
457デフォルトの名無しさん:2007/01/05(金) 12:22:04
>>448
dictにしといて
使うときに、sorted(dict.values(), lambda x, y:x.id - y.id)で、番号順にすればいいと思う。
458デフォルトの名無しさん:2007/01/05(金) 12:34:38
>>420
自分の意見というか、matzがpythonのことおもちゃ言語っていう
根拠のひとつでもあるんじゃないの?たぶん、
cの構造体ポインタにあたるものが見えちゃってるみたいな
459デフォルトの名無しさん:2007/01/05(金) 12:47:06
460デフォルトの名無しさん:2007/01/05(金) 13:33:13
>458
でも実際はRubyの方がよほどオモチャな件
461デフォルトの名無しさん:2007/01/05(金) 14:00:49
仲直りしてこい

Python厨とRuby厨が仲直りするスレッド
http://pc10.2ch.net/test/read.cgi/tech/1099804004/
462デフォルトの名無しさん:2007/01/05(金) 14:04:24
まぁPython使いは アニメキャラ・バトルロワイアル感想雑談スレ8 でも見てなさいってこった。
463デフォルトの名無しさん:2007/01/05(金) 14:26:08
見に行くのめんどうだから3行くらいで要約してくれ
464デフォルトの名無しさん:2007/01/05(金) 14:27:48
perlの方にはヒキ板のスレがあるなw
この機能煽るネタ提供するだけだな
465デフォルトの名無しさん:2007/01/05(金) 14:50:21
俺の見ているスレも出てるw

>>452-453
愛知の田舎に10年ほど住んでたもんでかんわ。たまに三河弁が口をついて出るw
466デフォルトの名無しさん:2007/01/05(金) 15:06:05
・・・これは流行る・・・!
467デフォルトの名無しさん:2007/01/05(金) 15:59:57
ここは超初心者もしつもんしていいですか?
468デフォルトの名無しさん:2007/01/05(金) 16:01:32
Python初心者なら。
PC初心者は(・∀・)カエレ!!
469デフォルトの名無しさん:2007/01/05(金) 16:09:35
PCは98の時からで5年です。
Python初心者の♀です。
470デフォルトの名無しさん:2007/01/05(金) 16:17:37
PC-98か
471デフォルトの名無しさん:2007/01/05(金) 16:21:37
1998 + 5 = 2003
2007年の話としてはおかしいよな...

( ゚д゚ )ハッ! 98才のときに始めてから5年のハカーばあさん!?
472デフォルトの名無しさん:2007/01/05(金) 16:27:51
ばあさんも質問していいでつか?
473デフォルトの名無しさん:2007/01/05(金) 16:29:27
ばさんはXPじゃ
474デフォルトの名無しさん:2007/01/05(金) 16:52:39
「質問してもいいですか?」って最初に言うヤツにはかかわらないほうが良い、の法則
475デフォルトの名無しさん:2007/01/05(金) 17:51:56
>>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ユーザって・・・・・・・・)
477デフォルトの名無しさん:2007/01/05(金) 18:34:07
Python使ってもいないのにこのスレ毎日覗いてる俺は
そんなの問題にならないくらいキモいスレに行きまくってるから
心配すんな。
478デフォルトの名無しさん:2007/01/05(金) 19:03:27
>>469
で、質問はなに? 待ちくたびれてきた。
479デフォルトの名無しさん:2007/01/05(金) 19:22:08
やりたいことは、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
要するに、このへんの話なのかな?
俺はやろうと思ったことがないので知らないが。
http://www.google.co.jp/support/webmasters/bin/answer.py?answer=34636&topic=8517
481デフォルトの名無しさん:2007/01/05(金) 19:42:40
>>479
sshでログインしてプロンプトから
%cd 目的のフォルダ
%python 目的のスクリプト
482デフォルトの名無しさん:2007/01/05(金) 19:56:53
そのPythonスクリプトというのは、
http://safe-linux.homeip.net/seo/Google_sitemap_gen-03.html
で触れられている sitemap_gen.py ていうもののこと?
483482:2007/01/05(金) 20:04:32
あれ、2chからだとそのページ、アクセスできないなぁ。
しょうがないので、sitemap_gen.py でぐぐってみたら、
なにか情報得られるかもと、お茶を濁して去っていく。

http://www.google.com/search?client=opera&rls=ja&q=sitemap_gen.py&sourceid=opera&ie=utf-8&oe=utf-8
484デフォルトの名無しさん:2007/01/05(金) 21:01:49
479
(-_-;)ウー
485デフォルトの名無しさん:2007/01/05(金) 21:05:40
486デフォルトの名無しさん:2007/01/05(金) 21:48:15
むずかし〜
487デフォルトの名無しさん:2007/01/05(金) 21:51:18
> 説明には ssh 等を使ってと書いてあるのですが

ってのがどこなのか(サイトなのか本なのか)書いた方がいいね。
他の人が貼ってるリンク先そのものだったら、貼ってもらった手間が無駄になる。
488デフォルトの名無しさん:2007/01/05(金) 22:00:58
↓これの「4. サイトマップ生成ツールのスクリプトを実行する (sitemap_gen.py)」のところじゃまいか!?
https://www.google.com/webmasters/tools/docs/ja/sitemap-generator.html

>サイトマップ生成ツールを実行するには、ウェブ サーバーに接続する必要があります。
>接続環境により、サーバーへの接続方法は異なります。 たとえば、Unix ベースのサーバーの場合は、通常 SSH を使用して接続します。
489デフォルトの名無しさん:2007/01/05(金) 22:17:10
>>479
このサイトの情報が参考にならない?
http://www.vinapark.com/society/modules/news/article.php?storyid=113

ただね、はっきりいうとPythonももちろん関係はあるものの、
xmlとかそっち方面の知識の方が必要なんじゃない?
中途半端な知識じゃ、無理だと思う。
xmlなんて、僕も知らないしorz
しかもPythonの文法もなにも分からないということとなると、
絶望的に難しいと思うなー。
490デフォルトの名無しさん:2007/01/05(金) 22:20:50
あほー、Google、msnでは初心者はHPなぞ作るなってことかw
491デフォルトの名無しさん:2007/01/05(金) 22:25:26
>プラグラムファイル
492デフォルトの名無しさん:2007/01/05(金) 22:37:20
てか、何がわからないのかわからない。
リモートログインしてスクリプト走らせるだけの話じゃないのか・・・?
自動更新にしたいなら、cronしこむなりすればいいんじゃ
493デフォルトの名無しさん:2007/01/05(金) 22:52:25
リモートログインはどうやるの?
494デフォルトの名無しさん:2007/01/05(金) 22:54:10
スレ違い
495デフォルトの名無しさん:2007/01/05(金) 22:59:30
  @@@  パンパンパンパーン
 @@@@@ ∩
 6 -ω-ノ 彡
 (⊇ ⊂彡☆))д´)>>494
496デフォルトの名無しさん:2007/01/05(金) 23:02:25
ぐぐれ〜〜〜!

リモートログイン ssh
http://www.google.com/search?client=opera&rls=ja&q=%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3+ssh&sourceid=opera&ie=utf-8&oe=utf-8

そもそもPython をどうこういう前に、もうちょっと基本の知識が必要だと思うよ。
Python 動かせても、自分のサイトに合わせた xmlを用意しないといけないはず。
xml分る?

どっかそういう基本的知識を得られるまとめサイトはないのかね?
だれか知らない? ここはPython のスレだし。
プラットフォームはunix というけど、それはサーバの話で、

あなたのマシンはwindows?
その状況で、日常unixを使っているとは思えない…。
あー、mac osx ならありえるか…。
497デフォルトの名無しさん:2007/01/05(金) 23:09:06
>>496
もうググリ真下。
すみません。
xmlはあっぷしました。
498デフォルトの名無しさん:2007/01/05(金) 23:11:30
サーバーはリナックスらしいけどリモートログインってUNIXのばっかりじゃん。
499デフォルトの名無しさん:2007/01/05(金) 23:18:22
リモートログインなんてFFFTPなんかで自分のサーバーにログインするだけジャマイカ!!
500デフォルトの名無しさん:2007/01/05(金) 23:33:58
すまん。
俺はHomePageBuider を使うようになってから、
リモートログインなんて、忘れちまったよw
昔は、telnetで入ってviでmlのログの管理とか
してたんだけどな。
最初はftpを知らなくてさw ずっとtelnetでviしてた。
viのクソぶりには泣けたなぁ。
誰か、unixに秀○を移植してくれ、と思ったよ。
って、ここなんのスレよ!
501デフォルトの名無しさん:2007/01/05(金) 23:46:10
つまり、ナイス500ゲットということで。
502デフォルトの名無しさん:2007/01/06(土) 02:52:34
つkermit
503デフォルトの名無しさん:2007/01/06(土) 10:10:41
>498
ガッ
504デフォルトの名無しさん:2007/01/06(土) 12:53:47
>503
ぬ、ぬるぽどこッ?!
505デフォルトの名無しさん:2007/01/06(土) 12:54:30
>>454
def decbin(b):
    s = ""
    if b > 1 : s = decbin(b>>1)
    return s + "01"[b&1]
506デフォルトの名無しさん:2007/01/06(土) 13:26:47
>479
Pythonの話じゃないな

>474 の法則は正しいかもしれない。
507デフォルトの名無しさん:2007/01/06(土) 15:54:04
>>504
ガッ
508デフォルトの名無しさん:2007/01/06(土) 16:24:37
> 【AoE3】Age of Empires III 第76幕【TWC】 [PCゲーム]
> アニメキャラ・バトルロワイアル感想雑談スレ8 [アニキャラ総合]
> ◆ ポルトガル語・総合スレッド 10 ◆ [外国語]
> 【MU】マヤ鯖攻城戦専用晒しスレpart10 [ネットwatch]
> 【転職】−転職板@何でも質問所− その65 [転職]

今日は転職らしい
509デフォルトの名無しさん:2007/01/07(日) 03:07:14
お願いします。
htmlに含まれる表を配列に起こすプログラムを教えてください。
510デフォルトの名無しさん:2007/01/07(日) 04:26:03
>>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)
511デフォルトの名無しさん:2007/01/07(日) 04:33:55
補足:
>>510のプログラムはもっとも単純な表を想定している。
複数行(複数列)にわたるセルがあっても何もしないし、
表の中に表が現れると破綻する。実体参照も無視してる。
文字コードも関知しない。あくまで参考程度に。
512509:2007/01/07(日) 04:47:34
どうもありがとうございます。
513デフォルトの名無しさん:2007/01/07(日) 08:28:40
Excelにコピペしてcsvで保存してcsvreader.
514デフォルトの名無しさん:2007/01/07(日) 14:23:14
Pythonのcsvモジュールは使い物にならないから困る
515デフォルトの名無しさん:2007/01/07(日) 15:28:05
>>514
kwsk
516デフォルトの名無しさん:2007/01/07(日) 16:04:05
Unicode未サポート
ゆえに日本語データが処理できない
517デフォルトの名無しさん:2007/01/07(日) 16:23:41
知ったか乙

日本語データでも処理できてるし
518デフォルトの名無しさん:2007/01/07(日) 16:52:40
"hoge,fuga",other data,30
みたいなのもイケるの?

ドキュメント見たけど、自分で実装するのと比べて
大したことはやってくれないよね、これ…
519デフォルトの名無しさん:2007/01/07(日) 17:20:31
520デフォルトの名無しさん:2007/01/07(日) 18:43:22
仕事を頼まれる

('A`)ヴァー という顔をしつつ、
内心 python+csvモジュールで楽勝(゚∀゚)
すでに定時帰宅ムード

使い方忘れてるので
読んで吐き出すだけのコードを書いてみる
日本語もOKなご様子

問題ないので本格的に書く

動かしてみたら期待通りに行かない
なんでunicodeでないのでありますか。こやつ。

モジュールを直そうと思うがC実装

やっぱ自分のソースを直す

あ、あれ?残業?!
521デフォルトの名無しさん:2007/01/07(日) 19:17:21
csvのように下種な作業で比較的用いられるような代物が
ちゃんと整備されていないとはどういうこっちゃ。
522デフォルトの名無しさん:2007/01/07(日) 19:22:49
>>521
多分、csv の方言が多すぎるからだろ。
csv の標準が規定されているのかどうか知らんが、
例え規定されていたとしてもそれに従っていないモノが多すぎるんだろ。
523デフォルトの名無しさん:2007/01/07(日) 21:15:20
>>522
> >>521
> 多分、csv の方言が多すぎるからだろ。
> csv の標準が規定されているのかどうか知らんが、
> 例え規定されていたとしてもそれに従っていないモノが多すぎるんだろ。
んだんだ。CSVは「Excelが読み書きできる」のが事実上の標準になっている状況だし。
RFC4180が2005年10月に公開されてるけど、まだ一般的ではないよね。

http://www.rfc-editor.org/rfc/rfc4180.txt
http://www.kasai.fm/wiki/rfc4180jp
524デフォルトの名無しさん:2007/01/07(日) 21:25:45
>>523
十年前でも遅いと思うが、2005年10月かよ。
525デフォルトの名無しさん:2007/01/07(日) 21:32:31
XMLで読み書きしろって流れなんだろうな
( ゚д゚)ハッ! XML-CSVブリッジ!?
526デフォルトの名無しさん:2007/01/07(日) 21:35:01
>>525
XMLがブレイクしだした時にその手のコンバータって山ほど作られていると思うけど。
527デフォルトの名無しさん:2007/01/07(日) 21:38:50
>>526
話を聞かないってことは流行んなかったんだよなきっと
528デフォルトの名無しさん:2007/01/07(日) 21:42:29
>>527
そりゃ csv 側に方言があり過ぎるから、みんな自分の用が足せる
コンバータをちょろちょろって書いておしまいだからだろ。
529デフォルトの名無しさん:2007/01/07(日) 21:50:32
2.5のマニュアル見たら文字コード変換のラッパー例が書いてあった。
2.4のときは無かったような〜。。。

csv モジュール、前は Python で書いてあったが
高速化のためにC実装になったと記憶している。

方言うんぬんより、このC実装の書き換えが大変なのだと思う。
文字列処理周りはバグとセキュリティホールの宝庫だし。
Pythonコード で書いてあれば codecs を通すだけで済むはず。

ElementTree も一癖あるので注意が必要(((´・ω・`)カックン…
530デフォルトの名無しさん:2007/01/07(日) 22:16:27
531デフォルトの名無しさん:2007/01/07(日) 23:13:38
PythonのCSVモジュールだってRFC 4180準拠って書いてないしなw
532デフォルトの名無しさん:2007/01/08(月) 00:03:01
もともとの話は、>>509 の話を受けて >>513

エクセルにコピーして csv で書き出せば、html中の表を
配列に入れられるだろ といったことからだから、

むしろエクセル準拠のcsvでなければダメなんじゃない?
533デフォルトの名無しさん:2007/01/08(月) 00:25:14
Pythonのcsvモジュールはdialectってのでcsvの方言に対応できる.
セパレート文字列,改行コード,クォートの設定など.
で,デフォルトで使われるdialectはExcel準拠になってる.

Windows使いの人から渡されるExcelのCSVファイルを処理するプログラムを
最近作った.別に問題なく読めた.ちなみにPython2.4
534デフォルトの名無しさん:2007/01/08(月) 01:52:08
Excel以外から出力されたCSVがとても怖い。
「"」文字中の「"」文字はカンマと隣合っていないと文字列終端としない、
等等の訳ワカメ仕様を実装することになる。
そういう所は、CSV出力を考慮してちゃんとエスケープして欲しいんだよねぇ…。

そんな事を考えつつ詳細設計にEBNFを載せつつ実装をしてたら、レビュー時に
「えっ、そんな難しく考えちゃってるの?」、という突込みが。
一応弁解はしたが、分かってくれたか疑問。こんなことで仕事できない奴と思われたくない罠w
535デフォルトの名無しさん:2007/01/08(月) 01:58:34
>このスレを見ている人はこんなスレも見ています。(ver 0.20)
>◆ ポルトガル語・総合スレッド 10 ◆ [外国語]
>【PodCast】アキバ系!電脳空間カウボーイズ [プログラマー]
>【転職】−転職板@何でも質問所− その65 [転職]

おまえら器がでかいな。
536デフォルトの名無しさん:2007/01/08(月) 01:59:20
そんな怖いCSVファイルがあるのか...
537デフォルトの名無しさん:2007/01/08(月) 02:15:54
みんなCSVで何の受け渡ししてんの?
プログラム経験浅いんで、CSV=ダメ形式っていう認識しかないんだけど・・・
538デフォルトの名無しさん:2007/01/08(月) 02:17:09
M$製品が出力するCSVはだめだめだけど
それ以外の一般にはCSVは普通に使われるよ
539デフォルトの名無しさん:2007/01/08(月) 02:25:01
excelに読み込ませる以外の用途を列挙せよ。
540デフォルトの名無しさん:2007/01/08(月) 02:37:07
>このスレを見ている人はこんなスレも見ています。
専ブラ使ってる連中は集計されない。

Webブラウザ利用者と専ブラ利用者の間では
性格・行動に違いがあるから何とも云えん。
541デフォルトの名無しさん:2007/01/08(月) 03:00:25
pythonのまとめwikiのにくちゃんの過去ログもう読めなくなってるんだな
これからはdat落ちしたら●を買わないとログは見れないと。

あまり期待しないでこれ張って寝る
http://tmp6.2ch.net/test/read.cgi/download/1167375249/
542デフォルトの名無しさん:2007/01/08(月) 03:29:10
>>537
かといって総合的にそのcsvの代わりとなるうるものが存在しないのもまた事実。
543デフォルトの名無しさん:2007/01/08(月) 05:49:39
KSV = Kanpa Separating Values
544デフォルトの名無しさん:2007/01/08(月) 05:51:52
自分で使うときはタブ区切りばっかりつかってる
545デフォルトの名無しさん:2007/01/08(月) 06:02:39
>544
TSVとも呼ぶね
546デフォルトの名無しさん:2007/01/08(月) 06:40:09
個人的にCSVの代替はXMLだと思うが、何故か難しく捉えられる傾向にあるので躊躇する。
少しも難しくないのになぁ…。
要素の検証が面倒臭いという意見も良く聞くが、CSVの時は検証しなかったんかい!、と突っ込みたい。

ただXMLは、WindowsだとIEが絡んでよく強制終了に陥るのはどうにかして欲しい。
547デフォルトの名無しさん:2007/01/08(月) 06:47:57
>>546
XMLはどうしてもCSVよりパーザが重くなる。とくにDOMなんかはサーバアプリケーションで使うにゃ論外だし。
後、データがCSVに比べて膨れ上がり過ぎ。XMLってなにげにXSLTでもかますんじゃなきゃCSVより格下のデータ形式だと思う。
548546:2007/01/08(月) 07:02:49
>>547
半分同意。格下とまでは思わないけど…。

DOMの構築時間はDOM実装によるけど、MSXML4あたりが良い実測値弾いてた。
PythonでもXPathをほぼ完全に使いたい時はMSXML4を使っている。
並列読み込みに対応したライブラリならDOM構築の処理時間は苦にならない。
データ量は拡張可能な環境だったら問題ないよ。
問題はCSVと対比させた処理時間だけど、かなり最適化しても1.6倍ぐらいなる。
夜間バッチ処理なんかだと致命的かも。

DOM以外でXSLTかけた事はないけど、昔はXML>CSV変換をXSLT使ってやっていた。
恐らくXMLtoCSV変換で最速だと思う。
549デフォルトの名無しさん:2007/01/08(月) 10:01:07
csv だってなんだって "csvで吐くことを意識したデータ出力" に
気を使って設計・実装してあれば全然問題ないさ。

ほとんどが空白の数百columnを毎秒吐き出すヴァカとか
文字列処理がややこしくなるのに quote 仕様その他を
考えずに , だの " が入ったレコードを作る DQN がいなければ…
550デフォルトの名無しさん:2007/01/08(月) 10:20:46
>>549
XMLだと逆に複雑なデータ構造であろうともそのまんま記述できちゃうからって
ろくにデータ構造の正規化を行わずにデータ形式を決定し、
そのデータ形式の複雑さに比例した複雑さを持つデータ処理プログラムを書かなきゃならなくなる。



って、罠に一度嵌りましたよ、ええ。orz
551デフォルトの名無しさん:2007/01/08(月) 11:46:02
漏れも XML は CSV 以下だと思う
無駄大杉

そこで YAML ですよ
552デフォルトの名無しさん:2007/01/08(月) 11:46:18
>>550
あるあるwwww

XPathで取得⇒コレクションでループ、の流れをXML設計時に考えておかないと駄目なんだよな。
ref属性で他の要素を参照とか、あまり私を怒らせない方がいい…。
ElementTreeとかもまだまだなんだよなぁ。
今後に期待。特にXPath系。
553デフォルトの名無しさん:2007/01/08(月) 12:41:09
>>541
過去ログ見るにはにくちゃんねる以外の方法はないの?
他のサイトでサービスしてたりしない?
554デフォルトの名無しさん:2007/01/08(月) 13:08:00
>>551
Matz?
555デフォルトの名無しさん:2007/01/08(月) 19:24:09
S式パーサがあればXMLなんて不要。 
どうしようもなく冗長なXMLを使ってる馬鹿は考えを改めた方がいい。 
556デフォルトの名無しさん:2007/01/08(月) 19:50:15
馬鹿馬鹿しいほど冗長なくせに誤り訂正すら出来ないw
557デフォルトの名無しさん:2007/01/08(月) 20:10:30 BE:705148984-2BP(0)
>>556
ビットじゃなくて、文字コードorテキストレベルで誤り訂正ができる
方法なんてあるの?

>>555
くまーに釣られてやる。
ttp://okmij.org/ftp/Scheme/SXML.html
558デフォルトの名無しさん:2007/01/08(月) 21:34:50
>>556 は誤り訂正という言葉を使ってみたかった説に清き1票
559デフォルトの名無しさん:2007/01/08(月) 22:42:44
>557
自分で固定長フィールドの形式を決めてやれば
出来ることはできるだろうけど…
聞かないね.
560デフォルトの名無しさん:2007/01/08(月) 23:48:01
どうでもいいが、いい加減スレ違い。
561デフォルトの名無しさん:2007/01/09(火) 00:18:56
>>560
野菜ジュースで盛り上がってるどっかのスレに比べればまだまし。
562デフォルトの名無しさん:2007/01/09(火) 00:32:46
ヨソはヨソ! ウチはウチ!
563デフォルトの名無しさん:2007/01/09(火) 00:38:06
下見て暮らすな、上見て暮らせ
564デフォルトの名無しさん:2007/01/09(火) 00:52:04
じゃあメタクラ(省略されました。続きを読む場合はおっぱいおっぱいと書き込んで下さい。)
565デフォルトの名無しさん:2007/01/09(火) 01:10:53
メタクラッシャー大岩・・・メタクラスだろうな…。

XMLもYAMLもS式も、Pythonで扱う観点で話題があれば有用だと思う。
XMLは先行技術なんで、色々なAPIと「繋がる」利点がある。今のところ
この利点以上の利点を他のフォーマットに見出せないのが現状。
単なるデータ形式と捉えれば、使いどころがあるからCSVの代用としての
フォーマットとしてはXMLよりアドバンテージがあるだろうよ。

ところでsqllite3て使ってる?こいつが面白くて、ポストAccessだと睨んでいるんだが。
今のところフロントアプリ組んで、理解を深めているところ。
566デフォルトの名無しさん:2007/01/09(火) 01:46:33
)スの話にはならなかったか。

他のDBは何かと縛りが出来るがsqliteだと気楽に使えるね。

ちょっと違うかも知れんが
C++を(バリバリに組むのでなく)便利なC言語として使うような感じで
データファイルをsqliteに組み換えちゃおうかと思ってる。
567デフォルトの名無しさん:2007/01/09(火) 01:54:53
SQLite面白いよね。
でもAccessとかFileMakerとか、GUIフロントエンド込でナンボのDBは
比較対象としては相応しくないような。
かといってDBM系ともサーバクライアント方式のRDBとも比較し難く、
良い意味で微妙なポジションだね。
直接SQLを書かず、O/Rマッパを使うことを前提とした場合の対抗馬はMetaKitかな。
Pythonバインディングもあるし。
568デフォルトの名無しさん:2007/01/09(火) 07:14:56
阿波波波波波
569デフォルトの名無しさん:2007/01/09(火) 12:34:56
いろいろはいるよ
570デフォルトの名無しさん:2007/01/09(火) 13:35:44
>>566
>ちょっと違うかも知れんが
>C++を(バリバリに組むのでなく)便利なC言語として使うような感じで
>データファイルをsqliteに組み換えちゃおうかと思ってる。

っshove

っdbm

っConfigParser
571デフォルトの名無しさん:2007/01/09(火) 21:42:32
2.3から追加されたos.walk()なんだけど、これって
txt_2ch_logとか2ch_logとか2chlogとか名前が不適切なpathを
引数に渡すと上手く動かないのかな?log2chにしたら動いたんだけど…

unixとかのフォルダの命名規則はよく分からないけど、C言語の
変数の宣言の時みたいに名前の最初を数字で始めてはいけない、
とかそういうルールがあったりするような気がするのでつが…
572デフォルトの名無しさん:2007/01/09(火) 21:50:23
環境は windows xp pro で
python2.4(c:\Python24\python.exe)です。書き忘れてました…orz
573デフォルトの名無しさん:2007/01/09(火) 22:49:28
ドキュメント読め

デフォルトでエラーは、無視される。
引数の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

です。
575デフォルトの名無しさん:2007/01/09(火) 23:49:16
ねぇ、Jythonってもう進化は期待できないの?
576デフォルトの名無しさん:2007/01/10(水) 00:21:59
JavaVMはgroovyに夢中なのさ
577デフォルトの名無しさん:2007/01/10(水) 02:49:50
>>570
ConfigParserを頂きます
578デフォルトの名無しさん:2007/01/10(水) 06:57:49
>>571
その環境だけど普通に動くぞ
579デフォルトの名無しさん:2007/01/10(水) 09:33:54
ごめんConfigParserって撤廃対象だった気がする
580デフォルトの名無しさん:2007/01/10(水) 10:53:06
>579
そうなの!?

代わりに何を使うのが推奨?
581デフォルトの名無しさん:2007/01/10(水) 12:23:23
>>578
ん、そっかじゃあ起こるのはうちの環境だけなのかもしれないやね
Python 2.4.4 (#71, Oct 18 2006, 08:34:43) [MSC v.1310 32 bit (Intel)] on win32

>>573
ありがd
582デフォルトの名無しさん:2007/01/10(水) 14:46:58
っsimplejson
583デフォルトの名無しさん:2007/01/10(水) 15:06:53
iPhoneにpythonが乗りますように(ー人ー)
584デフォルトの名無しさん:2007/01/10(水) 16:32:48
OSXが動くそうだから、乗るだけなら出来るんじゃね?
GUIとかがPythonで自由に作れれば面白そう
585デフォルトの名無しさん:2007/01/10(水) 18:30:27
あいふぉんとぱいそんってちょっとにてる
586デフォルトの名無しさん:2007/01/10(水) 19:14:54
Mac板に貼ってあった記事によると、アプリのインストールは出来ないそうだ
ttp://itpro.nikkeibp.co.jp/article/USNEWS/20070110/258323/
587デフォルトの名無しさん:2007/01/10(水) 22:10:26
それほどでもないよ
588デフォルトの名無しさん:2007/01/11(木) 01:14:19
PEP#3108
ConfigParserは名前が変わるだけ?
589デフォルトの名無しさん:2007/01/11(木) 01:33:00
って書いてあるじょん。
590デフォルトの名無しさん:2007/01/11(木) 11:21:25
John?
591デフォルトの名無しさん:2007/01/11(木) 11:31:41
無限にログを出力するプログラムに時刻をつけたいです(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 までいくコマンド" なら動作するのですが,
このバッファリングをやめさせるにはどうすれば良いのでしょうか?
592デフォルトの名無しさん:2007/01/11(木) 11:46:13
logger -s
593デフォルトの名無しさん:2007/01/11(木) 12:13:15
>>591
loggerの使い方間違ってない?
594デフォルトの名無しさん:2007/01/11(木) 12:44:49
logger はログ吐きの仮想例のつもりだったんですが
同じ名前のコマンドがあったんですね。

実際には vmstat とかの出力を捕まえるイメージです...

結局こうすれば一応動いているみたいです。

while True:
line = sys.stdin.readline()
if line == '': break
sys.stdout.write("%13.2f \t%s" % (time.time(), line) )

595デフォルトの名無しさん:2007/01/12(金) 22:58:22
よいか、ジェラール
われわれはインペリアルクロスという陣形で戦う
お前は私の後ろに立て
お前のポジションが一番安全だ
596デフォルトの名無しさん:2007/01/12(金) 23:56:54
    |
   \  __  /
   _ (m) _ピコー
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく
597デフォルトの名無しさん:2007/01/13(土) 01:14:08
pythonで作られたguiアプリで有名なのはなんですか?
598デフォルトの名無しさん:2007/01/13(土) 01:41:05
>>597
BitTorrentです。
599デフォルトの名無しさん:2007/01/13(土) 09:13:36
redhat のインストーラじゃねーの?

あと sketch とか
600デフォルトの名無しさん:2007/01/13(土) 11:06:35
Access IBM
601デフォルトの名無しさん:2007/01/14(日) 22:39:11
Nokia S60で開発してる人いる?
705NK には Python for S60 はインストール不可能?

ttp://discussion.forum.nokia.com/forum/showthread.php?t=84373&page=3
ここでの fumihikoshibata 氏の804NKに関するやり取りを見る限り無理みたいだけど。
705NKでも同様に無理ってことかね。

すれ違いならごめんなさい。
602デフォルトの名無しさん:2007/01/14(日) 22:53:10
開発はしてないけど
インストールできるよ
705NKIIでも
Nokiaの型番で調べるといいかも(6630?6680?)
電車の時刻表のPythonアプリをかいたひとがいて
それ動かしてる
まとめサイトが今でもあるなら、そこに情報あるんでない
603デフォルトの名無しさん:2007/01/14(日) 23:22:22
質問です。
あるクラスのインスタンスを

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 版しかなくて日本版の端末には単純にはインストール不可っぽい。
それで、誰か知ってる人居ないかなと思いまして。

もう少し調べてみます。
605デフォルトの名無しさん:2007/01/15(月) 00:33:53
>>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関数で適当に。
606デフォルトの名無しさん:2007/01/15(月) 18:10:27
>605
ありがとうございます。
そんな感じで書けば良いんですね。
607デフォルトの名無しさん:2007/01/15(月) 21:44:11
urllib2使ってGoogleの単位換算機能を使おうと思ったが、403ではじかれる。
今日は疲れたのでもう寝る。
608デフォルトの名無しさん:2007/01/15(月) 21:46:54
また今度がんばってね☆
609デフォルトの名無しさん:2007/01/15(月) 22:43:30
>> 604
勘違いはなはだもうしわけない
705なんてあるのね
610デフォルトの名無しさん:2007/01/15(月) 22:55:32
>>607
いいことを教えてやろう。
googleはブラウザや公式APIを使わないリクエストを弾くのだ。
だからUserAgentをIEやFirefoxに変えてやればいいのでは。
611デフォルトの名無しさん:2007/01/15(月) 23:52:17
>>610
>>607じゃないけど早速試してきた。

from urllib2 import *
opener = build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
f = opener.open('http://www.google.co.jp/search?q=yard+to+feet')
print f.read()

開けたけど、こりゃきついわwww
612デフォルトの名無しさん:2007/01/15(月) 23:52:47
断定口調でよろしく
613デフォルトの名無しさん:2007/01/16(火) 20:29:21
>>611
ぐちゃぐちゃだな。いやがらせかこれは。
614デフォルトの名無しさん:2007/01/16(火) 20:35:36
開くとかきついとかぐちゃぐちゃとか、エロいなお前ら。
615デフォルトの名無しさん:2007/01/16(火) 23:49:46
めっちゃ強引になっちゃった
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()
616デフォルトの名無しさん:2007/01/16(火) 23:57:31
POSTに'num=0'をつけると、検索結果0件になるから、帰ってくるデータが少なくなるよ。
617デフォルトの名無しさん:2007/01/17(水) 00:02:08
だからおまいらそういうときはBeautifulSoupを使えと何度言ったr(ry
618デフォルトの名無しさん:2007/01/17(水) 01:45:32
使ったこと無いけど
つpygoogle
619デフォルトの名無しさん:2007/01/17(水) 03:24:13
C:\Python24\Tools\Scripts にgoogle.pyなんて
ファイルがあるのを知っているのは漏れだけで
いいと思うんだ…
620デフォルトの名無しさん:2007/01/17(水) 03:33:32
ttp://d.hatena.ne.jp/logomaru/20061022

このページのサンプルをpythonを使って書くとしたら
どんな風に書いたらいいかな

ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/const2.html
ttp://www2u.biglobe.ne.jp/~MAS/perl/waza/strcat.html
use Smart::Comments;と#use Readonly;を利用するのに必要なpmが
インストールされてないことに気が付かなくて少しはまりますた
621デフォルトの名無しさん:2007/01/17(水) 20:42:47
>>618
Youはこれ見なよ
http://japan.cnet.com/news/media/story/0,2000056023,20339947,00.htm

googlekey配布してないYO
622デフォルトの名無しさん:2007/01/17(水) 21:05:44
興味をもって調べたら数日前に新規受付停止してて泣いた
623デフォルトの名無しさん:2007/01/17(水) 22:23:41
な、なんだってー
もう配布してないのかよorz
やろうと思ってたのに
624デフォルトの名無しさん:2007/01/18(木) 05:16:56
625デフォルトの名無しさん:2007/01/18(木) 05:41:36
626デフォルトの名無しさん:2007/01/18(木) 14:16:07
なぜここで報告?
627デフォルトの名無しさん:2007/01/18(木) 18:25:34
ボウヤーだからさ
628デフォルトの名無しさん:2007/01/18(木) 18:26:01
ttp://d.hatena.ne.jp/faerie/20051108
これどうやってインストールするの?

> 3. curl http://d.hatena.ne.jp/faerie/20051108/1131380541 | uudecode すると tropy.tar.gz ができる
ここで躓いてる…orz (windows python2.4.4使用中)
629デフォルトの名無しさん:2007/01/18(木) 18:36:02
C:\Python24>curl http://d.hatena.ne.jp/faerie/20051108/1131380541 | uudecode
'uudecode' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

http://www.kaoriya.net/から cURL.exe for Windows を落としてきて
上のコマンド打ってみたけどうまくいかねー
630デフォルトの名無しさん:2007/01/18(木) 19:05:29
調べてみたら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
631デフォルトの名無しさん:2007/01/18(木) 19:29:55
632デフォルトの名無しさん:2007/01/18(木) 19:30:46
>>630
>書いてあったからコピペしてきてテキストファイルに貼り付けて拡張子を
>tar.gzに変えて無理やり解凍してみようとしたけどうまく行くわけもなく…orz

そこまでやってなんで最後ではまる?
拡張子を.uueにしてみれ
633デフォルトの名無しさん:2007/01/18(木) 19:41:13
python的にはuuモジュールかbinasciiモジュール使うのも有りかいね
634デフォルトの名無しさん:2007/01/18(木) 20:43:47
>>632
Lhaplusを入れ直して、拡張子を.uueに変えたら解凍できますた。
dくすです
635デフォルトの名無しさん:2007/01/18(木) 21:42:05
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
636デフォルトの名無しさん:2007/01/18(木) 22:50:47
http://www.koders.com/python/fid92F5AF0C2077ADE05E0AE50E1B1DA97A02BE750E.aspx
beginではなくてbegin-base64だから、こっちのbase64を使うのね

import base64
fs = file('aaa.uue', 'rb')
fd = file('tropy.tar.gz', 'wb')
base64.decode(fs, fd)

4行で解凍できそうだった
(error吐かないで5KBのaaa.uueから4KBのtropy.tar.gzが出来てた)

ファイル"tropy.tar.gz"はアーカイブファイルではありません。
以降のファイルを圧縮しますか?(Lhaplus)

これはどういうことなんだかもう全然さっぱりだよ…orz
637633:2007/01/19(金) 01:12:39
おや。uuモジュールはbegin-base64扱えないみたいねスマソ
結局のところbase64なわけだから、元ネタの
>begin-base64 644 tropy.tar.gz
の**次**の行から、最後の
>====
の**前**の行までをbase64.decodeすれば良いだけの話。
(手元の環境で確認済み)
638デフォルトの名無しさん:2007/01/19(金) 03:22:49
>>637
解凍デキタ━━━(゚∀゚)━━━!!
base64圧縮ってなんか面白いですね。thxです!!
639デフォルトの名無しさん:2007/01/19(金) 14:13:27
Ubuntu 6.10 jaのtkinterのentryウィジェットでscim-anthyを使って
日本語入力できない。
640デフォルトの名無しさん:2007/01/19(金) 16:41:32
http://www.amazon.co.jp/gp/offer-listing/4900900966/ref=dp_olp_3/249-7762307-0917115
なんでこれ定価より高い値段がついてんの?
641デフォルトの名無しさん:2007/01/19(金) 17:00:30
そりゃ新品が手に入らないからに決まってる
642デフォルトの名無しさん:2007/01/19(金) 22:58:06
643デフォルトの名無しさん:2007/01/20(土) 15:13:07
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でのバイナリデータの表現、扱いがわからないのですが
良い方法ありませんか?
644デフォルトの名無しさん:2007/01/20(土) 15:59:57
>>643
エスパーレスすると、
data = [ord(c) for c in data]
とかすれば望むものが得られるのではないか?
645デフォルトの名無しさん:2007/01/20(土) 15:59:58
>pythonでのバイナリデータの表現、扱いがわからないのですが
そのコードの最後でtype(data)をやれば分かる

>良い方法ありませんか?
何をする方法?
646デフォルトの名無しさん:2007/01/20(土) 22:15:00
>>645
日本語もろくに理解できないひとは黙っててください
647デフォルトの名無しさん:2007/01/20(土) 23:12:27
IDねえのにも慣れてるし、そのレベルのエサじゃ荒らせないよ。
648デフォルトの名無しさん:2007/01/21(日) 00:36:27
おまえらどんな環境で開発してますか?
参考にさせてください。

自分はJavaから流れてきたからeclipseでやってたけど、
お手軽にやりたいのにあんな巨大なIDE使うのもバカらしいなと思って、
最近xyzzyにしてみました。
でも、eclipseだと他のプラットフォームでも使い勝手が同じだからなー。
649デフォルトの名無しさん:2007/01/21(日) 00:37:40
Emacs
650デフォルトの名無しさん:2007/01/21(日) 00:40:13
IDLE
651デフォルトの名無しさん:2007/01/21(日) 00:57:44
iPython + vim
652デフォルトの名無しさん:2007/01/21(日) 03:51:24
Emacs

WideStudioってどう?
653648:2007/01/21(日) 09:14:23
みなさんありがと。
iPythonとWideStudioってちょっと面白そう。
654デフォルトの名無しさん:2007/01/21(日) 12:06:28
Stani's Python Editor とか Komodo とか。
655デフォルトの名無しさん:2007/01/21(日) 16:54:16
>>647
最近うんこAA見ないね。
なんか手を変え品を変えって感じだな。
656デフォルトの名無しさん:2007/01/21(日) 19:21:59
            !
               |    丶 _    .,!     ヽ
               >     ``‐.`ヽ、  .|、     |
             ゙'.     ,ト `i、  `i、    .、″
                |    .,.:/""  ゙‐,. `    /
             `  .,-''ヽ"`    ヽ,,,、   !
                、,、‐'゙l‐、      .丿 : ':、   <おまたせー
               、/ヽヽ‐ヽ、;,,,,,,,,,-.ッ:''`  .,"-、
              ,r"ツぃ丶  ``````   ../  `i、
          ,.イ:、ヽ/ー`-、-ヽヽヽ、−´    .l゙`-、
         _,,l゙-:ヽ,;、、             、、丶  ゙i、,,、
        ,<_ l_ヽ冫`'`-、;,,,、、、、.............,,,,、.-`":    │ `i、
      、、::|、、、ヽ,、、.    ```: : : ```      、.、'`  .|丶、
     .l","ヽ、,"、,"'、ぃ、、,、、、、.、、、.、、、_、.,,.ヽ´    l゙  ゙).._
    ,、':゙l:、、`:ヽ、`:、  : `"```¬――'''"`゙^`     : ..、丶  .l゙ `ヽ
   ,i´.、ヽ".、".、"'ヽヽ;,:、........、           、、...,,,、−‘`   、‐   |゙゙:‐,
  ,.-l,i´.、".`ヽ,,,.".`   `゙゙'"`'-ー"``"``r-ー`'":      _.‐′  丿  ,!
 j".、'ヽ,".、".、"`''`ー、._、、、           、._,、..-‐:'''′   .、,:"  丿
 ゙l,"`"`''ヽヽ"`"`  ```゙'''"ヽ∠、、、、ぃ-`''''": `      、._./`  ._/`
  `'i`ヽヽヽ`''ーi、、、: :                   、.,-‐'`   、/`
   ``ヽン'`"`  : `~``―ヽ::,,,,,,,,,,.....................,,,,.ー'``^    ,、‐'"`
      `"'゙―-、,,,,..、、                 : ..,、ー'"'`
           : `‘"`―---------‐ヽ``"''''''""
657デフォルトの名無しさん:2007/01/21(日) 19:31:00
昔win32にiPythonインスコして日本語使ったら
目も当てられない状況になったのだが今はどうなっているのやら。
658デフォルトの名無しさん:2007/01/21(日) 19:54:29
>>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みたい。
659デフォルトの名無しさん:2007/01/21(日) 19:56:15
出さんでええ
660デフォルトの名無しさん:2007/01/22(月) 07:46:40
本格なエディタと別にCopal使ってるよ。Windows限定でスマンな。
スクリプトを保存しないで実行できるし、plinkと組み合わせて
リモートのUNIXマシンのpythonだって実行できるし、
数行から数十行のスクリプトを試す場合、非常に便利。
661デフォルトの名無しさん:2007/01/23(火) 12:28:54
pythonで外部コマンドを使うにはどうすればよいのでしょうか?
perlでのsystem('ls')見たいな感じです。
662デフォルトの名無しさん:2007/01/23(火) 12:30:54
てか、今調べたらそのまんまでした。
宮崎マンセー
663デフォルトの名無しさん:2007/01/23(火) 16:53:20
>>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"
664デフォルトの名無しさん:2007/01/23(火) 18:25:14
>>661-662
apacheと一緒に使うとくだらない仕様(あるいはバグ)があるのでよぷ注意
665デフォルトの名無しさん:2007/01/24(水) 03:10:49
>>643
array.array('B',data)
666デフォルトの名無しさん:2007/01/24(水) 07:06:39
日本語の文字列を文字列を文字参照(
667デフォルトの名無しさん:2007/01/24(水) 07:09:30
&が消えちったので書き直し

日本語の文字列を文字列を文字参照(&#xnnnn;みたいな形式)に
エンコードするにはどうしたらいいですか?
668デフォルトの名無しさん:2007/01/24(水) 07:39:03
へぇ、日本語なんて定義されてたんだ
669デフォルトの名無しさん:2007/01/24(水) 07:55:35
# -*- coding: utf-8 -*-
s = u'あいうえお'
s.encode('ascii', 'xmlcharrefreplace')
670デフォルトの名無しさん:2007/01/24(水) 10:44:49
>>668
定義っていうかユニコードの文字参照だお。
671デフォルトの名無しさん:2007/01/24(水) 12:11:11
ありがとうございますー
672デフォルトの名無しさん:2007/01/24(水) 16:17:48
>>667
別解:文字のコード値は ord() で得られる。
>>> text = unicode("あいうえお", "mbcs")
>>> for c in text: print "&#%d;" % ord(c) # まずは単純に for ループで

&#12354;
&#12356;
&#12358;
&#12360;
&#12362;
>>> ["&#%d;" % ord(c) for c in text] # リスト内包でも OK
['&#12354;', '&#12356;', '&#12358;', '&#12360;', '&#12362;']
>>> "".join(["&#%d;" % ord(c) for c in text]) # つなげて完成
'&#12354;&#12356;&#12358;&#12360;&#12362;'
>>> "".join("&#%d;" % ord(c) for c in text) # 2.5だと [] が省ける
'&#12354;&#12356;&#12358;&#12360;&#12362;'
>>>
673デフォルトの名無しさん:2007/01/24(水) 17:08:43
「今、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
となり、これはこれで正しいですけど、関数定義の中の実際の行番号がわかりません。
もっと、スクリプトの中の絶対的な行番号を知る方法はないでしょうか。
674デフォルトの名無しさん:2007/01/24(水) 17:32:43
呼出し元(ひとつ上のフレーム)の行番号を参照してみるテスト。

import sys

def lineno():
 try:
  raise ValueError
 except:
  return sys.exc_info()[2].tb_frame.f_back.f_lineno
675デフォルトの名無しさん:2007/01/24(水) 17:43:16
>>674
意味はまだわかりませんけど、その定義を書いて下のようにしたらできました。
ありがとうございます。

def LineNo():
 print "(1) %d in function" % lineno()
 print "(2) %d in function" % lineno()

frameの意味とか勉強してみます。
676デフォルトの名無しさん:2007/01/24(水) 17:50:53
連続ですみません。
関数定義の中にinspect.currentframe()を書けば良かったです。

def LineNo():
 FuncFrame = inspect.currentframe()
 ・・・

もうちょっと実験すればよかった
677デフォルトの名無しさん:2007/01/24(水) 17:56:18
それだと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()
678673:2007/01/24(水) 18:12:44
奥が深いですね・・・
もうちょっと勉強してみます
679デフォルトの名無しさん:2007/01/24(水) 20:41:03
DevCamp、アプリケーションフレームワーク一色だな・・・
680デフォルトの名無しさん:2007/01/24(水) 22:16:59
もっとも他にどんなお題が設定できるかというと...

科学計算ネタとか?
681デフォルトの名無しさん:2007/01/24(水) 22:50:00
科学計算なあ。
計算対象(なんたら力学とか)のチョー専門的な話と
解法(離散化手法とか求解性能の分析とか)の割と専門的な話と
ハード(SMPクラスタとか)の話とソフト(SciPyとか)の話があって、
最初の2つは知らない人、使わない人にはワケワカメな可能性が高いし、
あとの2つはあんまり面白い話題がないんだよねえ。
フーンで終わってしまう。俺は好きだけどねえ、そういう話。
682デフォルトの名無しさん:2007/01/24(水) 23:16:29
よくわからんのだが、pythonでtask dispatchみたいな真似を
している奴はいないのか?

drubyってのは話には聞くが、rubyがわからないので使った
ことない。
683デフォルトの名無しさん:2007/01/24(水) 23:26:57
python distributed objectsでググればぼこぼこ出てくるって話だったな
684デフォルトの名無しさん:2007/01/24(水) 23:36:10
>683

おお、ほんとだ。どうもありがと。
ついでですいませんが、どれかお勧めのあったら教えてください。
685デフォルトの名無しさん:2007/01/25(木) 13:39:02
686デフォルトの名無しさん:2007/01/25(木) 16:46:44
687デフォルトの名無しさん:2007/01/25(木) 18:02:50
688デフォルトの名無しさん:2007/01/25(木) 18:06:38
SOAP とかそのほかいろいろ実装はあるよね

p2p型機構のもあるし
689677:2007/01/26(金) 15:19:47
>それだとframeが循環参照になって解放されないらしいから、まずいと思うよ。
ちょっと訂正。最近のPythonのGCは循環参照も検出できるからいつかは解放される。
ただ、循環参照してないオブジェクトが参照カウントが0になった途端に解放される
のに比べて、解放されるまでに時間がかかるのでメモリ的に嬉しくないのと(GCに負荷も
かかるはず)、循環参照検出機能がgc.disableなどでオフにされてると解放されないのとで、
「delしたほうがいい」ということみたい。(絶対じゃないみたい)
690デフォルトの名無しさん:2007/01/26(金) 19:11:18
Pythonすげーーーーーーーー!!!!!!
http://headlines.yahoo.co.jp/hl?a=20070126-00000384-reu-ent
691デフォルトの名無しさん:2007/01/26(金) 20:04:18
写真ないの?

以前の羊丸飲みネタは写真付きだったが、、、
692デフォルトの名無しさん:2007/01/26(金) 20:25:00
見つけた。まだトップにあるがそのうち見れなくなると思う。
http://www.nst.com.my/
直リンク。
http://www.nst.com.my/pix/pix_top_01261
でも思ったほどインパクトないな。こっちのほうが強烈。
http://10e.org/mt/archives/200510/070306.php
693デフォルトの名無しさん:2007/01/26(金) 20:57:19
↑画像、何がどうなってるのか分からないw
694デフォルトの名無しさん:2007/01/26(金) 22:53:21
結局は負けたも同然ってことか

ワニますこっと な言語ってあったっけ?
695デフォルトの名無しさん:2007/01/26(金) 23:06:45
>694
なに勝ち負けにこだわってんだよ。
696デフォルトの名無しさん:2007/01/26(金) 23:55:11
勝てないなと思うと
勝負事に興味の無いオレ、を表明するんだよね
697デフォルトの名無しさん:2007/01/27(土) 00:02:24
つか、そもそも何と何の勝負なのかわけわからんじゃないかw
698デフォルトの名無しさん:2007/01/27(土) 00:06:07
699デフォルトの名無しさん:2007/01/27(土) 00:58:12
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を手で直すしかないのでしょうか・・・。
700デフォルトの名無しさん:2007/01/27(土) 01:08:42
>>699
pyMinGWというパッチが存在することからして、
Python.org謹製のtarballではコンパイルは通らない希ガス。

てか、なにゆえ自炊しているの?
拡張モジュールをMinGWでコンパイルして使いたいだけなら
本体側はPython.org謹製のWin32版をインストローリングすればいいわけだが。
701デフォルトの名無しさん:2007/01/27(土) 01:21:33
>>700
えっと自分でビルドしてるのは、pythonを組み込み言語として
使おうと思ってるからでして、本家配布のものはVC7で
コンパイルされてるらしいので、できればmsvcrt.dllにCランタイムを
統一したいからです。あとインストーラが嫌いなんです・・・
あとユーザーの環境と組み込みの環境でバージョンが異なる場合を
考えると、ユーザーに本家からダウンロードさせるよりも、
python25.dllをアプリと一緒に配布した方がいいかなと・・・。

pyMinGWはちょっとググって見ます。ありがとうございます。
702デフォルトの名無しさん:2007/01/27(土) 06:04:15
pythonとは微妙の異なるが、emacsでタブと、空白に色をつけたい場合はどうしたらいいでしょう?
python-modeとかにないですか?
時々、タブと空白を混ぜて書いてしまって、訳がわからなくなる。
703デフォルトの名無しさん:2007/01/27(土) 07:16:39
pythonと全く関係ないと思いますがfont-lock使えばいいと思います
704デフォルトの名無しさん:2007/01/27(土) 10:58:24
ところで聞いてくれ>>702よ、スレとあんまり関係ないけどさ。
あやしいリージョンを M-x untabify または M-x tabify すればいいと思われ。
705デフォルトの名無しさん:2007/01/27(土) 11:07:19
python-mode 使っていたらそもそもそんなことに悩まなくて済むはずだが
706デフォルトの名無しさん:2007/01/27(土) 12:06:02
俺は indent-tabs-mode を nil にして、インデントは空白で統一している
707デフォルトの名無しさん:2007/01/27(土) 18:05:28
個人的にはblank-mode.elが手軽だから、
たまーに確認程度に一時的onにする事はある
708デフォルトの名無しさん:2007/01/27(土) 23:29:01
pythonの使える、おすすめのホスティングサービス教えてください(海外可)。
できればTurboGearやDjangoのつかえるやつ。
709デフォルトの名無しさん:2007/01/27(土) 23:43:07
textdrive
710デフォルトの名無しさん:2007/01/28(日) 01:11:10
xreaはpython2.4.3が入ってておすすめ
711デフォルトの名無しさん:2007/01/28(日) 02:11:08
ttp://www.value-domain.com/xreaip.php

xreaはこれ見ると新旧入り混じってるように見えるんだが
新規アカウントは必ず新しいサーバーに割り当てられるの?
712デフォルトの名無しさん:2007/01/28(日) 06:45:39
>711
xreaはサーバアカウント取得する時に
どのサーバか選択出来るから無問題
713デフォルトの名無しさん:2007/01/28(日) 11:09:01
ttp://www.ymc.ne.jp/ のマネージドで Django 動いた.
714デフォルトの名無しさん:2007/01/28(日) 14:05:23
sakuraんとこのバージョンはどうなってんのかな
一通りFAQ見てもみつからないんだけど
715デフォルトの名無しさん:2007/01/28(日) 18:27:45
>>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 をビルドして使ってる.
何の問題もないよ.
716デフォルトの名無しさん:2007/01/28(日) 23:15:30
>>715
えっ!?
どうやって自分でビルドするの?
コンパイラ入ってるの?
717デフォルトの名無しさん:2007/01/28(日) 23:41:37
sakuraもxreaもgcc使えたはずだけど
718デフォルトの名無しさん:2007/01/29(月) 00:25:18
さくらでsqliteがコンパイルできんかった
719デフォルトの名無しさん:2007/01/29(月) 11:09:48
>>715
xreaってSSH使ってコンパイルできたっけ?
最近ためしたとき無理だったが。
720デフォルトの名無しさん:2007/01/29(月) 11:12:38
あれ?
それなんだったけかなぁ
3.4.xはだめとか3.2.xはいけるとか
そんなんだったきがする
さくらでtrac動かすページに情報あったような...
721デフォルトの名無しさん:2007/01/29(月) 11:13:21
すまんsqliteね >>720
722デフォルトの名無しさん:2007/01/29(月) 23:14:16
自分でgccからコンパイルせにゃならんのね
鯖の仲間よ、ちょっとだけ負荷かけるが許してくれ
723デフォルトの名無しさん:2007/01/30(火) 01:50:43
>>722
つ[nice]
724デフォルトの名無しさん:2007/01/30(火) 02:12:41
[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])
ttp://dev.jimaku.in/rest/get_jimaku_api/ODshB09FQ8w/_OWv_Q_JNaU から
<timeline></timeline>の部分をコピーしてきてxmlファイルに保存して
実行すると、secで昇順にsortされたセリフが出力されます

実数->文字列変換, リスト内でのデータの格納のされ方, 拡張された?print文
リストデータのsortの仕方, 色々勉強になりますた…orz

XPathの使い方は正直いまいち良く分かりませんでした><
727デフォルトの名無しさん:2007/01/30(火) 14:56:44
>>>all

おまえらみんな合宿だ
http://www.python.jp/Zope/PyLog//1169034548/index_html
728デフォルトの名無しさん:2007/01/30(火) 17:57:12
> ○募集期間
> 1月末まで。

明日までか・・・・。
729デフォルトの名無しさん:2007/01/30(火) 18:12:57
柴田淳はもっと評価されてもいい★2
http://news23.2ch.net/test/read.cgi/news/1170148161/l50
730デフォルトの名無しさん:2007/01/30(火) 18:18:16
アタマくせえ
731デフォルトの名無しさん:2007/01/30(火) 19:59:20
python 2.5.1 は4月まで延期 from python-dev
732デフォルトの名無しさん:2007/01/30(火) 20:21:44
Pythonが流行るかどうかはgoogle次第か
733デフォルトの名無しさん:2007/01/30(火) 20:38:38
バージョンアップについていけん・・・頭がまだ2.3なんですけど
734デフォルトの名無しさん:2007/01/30(火) 21:15:53
>>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 を調べると吉です。
735デフォルトの名無しさん:2007/01/30(火) 21:37:01
>>733
俺なんて2.1以前だぜ
736デフォルトの名無しさん:2007/01/30(火) 21:40:50
XPath Support in ElementTree 1.2
http://effbot.org/zone/element-xpath.htm
737726:2007/01/30(火) 22:17:18
>>734
ありがd ちょっと調べてみるyo
738デフォルトの名無しさん:2007/01/31(水) 08:27:33
>>733
1.6で勉強したから、それ以降のことはよくわからない
Perlも4まで
739デフォルトの名無しさん:2007/01/31(水) 10:45:46
>Perlも4まで

( ゚∀゚)人(゚∀゚ )ナカマー!

>1.6で勉強したから、それ以降のことはよくわからない

ヽ(´ー`)人(´ー`)ノナカーマ
740デフォルトの名無しさん:2007/01/31(水) 13:02:41
Jythonと共に2.1で進化が止まったヨー
741デフォルトの名無しさん:2007/01/31(水) 13:15:47
sorted関数が便利
742デフォルトの名無しさん:2007/01/31(水) 15:39:06
枯れた環境が最高です
743デフォルトの名無しさん:2007/01/31(水) 17:37:52
>>744
                        |
                        |
         ___ ,-────-、  |   最高ですか〜〜〜〜!?
       /     `         \ |
       /ヾ ヾ .,! !,,!_´,,//_//    ヽ|
      /=/`''~~       /彡-      |\
      |=.|    二     | 三-     |  \______
      ヽ|   ──     \三-    |
       | ヽ ,,   、ー ̄   \     |
       / /      \   |=/\- (
      |    /         |/ /  ,,|
      |    ( 。つ\       ノ   ||
      .|    /     丶ー    ヽ | |
       |   /____」      | ! ! .|
       |    |/    /     /  ノノノノ
        |    |__/    //   /\_
      //⌒丶 -─      /   /≒/
       ( ヘ )____/_ノ   /≒ /≒
       / /-'          /≒ / ≒
     / ̄ ̄\_____/ ≒, / ≒≒
    /─     \      / ≒ / ≒≒
744デフォルトの名無しさん:2007/01/31(水) 18:04:45
       ,,.-- 、
      /   ,-、ヽ /l
      l   !;;ノ |' 〈  < うるせえ
      |      |ヽ.|
      /      ヽ
     ./       l
     l  l      |
745デフォルトの名無しさん:2007/01/31(水) 20:49:04
SciPyが使いたくて、Enthought Pythonをインストールしました。
で、IDLEを起動しようとしたんですが、
"tk84.dllが見つからなかったため、このアプリケーションを開始できませんでした。"
とエラーが出て起動できません。
import Tkinterすると159と同じエラーが出ます。
IDLE以外にもTkを使ってるパッケージは同様のエラーで使えない状態です。
何か解決策があれば教えていただけますか。
746デフォルトの名無しさん:2007/01/31(水) 23:08:20
tk84.dllを拾ってきたらいいんじゃね?
activetclに入ってるらしいよ

ググる先生が教えてくれたから間違いないよ
747デフォルトの名無しさん:2007/01/31(水) 23:30:46
本家のpythonにSciPyを
http://www.scipy.org/
から入れたらダメなの?
748デフォルトの名無しさん:2007/02/01(木) 00:31:59
[Python-Dev] Happy Birthday, Guido!
749745:2007/02/01(木) 09:26:17
>746-747
ありがとうございます。

>746
とりあえず試してみます。

>747
仕事で個人的に使おうかと思っているのですが、
周りの人間が「オレもそれ使いたい」という状況になったときに、
導入障壁が低い環境にしたかったからです。
Scipy単体で入れるには、LAPACKなどのライブラリも含めて
ビルドする必要があるらしいので。
750デフォルトの名無しさん:2007/02/01(木) 15:04:51
単純に python.org の python-2.5.msi と
scipy.org の scipy-0.5.2.win32-py2.5.exe と numpy-1.0.1.win32-py2.5.exe を
拾ってきてインスコすればいいんじゃないの?
751745:2007/02/01(木) 17:11:34
>750
downloadにバイナリが置いてあったんですね。
installのページしか見てなかった。orz
752デフォルトの名無しさん:2007/02/02(金) 01:33:12
>>751
ところで SciPy 使ってどういう計算をする予定?
スクリプト言語で科学技術計算をやろうとするところに興味がある。
753デフォルトの名無しさん:2007/02/02(金) 02:16:16
>スクリプト言語で科学技術計算をやろうとするところに興味がある。

いまや "フツー" じゃねーの?
754デフォルトの名無しさん:2007/02/02(金) 03:42:33
matlabみたいに使うんじゃね?
755745:2007/02/02(金) 21:18:47
どういう計算かと言われると今の時点では特に無いのですが、
研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。
matlabは職場にあるんですがライセンスが限られているので、
フリーで使えるのはありがたいです。
計算時間が問題になるような用途には
専用のツールやらシミュレータやらで対応します。
756デフォルトの名無しさん:2007/02/03(土) 00:46:14
>>755
>どういう計算かと言われると今の時点では特に無いのですが、
>研究関連でちょくちょく出てくる非定型の計算や処理に使おうかと。
>matlabは職場にあるんですがライセンスが限られているので、
>フリーで使えるのはありがたいです。
>計算時間が問題になるような用途には
>専用のツールやらシミュレータやらで対応します。

matlabを買った方がいいよ.
757デフォルトの名無しさん:2007/02/03(土) 04:11:26
>>755
レスありがとう。なるほど、行列が扱える高機能電卓として使うってことね。

>>753
フツーなのかなあ。
pure Python スクリプトとして計算プログラムを書くの?
それとも C/Fortran コードを呼び出すためのグルー言語扱い?
並列化とかフツーはどーしてんだろう。。。
758デフォルトの名無しさん:2007/02/03(土) 10:19:15
分野にもよるんだろうけど、ぐぐってたら
高エネルギー系かなにかの学会(シンポジウム?)での
発表資料で大規模なデータ処理・分析に python を
大々的に使ってるよーというような資料を見たことはあるな.

それを探してっていうよりさりげなく引っ掛かってきた例だし
numeric のスライドとかにも使われている例とか
出てなかったっけ?

759デフォルトの名無しさん:2007/02/03(土) 12:14:13
python本家サイトのトップはNASAで採用が表示されているが
760デフォルトの名無しさん:2007/02/03(土) 13:36:13
>>757
計算ごりごりのとこはCか何かで書いて、それの貼り合わせ用にPythonでしょ。
特に分業化が進むと有り難みがわかるよ。
761デフォルトの名無しさん:2007/02/03(土) 19:13:19
>>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 で科学技術計算」って言えるのかなあ、と。取り留めのはなしでスマソ。
762デフォルトの名無しさん:2007/02/03(土) 19:20:48
PyGTK ぢゃなくて WxPython だった。もひとつ訂正:
Python が科学技術計算分野での役割 → Python の科学技術計算分野での役割
763デフォルトの名無しさん:2007/02/03(土) 20:37:59
761の話は並列でするような高度な計算でないと科学技術計算と言えないという
ものが前提になってると思うんだけど、そうなの?
764デフォルトの名無しさん:2007/02/03(土) 21:09:23
>>763
んー、俺の関心が主に並列計算にあって、逐次よりも並列の方が C/Fortran で書く必要性が顕著だから
761みたいな書き方になった(言い訳)。並列化のために云々というところを「高速(逐次)計算のために」と
読み替えても761の趣旨は変わらないです。
765デフォルトの名無しさん:2007/02/03(土) 21:13:18
行列計算みたいなのは numeric とかの場合でも
実際には C で書いたライブラリに放り投げるから
そんなに遅くはないんですよね?
766デフォルトの名無しさん:2007/02/03(土) 21:13:40
そういうことなら
>「Python で科学技術計算」って言えるのかなあ
言えるんじゃね?761の興味には適さないかもしれんが、一般的には言える。

767デフォルトの名無しさん:2007/02/03(土) 21:14:50
あれ、ageてしまった。>>764は答えになってないかも。
pure Python (pure MATLAB) で十分間に合う程度の計算は科学技術計算とは言えない、とか
そういう意図は全然ないので念のため。俺の関心が HPC 方面にあるというだけのことです。
768デフォルトの名無しさん:2007/02/03(土) 21:17:46
本気で高速化しようとしたらキャッシュ効率なども考慮すべきなので、
C などの言語で書くのは必然になる。「Python で科学技術計算」 なら
それほど真剣に高速化する必要はないけど、それなりの速度が出て、
しかもちゃらっと書ける、ってのが落としどころなんだと思う。

そう考えると、いわゆるスケルトン系のアプローチなんかは向いてる
ような気がする。言語の性質にも適合するところが多そうだし。
769デフォルトの名無しさん:2007/02/03(土) 21:52:54
>>765
そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは
Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、
そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。

>>766
> 761の興味には適さないかもしれんが、一般的には言える。

そーなんだよね、やっぱ。これからは相手の趣旨を確かめるようにしないとなあ。

>>768
そこが落としどころだと俺も思う。
たぶん「本気の高速化」が必要な人には Python の「貼り合わせアプローチ」はアピールしないんだろうなあ。
770デフォルトの名無しさん:2007/02/03(土) 22:12:15
ちょっと話が変わるけど、先日 High Performance Ruby (HPR) の開発者の話を聞いた。
MPI でコリコリ並列プログラムを書くのはたいへんなんで、もっと抽象度を上げましょう、
とゆーことで、逐次の Ruby を並列プログラムが書けるように拡張してますよーという内容。
1.クラスタを構成する個々の計算ノードを place オブジェクトとして抽象化
2.for ループを並列化して、ループ内のコード(クロージャ)を place オブジェクトに割り当てて並列実行
てなことをやるという話だった。

Python もこういうアプローチを進めてみると「本気の高速化」が必要な人にもアピールするかもなあ。
インタラクティブな逐次環境と高性能計算(HPC)用途の並列環境のあいだのギャップを埋める可能性は
こっちの方向にある気がしてきた。

みんな、取り留めのないはなしに乗ってくれてありがとう。
771デフォルトの名無しさん:2007/02/03(土) 22:26:59
や は り R u b y か
772デフォルトの名無しさん:2007/02/03(土) 22:31:26
>そです。ただ、Numeric において「実際には C で書いたライブラリ」が呼ばれる、とゆーのは
>Python をライブラリ貼り合わせ用のグルー言語として使うとゆーアプローチそのもので、
>そんなのは「Python で科学技術計算」とは言わないのではないかなあ、というのが俺の疑問。

「ボトルネックはCで書くからRubyの遅さは問題にならない」はむしろRubyの売り文句だった
希ガス。「逆に考えるんだ。RubyをGCのついたCライブラリと考えるんだ」というのもあったね。
773デフォルトの名無しさん:2007/02/03(土) 22:35:53
あー、えーと、俺は自他共に認める根っからの Python 使いなので念のためw
774デフォルトの名無しさん:2007/02/03(土) 22:40:08
「〜なあ」ってMatzの口調にそっくり。もしかして本人?
775デフォルトの名無しさん:2007/02/03(土) 22:46:53
770=773です。

>>772
Ruby のことは知らないけど、
少なくとも Python では「遅さは問題にならない」というわけにはいかなくて、
Cで書かれたライブラリを呼んでいても数パーセントの呼び出しオーバヘッドが乗ってくる。
結局のところ、生産性を取るか高速性を取るかという話になってるんだよねえ。
ぶっちゃけ、グルー言語としての Python はほぼ完成の域にあって
技術的にはあまり面白みがないし、前述のギャップも埋められそうにない。
じゃあどういうアプローチなら可能で、俺にも貢献ができそうかなあと思ったわけです。
776デフォルトの名無しさん:2007/02/03(土) 22:49:07
777デフォルトの名無しさん:2007/02/04(日) 02:23:41
>>770
そういう話であれば Fortress の今後に期待
778デフォルトの名無しさん:2007/02/04(日) 02:58:11
>>777
先日 Sun のインタプリタがフリーソフトになったし有望株だね。
昨年の春に Guy L. Steele Jr. の講演を聞いたよ。
開発目的は To Do for Fortran What Java Did for C なんだと言ってた。
数式っぽくコーディングできるあたりは MATLAB ユーザにも受けるかもね。

HPR の開発者の人も Fortress を含め DARPA HPCS 言語を引き合いに出して
並列プログラミングの生産性を上げることが HPR の目標だと言ってた。

この方面は今後面白くなりそうだね。
Python ベースの分散並列プログラミングのフレームワーク作りとかやったらチョー楽しそう。
779デフォルトの名無しさん:2007/02/04(日) 05:05:18
誰も使わないに200ルピー
780デフォルトの名無しさん:2007/02/04(日) 11:21:55
781デフォルトの名無しさん:2007/02/04(日) 11:30:30
なんかガキっぽいタイトルだなw
782デフォルトの名無しさん:2007/02/04(日) 12:38:18
ガキっぽい脊髄反射しかできないやつにそういわれると説得力あるな(wwwwwww
783デフォルトの名無しさん:2007/02/04(日) 14:15:14
>RubyやPerlを習得した若年層のWeb開発者を中心に、Pythonへの関心が高まってきています。
この表現に何か引っ掛かるものが・・・w
784デフォルトの名無しさん:2007/02/04(日) 14:21:52
ルビーやパールはリナックスだからな
パイソンはABCから派生したらしいね
パイソンはスクリプト言語で速度重視では
ないだろ
785デフォルトの名無しさん:2007/02/04(日) 14:23:43
>>783
あんまり粘着するとZOPE関係者だと疑われるよ
786すげーしっくり来ないんだけど:2007/02/04(日) 14:26:36
>784
どこのコピペ?
787デフォルトの名無しさん:2007/02/04(日) 14:37:40
コピペじゃないよ
ルビーやパールはリナックスの人が使うから
パソコンユーザーのほとんどがウインドーズの人
だからパイソンを使うという話
788デフォルトの名無しさん:2007/02/04(日) 14:46:36
そういう意味ではパイソンもリナックスだよ。たいてい標準装備だし。
789デフォルトの名無しさん:2007/02/04(日) 15:10:45
>>780
> Software Design、LLフレームワーク、.Net Expertの既存コンテンツからの再録を中心にすえることで、コストを抑えた製作を行う予定です。
激しく萎える説明文ですな.
790デフォルトの名無しさん:2007/02/04(日) 15:14:03
>>789
www
企画書かなんかをそのまま写しちゃったのかな
791デフォルトの名無しさん:2007/02/04(日) 15:25:04
>>780
Djangoって書いてあるけど,これまでSDの記事になったことってあったっけ?
どこからの再録なんだろう?
792デフォルトの名無しさん:2007/02/04(日) 15:32:41
>>791
書き下ろしの記事もあるみたいだね.
雑誌のMOOKなんだから、再録があるのは普通.

いずれにしろ、ここに巣くってる貧乏人のITドカタ共には関係のない話だけど.
793デフォルトの名無しさん:2007/02/04(日) 17:35:18
IT貴族もいるお\(^o^)/
794デフォルトの名無しさん:2007/02/05(月) 03:09:19
>>792
プログラミングなんか仕事にするかよ、失礼なw
795デフォルトの名無しさん:2007/02/05(月) 03:35:03
老後の趣味です
796デフォルトの名無しさん:2007/02/05(月) 04:50:12
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はちゃんと検出されてるんだけどなあ。
なんかアドバイスちょーだい。
797デフォルトの名無しさん:2007/02/05(月) 06:33:27
大変っスねw
798デフォルトの名無しさん:2007/02/05(月) 07:39:34
>>794
早寝早起きからはじめような。
799デフォルトの名無しさん:2007/02/05(月) 08:03:46
なにそのつまらん返しw
800デフォルトの名無しさん:2007/02/05(月) 08:10:47
>>796
OSX(10.3.9)ですが、普通に使えてますよ。
ターミナルの設定なんかを見直してみては?
801デフォルトの名無しさん:2007/02/05(月) 14:32:57
unix 上の python で

str = '\hoge\real\path' # window系の path 文字
idx = str.find('real')

ってことをやりたいんですが '\r' として
解釈されてしまうんでどうにもマッチできません。

re.escape() ってのがソレかと思ったんですが \r は
そのまま残ってしまいました... orz

どうやって加工すればいいのでしょうか?
802デフォルトの名無しさん:2007/02/05(月) 14:41:36
Rubyとは違い、シングルクオートでもエスケープ文字は有効になる。
>>> '\n' == "\n"
True
だから
'\\hoge\\real\\path'
とするか
r'\hoge\real\path'
とするといい。
803726:2007/02/05(月) 14:43:37
>>801
エスケープシーケンス \r python で google!

http://systama.blog52.fc2.com/blog-entry-23.html(要点)
http://www.m-takagi.org/docs/python/tut/node5.html(詳細)
804デフォルトの名無しさん:2007/02/05(月) 14:46:31
「'\r' として解釈されてしまう」ということまで判っているのに解決できないという
というのが興味深い。
805デフォルトの名無しさん:2007/02/05(月) 15:00:28
ごめんなさい....
>802,803 を読んでそっかーと思って調べなおいてみたら...

読み込んだ時点で '\\r' に変換されていたのに
自分のコード片のテストを '\r' な文字を突っ込んで
やろうとしていた自分の勘違いミスでした...

アドバイスありがとうございます
806デフォルトの名無しさん:2007/02/05(月) 17:12:35
>>775
なんか、話を蒸し返すようで悪いが、
言語がスレッドセーフであるのも大事なんだろうけど、
プログラムする側も、マルチスレッドのデザインパターンが
使えないとまずいんじゃないの?
結城氏の本にデザパタのマルチスレッド版があったが(java本だけど)。
もっとも、自分の場合は普通のデザパタを学ぶので、手一杯。
いつか余力があったら、マルチスレッドのデザパタもやりたい…。
807デフォルトの名無しさん:2007/02/05(月) 17:39:10
プログラミングの鬼門一覧

・ポインタ(リファレンス)
・構造体
・オブジェクト指向
・マルチスレッド

すべての鬼門を越えられないと,デザパタを学んでも"設計"ができるようにはならない.
できない人は手足君として一生こき使われる運命.
808デフォルトの名無しさん:2007/02/05(月) 17:49:53
デザパタ=劣化オブジェクト指向
どうしてみんな自分の手足を縛りたがるのかが不明
809デフォルトの名無しさん:2007/02/05(月) 17:50:27
>>807
そんな基本的なことを知らない馬鹿はまずいないw
810デフォルトの名無しさん:2007/02/05(月) 17:51:44
オブジェクト指向の知ったかが多いことは過去スレが示している
811デフォルトの名無しさん:2007/02/05(月) 17:52:16
うーん、Cの方かと思うけど、
Pythonの場合は、
・ポインタ(リファレンス)
・構造体
はいらないよ。
Pythonは変数は基本的に参照渡しがデフォだし、
構造体は、メソッドのないクラスで代用だと思う。

オブジェクト指向とマルチスレッドは必須じゃないけど、
使えるようにはなりたいねー。
ただ、マルチスレッドの優先度は低いでしょ。

デザパタ本は、Pythonで書かれた本がほしいよね。
もっとも、慣れればjavaをPythonに直すのはたいした事も
ないけど。

みんなして、デザパタ本のJavaをPythonで組みなおしてるのは
無駄の極みだと思うので、誰か本ででもwebででも公開して
ほしい…。
812デフォルトの名無しさん:2007/02/05(月) 17:58:10
>>808
大丈夫かよ。
メソッドで直接インスタンスの生成とかしてないだろうね?
813デフォルトの名無しさん:2007/02/05(月) 17:58:13
「みんなして」ってことは>>811氏は当然してるってことだよね。
それを本やwebで公開したら良いと思ってるんだよね。
だったら自分でするべきことは決まってるよね?
814デフォルトの名無しさん:2007/02/05(月) 18:09:29
         _,,..,,,,_ . _
        ./ ,' 3 /   ヽ--、
        l   /        ヽ、
       /`'ー/_____/
        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
815デフォルトの名無しさん:2007/02/05(月) 18:16:12
816811: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')
817デフォルトの名無しさん:2007/02/05(月) 18:20:54
なんだよそれw
818811: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
820デフォルトの名無しさん:2007/02/05(月) 18:29:30
ファイルロックについてお尋ねします。
Windows, MacOS, UNIXの各プラットフォーム間で可搬性を
なるべく失わずにファイルロックを行うにはどうしたら良いですか?
file.flock(FILE::LOCK_SH) のようなことがしたいのです。
os.open()でいけるかとも思ったのですが、ファイルオブジェクトを
返すのではなくディスクリプタを返すらしく、使うのに躊躇しています。
821デフォルトの名無しさん:2007/02/05(月) 18:38:57
ファイルディスクリプタの扱いがわからんレベルなら、
マルチプラットフォームは諦めたほうがいい。
822デフォルトの名無しさん:2007/02/05(月) 19:08:33
>>816>>818
そういうのって、先に、Implement1と2があって、共通部分を自然に抽出
したら、_Templateが出てきました。っていうのが本来の流れであって、
はじめから_Templateありきで書き始めるのは、むしろ生産性が落ちると思う。
そして、本当に、_writeFooter、_writeHeaderが必要なのかどうか(この場合必要ない。
を考えなくなるから、いつまでたってもコードがきれいにならない
823デフォルトの名無しさん:2007/02/05(月) 19:45:51
テンプレート・パターンの重要な点は、
細部なんかどう書くのか分らないけど、
これこれこういう筋道で組み立ててよ、と指し示すためのものだ
ということでしょ。

テンプレートは作ったから、あとは君、頼むね、っていうか。
エラーが出るようになっているのは、そうなっているかを
チャックするためだし。

一般的にいって、オブジェクト指向ではクラスを作る人と
使う人が別にいて、クラスを作る人は苦労をしょいこみ、
クラスを作る人は楽をするようにする、というものでしょ。

気がついたら、ほとんどフレームワークのようになっていた
というのが理想なんじゃないかな。もちろん、そんなにうまく
いくもんじゃないけど。

クラスを作る人が苦労を背負い込めば、使う人は楽をできる。
それが基本の考えと思うよ。
あるいは、一度苦労してクラスを作っておけば、
あとで何度でも楽ができるというか。

クラスを作るのは一度だけ、でも、インスタンスは何でも
使うもんだし。
824デフォルトの名無しさん:2007/02/05(月) 19:49:16
>>811
ポインタが分からないヤツにどうやって参照渡しを説明しろと?
構造体が分からないヤツにどうやってオブジェクト指向のデータ構造を説明しろと?
825デフォルトの名無しさん:2007/02/05(月) 19:58:04
>>824
いや、だって、cならそうだろうけど、
Pythonでは基本的に参照渡ししかないし、
構造体はないから、メソッドを省いたクラスを使うしかないし。

もちろん c ならお説のとおりと思いますが。
826デフォルトの名無しさん:2007/02/05(月) 19:58:52
オレはVBで参照渡し覚えたけどな
だからCをやったときすぐにポインタが理解できた
827デフォルトの名無しさん:2007/02/05(月) 20:09:24
>>821
お手軽な手段を求めてしまった自分が恥ずかしいです。
とりあえずこれを試してみることにします。ありがとうございました。
ttp://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203
# os.open()はNTではO_EXLOCKが定義されていないのでそもそもアウト

>>824
参照っていう概念さえ説明してしまえば、ポインタ抜きでデータ構造について
説明できるのがPythonみたいな言語のメリットのような気がします。
ttp://www.ibiblio.org/obp/thinkCSpy/
構造体の知識はstructモジュールとか使うときに必須?
828デフォルトの名無しさん:2007/02/05(月) 20:13:10
775です。流れを無視して遅レス。

>>806
えーと、あまり網羅的に見ているわけじゃないけど、
すくなくとも俺の知る限り、科学技術計算、特に高性能計算(HPC)の分野では
オブジェクト指向のオの字もないです。もちろんデザパタもね。
MPI とか OpenMP といった並列化技術が主流で、
みんな C/Fortran でゴリゴリと構造化プログラミング(笑)してます。
つまり、「デザパタ」と呼べるようなオブジェクト指向的共通認識が全然ない。
もちろん MPI や OpenMP には各々「定石」の書き方、たとえば all-to-all とか
reduction みたいな各種の常套手段があって、知らないと困るわけだけど、
そういうのはデザパタとは呼ばない気がする。
でもって、今ある道具や定石は抽象度が低くて生産性があまりよろしくない。
それで Fortress とか HPR とか>>778の「分散Python」みたいな話が出てくるわけです。
829デフォルトの名無しさん:2007/02/05(月) 21:49:59
所詮何が必須かなんて何をやりたいかによって変わってくるんだろうけど、
参照渡しと値渡しの違いが判らないと、pythonでも困る場合が多いような。
値渡し相当にしたくて、リスト[:]でコピーして渡す場合も多いよね。
830デフォルトの名無しさん:2007/02/05(月) 21:52:28
それに、デザパタってのは右も左もわからないような新兵どもを
それなりに使える駒の集団にするための道具であって、
一人で動くプログラマにはあまり関係ない。
「珠玉の〜」であろうとKnuth本であろうと先人の生きたコード
読んで学ぶのだろうと、好きなやりかたで学べばだいたい同じような
所に落着くしね。
831デフォルトの名無しさん:2007/02/05(月) 22:37:09
>>830
そうそう、デザパタなんて色んなスキルのヤツが沢山いる開発チームで使う
コミュニケーションの道具に過ぎない
プログラミングの神髄はもっと深いところにあるし
誰でも神髄に触れられるわけではない
832デフォルトの名無しさん:2007/02/05(月) 22:40:30
>ポインタ抜きでデータ構造について説明できる

参照渡しにしろポインタにしろ同じものを別の単語で説明しているだけだし
「ポインタ抜き」に拘る理由も[ポインタを抜いてもいい」理由もないと思う

むしろ ぽいんた というのがハッキリ見えているのは
概念の説明には便利だと思う。
833デフォルトの名無しさん:2007/02/06(火) 00:17:56
>>828
オブジェクト指向の前に構造化設計/分析が先じゃないかな。
834デフォルトの名無しさん:2007/02/06(火) 01:02:53
>>833
んー、たぶん、C/Fortranでゴリゴリってのが現場の要求に一番見合ってる分野なんだと思う。
読みやすくーとか、保守性がーとか言ってたらコードがどんどん遅くなって、
大枚はたいて買った計算時間が無駄になる世界だからね。とても保守的で旧態依然としてる。
そういう世界だと Python みたいな「速度はそこそこだけど書きやすい」的な言語は
はっきり言って異端で、使っている人がいると目立つのです。

並列計算機が安くなって計算時間を金で買わなくてもよくなった人が増えた一方で、
解くべき問題が複雑になって生産性が速度に優先するようになってきたってことなんだろうなあ。
いい流れだ。
835デフォルトの名無しさん:2007/02/06(火) 01:07:37
横からだけど、構造化設計/分析って、
UMLなどのオブジェクト指向・分析設計のこと?
それとも、構造化プログラミングの設計のこと?

僕としては、ぱっぱと関数にわけでくみ上げていける
構造化プログラミングの良さをもっと見直してもいいんじゃないかな、
という気もしてる。
UMLでいつまでも足踏みしてるのも馬鹿らしいし。
いったん構造化でコードを組んでから、必要な部分だけクラス化して
いくというような手法がいいんじゃないかと思うんだけど、
邪道かなぁ。
リファクタリングが手法として認められるなら、
これだって、よほどマトモな考えと思うんだが。

あー、もとの話はマルチスレッドによる高速化の話だったんだよね。
デザパタのマルチスレッド版の話を持ち出したのは、スレッドの同期を
いちいち手作業で考えていたのではやってられないと思ったので。
形式をあわせるだけで、スレッドの同期やロックが安心できるなら、
その方がいいかなと。
Javaではマルチスレッドのデザパタがあるようだし。(結城氏の本ね)

ところでその前に、Python自体がスレッドセーフなのかどうかが
分らないんだけどw
836デフォルトの名無しさん:2007/02/06(火) 01:17:39
「科学技術計算」というのがどこからどこまでを指すのかわからないけど、大学なんかで実験データを
加工したりといった用途ならPythonで十分な希ガス。漏れはC++で組んだけど、結構大変だった。

そういえば「電脳Ruby」とかいう数値計算にRubyを使う話があるけど、この分野なんかでもPythonで
十分といえるのではないだろうか。
837デフォルトの名無しさん:2007/02/06(火) 01:20:14
無政府状態

手続きの抽象化

[構造化プログラミング]

データ構造の抽象化

[オブジェクト指向プログラミング]

データ構造の抽象化を前提とした手続きの抽象化

[関数型プログラミング] ← 今このへん

?????
838デフォルトの名無しさん:2007/02/06(火) 01:29:04
>835
オブジェクト指向を含めず構造化のみで組むってこと?
俺は逆に構造化のみのプログラミングの方が
データと手続きを分離しなくちゃいけなくて面倒だと思うのだが…
839デフォルトの名無しさん:2007/02/06(火) 01:33:43
もうちょっとふさわしいスレでやってくれよ。邪魔。
840デフォルトの名無しさん:2007/02/06(火) 01:35:18
>>838
スキルも経験も作りたいものも様々だから一概には言えない。
明らかに不毛な議論。
841デフォルトの名無しさん:2007/02/06(火) 02:34:51
>>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ではオブジェクト指向が強制されてないのを逆手にとって、
構造化プログラミングを基本としつつ、必要なところだけオブジェクト指向に
するという考えもあっていいんじゃないかなといってみただけだよ。

構造化は、とにかく簡単に手がつけられるからね。
オブジェクト指向だと最初の設計ですべて前倒しにくるから、
やんなるときもあるなあと。
843デフォルトの名無しさん:2007/02/06(火) 14:35:17
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': []}
こうなってほしいのですが、ご助言お願いします。
844デフォルトの名無しさん:2007/02/06(火) 14:54:22
for i in keys:
 index[i] = []

とか。
あと、keys とか index は辞書やリストのメソッド名になってるから
使わない方がいい。
845デフォルトの名無しさん:2007/02/06(火) 15:07:08
844さん
ありがとうございます。
index[i] = [] でできました。
自分でも調べてみまして、Python ライブラリリファレンス の
シーケンス型ってとこに「注意しなさい」とかいてありました。
index = range(0)
とやっても大丈夫でした。

なぜ駄目なのかはよくわかっていません。
ists = [[]] * 3 と lists = [[] for i in range(3)]の違いです。
同じ場所をみてしまう?
もう少し自分で調べてみます。

あと、keysとかindexとか普通につかってました。
どうもありがとうございました。
846デフォルトの名無しさん:2007/02/06(火) 17:15:41
参照渡しがどうのこうのってはなしじゃないの?
847デフォルトの名無しさん:2007/02/06(火) 17:43:59
プログラミングの基本はなんでも同じなんだよ。
だってハードウエアのアーキテクチャはもう何十年も変わってないんだから。
ポインタとかリファレンスの概念が分からない人は壁にぶち当たって挫折する。
848デフォルトの名無しさん:2007/02/06(火) 17:48:56
>845
>同じ場所をみてしまう?

そういうことです。詳しくはほかの人がいっている
参照渡しとかポインタと化のキーワードについても調べると
ためになると思うよ
849デフォルトの名無しさん:2007/02/06(火) 17:58:52
あまりにもドンピシャな質問だったので、ネタかと思ったぐらいだ。
850デフォルトの名無しさん:2007/02/06(火) 18:04:42
>>843を生かすのであれば

index[i] = vals[:]

かね
851デフォルトの名無しさん:2007/02/06(火) 19:27:20
>>> index = {}
>>> vals = [[]]
>>> index["a"] = vals[:]
>>> index["b"] = vals[:]
>>> index
{'a': [[]], 'b': [[]]}
>>> index["a"][0].append(1)
>>> index
{'a': [[1]], 'b': [[1]]}
>>>

マジレス禁止だからねっ
852827: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
853デフォルトの名無しさん:2007/02/06(火) 20:56:23
>>844
>あと、keys とか index は辞書やリストのメソッド名になってるから
>使わない方がいい。
別にビルトイン関数じゃないし、問題ない希ガス。
>>> index
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'index' is not defined
それに、仮にindexがビルトインで自前で定義した変数・関数が
それを隠しても、モジュールなり関数なりの中だけ(スコープの中だけ)
だから気にする必要なさげ。(自分が使わなければ問題ない)
854デフォルトの名無しさん:2007/02/06(火) 21:02:11
>>843
keys = ['a', 'b']
index = dict([(k, []) for k in keys])
855デフォルトの名無しさん:2007/02/06(火) 21:02:14
>>> def foo():
... def list(*a): # ビルトイン関数を隠す
... print "list"
... list([1,2,3])
...
>>> foo()
list
>>> list([1,2,3]) # 関数の外は俺list()のスコープ外だから影響なし
[1, 2, 3]

Rubyとかだと、うっかりトップレベルでindex定義しちゃうと悲惨なことに
なるけどね。
856デフォルトの名無しさん:2007/02/06(火) 21:05:23
メソッド名を使うのはへっちゃらだな。ビルトイン関数名はハマる場合あり。
857デフォルトの名無しさん:2007/02/06(火) 21:15:09
Pythonはスコープのルールがシンプルだからいいよね
selfもまんざら捨てたものじゃない
858デフォルトの名無しさん:2007/02/06(火) 21:58:07
>>857
卒業おめでとう.成人おめでとう.
859デフォルトの名無しさん:2007/02/06(火) 23:30:01
843です
皆さんありがとうございます
本当に参考になります

>>854さん
!これかっこいいですね
これ使います
ありがとうございました
860デフォルトの名無しさん:2007/02/07(水) 01:01:48
へー、dictってタプルのリストで初期化できるんだ。知らんかった。
861デフォルトの名無しさん:2007/02/07(水) 01:17:36
>>860
入門書くらい嫁。
862860:2007/02/07(水) 02:46:45
>861

スマン。Tutorialに書いてあるの斜め読みで読み落してた。
863デフォルトの名無しさん:2007/02/07(水) 04:46:37
ジェネレータ式が使える。
index = dict(((k, []) for k in keys))
864デフォルトの名無しさん:2007/02/07(水) 05:00:56
>>852
成功したら教えて。
865デフォルトの名無しさん:2007/02/07(水) 11:57:37
>>862
俺も知らんかった。今ちょうど下のようなのが欲しかったから、こりゃ便利。
Keys = ('K1','K2')
ValsA = ('V1A','V2A')
ValsB = ('V1B','V2B')
DictA = dict(zip(Keys,ValsA))
DictB = dict(zip(Keys,ValsB))
866デフォルトの名無しさん:2007/02/07(水) 13:26:17
>>865
おまえはついでにPEP8を嫁。
867デフォルトの名無しさん:2007/02/07(水) 23:41:39
コンソールからディレクトリ名を入力させてやる時に、入力補完
とかするにはどうしたらいいですか。
868デフォルトの名無しさん:2007/02/07(水) 23:56:33
IPythonを使う
869デフォルトの名無しさん:2007/02/08(木) 00:04:03
>>863
一番外側の括弧は要らないね。
870デフォルトの名無しさん:2007/02/08(木) 13:38:01
下らない質問ですいません。
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
で望んだ結果になるんですけど。
871デフォルトの名無しさん:2007/02/08(木) 19:55:59
Python3000wktk
872デフォルトの名無しさん:2007/02/08(木) 19:58:42
>>870
一般に、対話環境において、s = u'@' が s = u'\x87\x40' と等価になるか
s = u'\u2460' と等価になるかは個々の対話環境の実装・バージョン依存だと思われ。
だめなものはだめ。

(もちろんソースファイルに書く場合は # -*- coding: spamspam -*- の設定次第。
これはまた別問題。)
873デフォルトの名無しさん:2007/02/08(木) 21:50:51
>>410-411
http://python.matrix.jp/tips/compatibility/interact_encoding.html

対話モードのエンコードについてはこの辺がよくまとまめられてる と思われ。
874デフォルトの名無しさん:2007/02/09(金) 11:00:40
>>872
わかりました、とりあえず対話環境ではこういうものだということで理解しました。
どうもありがとうございます。
875デフォルトの名無しさん:2007/02/09(金) 23:24:57
Some クラスのインスタンス
s = Some()
に、メソッドを追加することはできますか?
s.Foo = メソッド
のようにしたいのですが。
876デフォルトの名無しさん:2007/02/09(金) 23:36:53
メソッドを定義して代入しちゃいなよ、you
877デフォルトの名無しさん:2007/02/09(金) 23:40:42
どんな風に書いたらよろしいでしょうか。
878デフォルトの名無しさん:2007/02/09(金) 23:48:24
>>> import new
>>> S = type('S', (), {})
>>> s = S()
>>> s.amethod = new.instancemethod(lambda x, y: y, s, S)
>>> s.amethod(10)
10
>>>
879デフォルトの名無しさん:2007/02/10(土) 04:53:18
pythonスクリプトのなかでPythonのバージョン番号を調べる方法はありますか
880デフォルトの名無しさん:2007/02/10(土) 05:10:21
import os
os.system('python -V')
881デフォルトの名無しさん:2007/02/10(土) 05:23:59
import sys
version = sys.version.split(' ')[0]
882デフォルトの名無しさん:2007/02/10(土) 06:47:50
import sys
print sys.version_info
883デフォルトの名無しさん:2007/02/10(土) 08:31:55
import commands
print commands.getoutput("python -V")
884デフォルトの名無しさん:2007/02/10(土) 09:05:59
>880
/usr/local/bin/python2.3 とかを起動してたら?
885デフォルトの名無しさん:2007/02/10(土) 10:30:41
TMTOWTDI!
886デフォルトの名無しさん:2007/02/10(土) 11:36:34
いつも思うんだけど読めない略語なんかつくってどうするつもりなんだろう
887デフォルトの名無しさん:2007/02/10(土) 12:55:11
ああいうのは、読めるかどうか、知ってるかどうかで
何か差別化をしたい人が使いたがるだけ。
888デフォルトの名無しさん:2007/02/10(土) 13:22:29
ということにしたいのですね。
889デフォルトの名無しさん:2007/02/10(土) 13:57:13
作った本人は、その分かりづらさに気付いてない。それだけのことです。
BGNとかVRSNとか。なんのことやら。
890デフォルトの名無しさん:2007/02/10(土) 14:10:09
はみちちです
891デフォルトの名無しさん:2007/02/10(土) 14:12:56
>>886
読んで貰えなければそれはそれで構わないと思っているのだろう。
公共の場を使って非常に狭い範囲の読者だけに伝えるという非効率的な行為に
喜びを覚える種類の人間だと思われる。
892デフォルトの名無しさん:2007/02/10(土) 14:28:18
別にプロファイリングでオナニーする必要は無いと思うんだ。
893デフォルトの名無しさん:2007/02/10(土) 16:29:32
pythonの正規表現めんどくせええええええええええええええええ
894デフォルトの名無しさん:2007/02/10(土) 16:49:45
Perlへお帰りください
895デフォルトの名無しさん:2007/02/10(土) 19:14:50
入力を一行ずつ処理
http://gotou-sci.blogspot.com/2007/02/blog-post.html

fileってopenの(openってfileの?) alias なのね…
896デフォルトの名無しさん:2007/02/10(土) 19:28:10
と言うより、openが組み込みクラスオブジェクトfileの別名だな。
897デフォルトの名無しさん:2007/02/10(土) 19:55:17
未だに codecs.open のまんま
898デフォルトの名無しさん:2007/02/12(月) 22:33:46
数値を2進数表記に変換する関数はありますか?
16進数や8進数に変換する事はできるのに・・・
うーん・・・
899デフォルトの名無しさん:2007/02/13(火) 00:09:13
自分で作ってた
900デフォルトの名無しさん:2007/02/13(火) 01:14:26
関数、ライブラリになかったら自分で作るものだと思ってた
901デフォルトの名無しさん:2007/02/13(火) 01:20:36
2chで教えてくれると思ってたッ
902デフォルトの名無しさん:2007/02/13(火) 01:27:28
def a(n,s='')return s if n == 0 and s else a(n/2, str(n%2)+s)
903デフォルトの名無しさん:2007/02/13(火) 01:28:31
def a(n,s=''):return s if n == 0 and s else a(n/2, str(n%2)+s)
904デフォルトの名無しさん:2007/02/13(火) 01:41:19
905デフォルトの名無しさん:2007/02/13(火) 05:52:38
pythonでFortranのunformattedのバイナリファイルを
読み込むにはどうすればいいのでしょうか?
906デフォルトの名無しさん:2007/02/13(火) 07:40:32
>>903みたいな表記って難しい・・・
とくにif n == 0 and sのあたりがどうにも・・・
907デフォルトの名無しさん:2007/02/13(火) 08:57:10
lambda x: ''.join( [(x>>i and str(x>>i & 0x1) or '') for i in range(32)][::-1])
908デフォルトの名無しさん:2007/02/13(火) 11:10:26
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
910デフォルトの名無しさん:2007/02/13(火) 12:21:59
Pythonの奴らってドSの集団だな(WWWWWWWWWWWWWWW
911デフォルトの名無しさん:2007/02/13(火) 12:37:42
勉強にはなるし使えるかも知れないけど
きちんと関数名を考えて docstring をつけておかないと
後で絶対分からない代物だな
912デフォルトの名無しさん:2007/02/13(火) 14:27:18
pythonの良さって可読性とかじゃなかった?w
913デフォルトの名無しさん:2007/02/13(火) 14:39:42
>912
>>902-903 >>907-908
Pythonの可読性を敢えて無視した結果だろw

ワンライナーで書くなら、読みにくいと言われるPerlや
キモイと言われるRubyの方がマシに書けてしまうよ。
普通にPythonで書くなら >>904 かと。
914デフォルトの名無しさん:2007/02/13(火) 14:46:11
俺はPython を2.5(win)からしか知らないが、
コメントに日本語を使うと落ちてしまうというのは、
昔からなの?
対話モードだと、ちゃんと動くんだけどな。
悲しい…。
なぜ落ちるのか分らなくて(対話モードでは問題ないだけに)、
デバッグ・モードにすら入れないし、分らなくて非常に悩んだ。
915デフォルトの名無しさん:2007/02/13(火) 14:47:47
codingの指定ちょんとしてないだけだろ・・・
916デフォルトの名無しさん:2007/02/13(火) 14:49:46
>>914
昔も今もそんな現象はないと思う。
参考までにエンコーディングとコメントに書いた文字列は何?
917914:2007/02/13(火) 15:28:49
いろいろ調べたところ、不具合の理由は、
site-packages の中に置いた sitecustomize.py

中身
import sys
sys.setdefaultencoding("mbcs")

が、なにも効いていないようなのが理由だと思えます。

当方 winですが、実行したいプログラムの冒頭に
# -*- encoding:mbcs -*-
と置けば、問題ないのを確認しました。

初歩的躓きに、付き合ってくれてありがとう。
918デフォルトの名無しさん:2007/02/13(火) 15:34:35
>>917
いや、setdefaultencodingはソースファイルのエンコーディングとは無関係だから…orz

PEP-0263。
919デフォルトの名無しさん:2007/02/13(火) 16:25:29
ちょんとする…
920デフォルトの名無しさん:2007/02/13(火) 21:02:07
lambda以外をやっと解読した・・・
921デフォルトの名無しさん:2007/02/14(水) 05:51:59
ライブラリの中の関数とか変数を
変えるにはどうやればいいですか?
再定義みたいなことって出来ます?
922デフォルトの名無しさん:2007/02/14(水) 09:13:50
その行為が良いか悪いは置いといて普通に代入すればいいでしょ
923デフォルトの名無しさん:2007/02/14(水) 09:14:13
>>> 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!
>>>
924デフォルトの名無しさん:2007/02/14(水) 11:35:08
fromとかimportとかの名前の取り方がよく解らん。
階層構造?なんでしょうか?
925デフォルトの名無しさん:2007/02/14(水) 11:49:36
>>924
君の質問がよくわからん。
日本語?なんでしょうか?
926デフォルトの名無しさん:2007/02/14(水) 12:01:05
階層構造とか何を言ってるのかよくわからん。
単なる名前指定?なんでしょうか?
927デフォルトの名無しさん:2007/02/14(水) 12:17:48
質問に対して煽りで応えるpythonクオリティ
ま、phpかrubyつかっとけ
928デフォルトの名無しさん:2007/02/14(水) 12:23:18
これが永久凍土の問題ってやつか
929デフォルトの名無しさん:2007/02/14(水) 12:42:43
>>927
質問なんてどこかにあった?
930デフォルトの名無しさん:2007/02/14(水) 12:51:03
冷えるなぁ
931デフォルトの名無しさん:2007/02/14(水) 12:56:15
では、ここでエスパーの俺が答えよう

>>924
はい。階層構造なんです。
932デフォルトの名無しさん:2007/02/14(水) 13:17:07
エスは余計だな。
933デフォルトの名無しさん:2007/02/14(水) 13:26:56
>>> 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'

934デフォルトの名無しさん:2007/02/14(水) 15:04:19
分からん奴はRubyなりPerlなり使っとけということで
935デフォルトの名無しさん:2007/02/14(水) 15:21:00
そこで躓くならRubyだろうがPerlだろうが駄目な気もするが・・・
936デフォルトの名無しさん:2007/02/14(水) 15:35:16
* phpかruby
* RubyなりPerl
共通項:Ruby
わかりやすい自演だな(www
937デフォルトの名無しさん:2007/02/14(水) 15:38:41
同一人物ならRubyのRは両方大文字だろ・・・常識的に考えて
938デフォルトの名無しさん:2007/02/14(水) 15:39:09
じゃあ、phpかPerlってことで。
939デフォルトの名無しさん:2007/02/14(水) 18:17:15
>>924
まずはPython2.4JPドキュメントのチュートリアル6「モジュール」を読んでみるんだ。
読んだら>>933の書いてくれたサンプルコードを試してみる。
そのときはfoo/bar/bazがディレクトリ(パッケージ)、qux.pyがファイル(モジュール)、
quuxが変数(名前)であることを確認してからimportを試すこと。

誰でも多少はつまづくところだと思うからがんばって。
940デフォルトの名無しさん:2007/02/14(水) 19:16:35
画面付きアプリも作れますか?
941デフォルトの名無しさん:2007/02/14(水) 19:44:57
ウィンドウやボタンとかのGUIプログラムのこと?
つくれるよ。
Tkinter とか wxPython とかでググれ
942デフォルトの名無しさん:2007/02/14(水) 19:50:49
cursesでぐぐるのも可。呪いの言葉ではないよ。
943デフォルトの名無しさん:2007/02/14(水) 23:08:49
cursesは素人にはお勧めできないと思う‥‥‥。
sttyって何? みたいな。

944デフォルトの名無しさん:2007/02/14(水) 23:32:12
Tkinter なら、とりあえずここじゃないかな。
http://www.shido.info/py/index.html

wxPython Index なら、とりあえずここと思う。
http://www.harukaze.net/~haruka/wxpython/index.html


私見ながら、wxPythonは悪くない選択ではあるだろうけど、
安定性とか日本語とか、まだまだ安心して使えない気がする。

一方、tk はmac でもネイティブ・アプリ風の外観を備えるなど、
言われているほど悪くない。

将来、どちらに本格的に進むにしても、
最初は Tkinter を選ぶ方が幸せになれそうな気がする。
945デフォルトの名無しさん:2007/02/15(木) 00:15:07
Tkinterはtcl/tkの知識があれば扱いやすいのかもしれないけど、他の言語の
常識的なGUIライブラリに触れたことがある人はwxPythonのほうが絶対扱い易いでしょ。
946デフォルトの名無しさん:2007/02/15(木) 00:26:14
>945
>他の言語の常識的なGUIライブラリ

MFCのことかーーーーーーっっ!!
# あれを常識的と言われてもその、なんだ。困る(異端とまでは言わんが……なぁ)
947デフォルトの名無しさん:2007/02/15(木) 01:23:54
>>946
> MFCのことかーーーーーーっっ!!

違うと思う
948デフォルトの名無しさん:2007/02/15(木) 08:14:56
Windows用なら wx  その他重視なら tk

Windows用GUIを作ったことがあるなら もしくは使い慣れているのが
Windowsならばなら wxの
949940:2007/02/15(木) 08:42:24
>>946
MFCは異端でしょう。存在が間違いというか。
950デフォルトの名無しさん:2007/02/15(木) 08:55:44
Jestem Tkinterski.
(私は Tkinter 好きです。)
951デフォルトの名無しさん:2007/02/15(木) 10:21:38
そこでPyQtですよ。
952デフォルトの名無しさん:2007/02/15(木) 10:47:56
Flexは?

Hybridizing Java
http://www.artima.com/weblogs/viewpost.jsp?thread=193593
> Thus, you can create an application in any language you prefer,
> even a dynamic language like Python or Ruby, and use Flex to build
> a beautiful UI.
953940:2007/02/15(木) 10:53:37
wx, tk, PyQt, Flexという単語は頭に入りましたが、何が何だか...
954デフォルトの名無しさん:2007/02/15(木) 11:20:22
>>953
・・・とりあえず、Pythonに最初からついてくるGUIライブラリはTkinterだけなので、
そこから始めてみるのがいいと思うよ。
他のGUIライブラリに手を出すのはTkinterで不満が出てきてからでも遅くないし。

ttp://www.pythonware.com/library/an-introduction-to-tkinter.htm
Tkinterのチュートリアル。英語読めるならお勧め。
955デフォルトの名無しさん:2007/02/15(木) 11:31:09
>>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が始めにあったからという理由だけなんだね。
956デフォルトの名無しさん:2007/02/15(木) 11:50:04
これから始めるなら wxPython のほうが断然お勧めだけどなぁ・・・
957デフォルトの名無しさん:2007/02/15(木) 11:52:12
>>956
IDEは何使われてますか?
958デフォルトの名無しさん:2007/02/15(木) 11:54:47
そういえばpy2exeのサンプルもTkinterじゃなくて、wxだったなあ
959デフォルトの名無しさん:2007/02/15(木) 11:58:50
>>957
使ってない。エディタでソースごりごり。w
960デフォルトの名無しさん:2007/02/15(木) 12:00:40
エディタゴリゴリで高機能GUI作れるんかなぁ?

VisualWxとかどうよ?
見つけただけで使った事無いんだけど。
961デフォルトの名無しさん:2007/02/15(木) 12:04:37
>>960
「高機能」って意味がわからんけど、Sizerとかの扱いに慣れれば却って楽だよ。
「見た目」で設計しちゃうと、クロスプラットフォームで破綻しやすいよ。
プログラムには論理情報を書いて、ツールキットにレイアウトさせたほうが良い。
962デフォルトの名無しさん:2007/02/15(木) 12:21:19
あ、クロスプラットフォームで使われてますか?

じゃあ、どういうアプリをどういう風に作るのかアーキテクチャーとか教えて下さい。

実行環境も教えて?
963デフォルトの名無しさん:2007/02/15(木) 12:23:06
最近どのスレもこんな感じだ・・・
964デフォルトの名無しさん:2007/02/15(木) 13:07:07
ttp://www.atransia.co.jp/home/fukamachi/Diary/2006/02/12/
>Google で使われている言語は、C++, Python, Java が主なもの。

ググルが提供しているアプリでPythonモノってありましたっけ?
965デフォルトの名無しさん:2007/02/15(木) 13:50:01
最近、時間発展の数値シミュレーションの可視化に Tkinter を使ったお。
数値シミュレーションの部分は C で書いてある。
これを C で書いた拡張モジュール経由で Python 側から呼び出す。
Python 側では一定時間毎に C の数値計算コードを呼び出して
計算結果を Tkinter の Canvas で描画。
シミュレーションの制御は start, stop, ステップ実行の3つのボタンで。
これぐらいシンプルだとどのツールキットでも大差ない。

       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   だから標準添付の Tkinter でやるお!
  |     |r┬-|     |
  \      `ー'´     /


もちろん拡張モジュールは標準添付の distutils を使ってビルド。
Windows でも Linux でも素の Python だけでビルド&実行できるお。
966デフォルトの名無しさん:2007/02/15(木) 13:53:10
ソースと画像うpしる!
ブログでも良いお。
967デフォルトの名無しさん:2007/02/15(木) 13:59:47
>>964
Adsenseヘルプ関係はPythonですよ
968デフォルトの名無しさん:2007/02/15(木) 14:06:54
ウェブサイトじゃなくてデスクトップアプリが知りたいでつ。
969デフォルトの名無しさん:2007/02/15(木) 14:07:38
じゃあ、自分で調べろとしか
970デフォルトの名無しさん:2007/02/15(木) 14:08:41
今自分でウェブで調べてるんですが、何か?
971デフォルトの名無しさん:2007/02/15(木) 14:14:07
>>970
ならここで聞くなでFA
人に聞く態度じゃない。
972デフォルトの名無しさん:2007/02/15(木) 15:40:21
>>966
       ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとはうpしたいんだお…
  |     (__人__)    |
  \     ` ⌒´     /



       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でもまだバグってて流体粒子が爆発したり壁をすり抜けたりするんだお…
  |     (__人__)    |  
  \     ` ⌒´     /
973デフォルトの名無しさん:2007/02/15(木) 16:57:54
Sitemap作るのもPythonじゃなかったっけ
974デフォルトの名無しさん:2007/02/15(木) 19:45:50
Gtk+ の OS X 対応状況ってどう?
975デフォルトの名無しさん:2007/02/15(木) 20:39:13
tk はエディタで書くのがいいと思うけど、
他はIDE の支援がないと、辛いんじゃない?
976デフォルトの名無しさん:2007/02/15(木) 21:23:53
pythonでGUIの需要が以外と高いことに驚いた
俺も勉強する。Tkinter
977デフォルトの名無しさん:2007/02/15(木) 21:42:24
GUIはRADで切り貼り、ってイメージがどうも強い。いつ刷り込まれたんだろ。
あと、JAVAの貧相なGUIセット(Sun OSみたいな奴)の悪い印象も。
978デフォルトの名無しさん:2007/02/15(木) 22:33:19
>>975
wxでもへっちゃらだす。
979デフォルトの名無しさん:2007/02/15(木) 23:36:29
>947
いや、wxはどーにもMFC臭がするもんで、つい。
980デフォルトの名無しさん:2007/02/15(木) 23:39:44
>>979
MFCに無かった重要な概念として、wxにはSizerってのがある。
要するにレイアウトマネージャだな。
981デフォルトの名無しさん:2007/02/16(金) 00:04:20
glade + pygtk が一応お手軽ですが、
windows + py2exeでexeにしようとすると、pango関係のエラーで
日本語が豆腐になってしまうんですよ。
hoge.pyだと動作するんですが、、、なやましいです。
982デフォルトの名無しさん:2007/02/16(金) 00:09:21
紙でレイアウト+テキストエディタでコーディング最強!!
WindowsもLinuxもMacもばっちこーい!!
983デフォルトの名無しさん:2007/02/16(金) 01:24:32
pygame‥‥‥はちょっとちがうか。
とある環境のモニタプログラム(グラフとかトラフィックとか出力する)を
書いたときに使ったなぁ。
984デフォルトの名無しさん:2007/02/16(金) 01:48:31
ボタンとかリストとかのGUI部品が要求されてない状態で、
単純に線を引くとか面を貼るだけが目的なら、
地味に最強だもんなあpygame
985デフォルトの名無しさん:2007/02/16(金) 05:18:12
実際にFlexとTurbogearsを使ってウェブアプリのGUIを作っているデモ:
http://www.adobe.com/devnet/flex/articles/eckel_video.html

http://www.artima.com/weblogs/viewpost.jsp?thread=193593
によると、Flex使ったら綺麗なGUIがウェブアプリとデスクトップアプリ両方
でできるみたいだね。一つのツールを勉強すれば環境を無視してどこでも使える
のは魅力。
986デフォルトの名無しさん:2007/02/16(金) 06:28:06
pythonでWinkeyやF1などのkeyを押した状態にするプログラムを作りたいのですがどうすればいいのでしょうか。
987デフォルトの名無しさん:2007/02/16(金) 06:34:31
1 python関係のテキストを買ってくる。消しゴムも買う。
2 押した状態にしたいキーの上に消しゴムを置く。
3 その上に本を置く。
4 (゚Д゚)ウマー

それはそれとして、win32はここ。
https://sourceforge.net/project/showfiles.php?group_id=78018
988986:2007/02/16(金) 07:17:22
Python Extensions for Windowsというモジュールを使えばいいのですね。ありがとうございます。
989デフォルトの名無しさん:2007/02/16(金) 08:52:46
>>979

MFC(正確にはAppWizardか)には、resource.hがあって、
プロジェクト超えてダイアログ使いまわせないが、
VisualWxはそれが無い分”MFCらしさが無い”と言えたりしない?
990デフォルトの名無しさん:2007/02/16(金) 16:40:13
im3 = ImageChops.difference(im1,im2)

ValueError: image has wrong mode
になる
サイズは同じはずなのに。何がいけないのだろう
991デフォルトの名無しさん:2007/02/16(金) 17:02:57
modeがおかしいって言ってるよ。インデクスカラーとトゥルーカラー画像diffしてない?
992ミスターパイソン:2007/02/16(金) 17:05:56
新スレ立てました
よろしくお願いします

Pythonのお勉強 Part17
http://pc10.2ch.net/test/read.cgi/tech/1171613101/
993デフォルトの名無しさん:2007/02/16(金) 17:21:23
>>992
乙乙
994デフォルトの名無しさん:2007/02/17(土) 00:19:59
アップルに対抗してPyPhone希望
995デフォルトの名無しさん:2007/02/17(土) 01:14:55
pyPodもいいなぁ。って、iPodLinuxでいいのか‥‥‥。
996デフォルトの名無しさん:2007/02/17(土) 01:53:40
pyを付けただけで
なんかこう……
997デフォルトの名無しさん:2007/02/17(土) 02:20:37
なんだよ
998デフォルトの名無しさん:2007/02/17(土) 05:07:58
(*´д`*)ハァハァ
999デフォルトの名無しさん:2007/02/17(土) 08:13:33
埋め
1000デフォルトの名無しさん:2007/02/17(土) 08:47:11
1000ソン
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。