トップページ⇒tech
1001コメント304KB

Pythonのお勉強 Part15

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/12(日) 22:51:44
日本 Python ユーザ会
http://www.python.jp/Zope/
Python オフィシャルサイト
http://www.python.org/
Python 2.5
http://www.python.org/download/releases/2.5/
IronPython
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
まとめ wiki
http://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
Pythonの入門書「みんなの Python」
http://www.amazon.co.jp/gp/product/479733665X/

Pythonのお勉強 Part14
http://pc8.2ch.net/test/read.cgi/tech/1161272096/
0314デフォルトの名無しさん2006/11/23(木) 13:04:29
>>313
自分もだいぶ悩んだことあるけど結局できずに環境変数に絶対パス入れたよ。
0315デフォルトの名無しさん2006/11/23(木) 13:10:17
import os, sys
os.path.abspath(os.path.dirname(sys.argv[0]))
0316デフォルトの名無しさん2006/11/23(木) 13:11:47
import os, sys
os.path.dirname(sys.argv[0])
0317デフォルトの名無しさん2006/11/23(木) 13:14:19
かぶった。
あと、sys.argv[0]でなくて、__file__ だけで実行中のスクリプトファイルのパスが得られる。
0318デフォルトの名無しさん2006/11/23(木) 13:15:25
おまえら今日は祝日なんだぜ?
0319デフォルトの名無しさん2006/11/23(木) 13:16:21
>>315
冗長。タコ。厨房。Rubyでも書いてろ。

>>317
Pythonic!!!
0320デフォルトの名無しさん2006/11/23(木) 13:16:57
>>318
知ってる。感謝祭だ。
0321デフォルトの名無しさん2006/11/23(木) 13:17:52
勤労に感謝する良い兄さんの日だっけ?
休日もパイソンパイソン
0322デフォルトの名無しさん2006/11/23(木) 13:19:39
Djangoのひとたちですか?
0323デフォルトの名無しさん2006/11/23(木) 13:23:51
インディアンに感謝して七面鳥を食べる日じゃなかったっけ
0324デフォルトの名無しさん2006/11/23(木) 13:24:22
ところでモジックソさんっていまなにしているの?
0325デフォルトの名無しさん2006/11/23(木) 13:42:27
インデントに感謝して錦蛇を食べる日です。
0326デフォルトの名無しさん2006/11/23(木) 13:49:13
美味いのかな、ニシキヘビ。
0327デフォルトの名無しさん2006/11/23(木) 13:51:07
食ったこと無い
0328デフォルトの名無しさん2006/11/23(木) 14:07:32
>>327
えええええええええ
0329デフォルトの名無しさん2006/11/23(木) 14:18:26
>>322
Zopeの次はDjango?仲間割れの演出必死だな(www
0330デフォルトの名無しさん2006/11/23(木) 14:20:19
Rubyに向かうトラパーの流れを感じました。
0331デフォルトの名無しさん2006/11/23(木) 14:28:49
>>329
Django普通に盛り上がってるじゃん。いいことだよ。

過剰反応すると、キチガイのZOPE関係者(実績露出皆無)であることがばれてしまうから
気をつけた方がいいですよ。○○○さん。
0332Python初心者(復活)2006/11/23(木) 14:42:55
>>297
Many Tks.
*が可変個の引数をとることは知っていましたが
関数の前に付ける意味が良く分からなかったのです。
>>292
>あと、evalとか意味わかんないで使ってるんだろうけど、そのevalは
>全然意味無い

for x in zip(*[line.split() for line in file('input.txt')]):
print x

Oh No!これで全然問題無く動くじゃないですかぁ。
おぅい!前スレの
>>715,717
restrip()もeval()も必要ないってさぁ。
まさか?
>evalとか意味わかんないで使ってるんだろうけど
なんてことはないよねぇ?(w
ーーーーーーーーーーーーー
715 :デフォルトの名無しさん :2006/11/03(金) 13:55:57
>>712
[line.rstrip().split() for line in file('input.txt')]

717 :デフォルトの名無しさん :2006/11/03(金) 15:10:30
>>712
別にprintを使うなとは誰も言ってない
for x in zip(*eval(>>715)):
  print x
==============
0333デフォルトの名無しさん2006/11/23(木) 14:47:15
Zope関係者はDjangoコミュニティの仲間割れを画策しているの?
0334デフォルトの名無しさん2006/11/23(木) 14:49:19
ここから休日っぽい展開に突入する予感…
0335デフォルトの名無しさん2006/11/23(木) 14:51:40
つーか、例の人キャラ変わってね?
0336デフォルトの名無しさん2006/11/23(木) 14:52:08
新嘗祭の話か?
0337デフォルトの名無しさん2006/11/23(木) 15:03:30
>>333
>Zope関係者はDjangoコミュニティの仲間割れを画策しているの?

サークルクラッシャーかよ(WWWW
0338デフォルトの名無しさん2006/11/23(木) 15:49:00
>333
Zopeのユーザー会と同じ日にDjangoが勉強会ぶつけてきたから
恨みに思っているのかな?
Zope関係者って怖いな!!!
0339デフォルトの名無しさん2006/11/23(木) 16:15:00
Zope vs Django vs その他Pythonista (゚Д゚)ウマー
0340デフォルトの名無しさん2006/11/23(木) 16:22:18
そもそもWebアプリケーションという分野にあまり興味がない
PHPにでも任せておけば?と思う今日このごろ
0341デフォルトの名無しさん2006/11/23(木) 16:25:00
>>340 チラシの裏の典型を見た!!
0342デフォルトの名無しさん2006/11/23(木) 16:27:13
>>339
なんだこの対立構図は(WWW
ZOPEは死に体なのでDjangoの対抗になんてなり得ないだろ(WWWWWWWWW

>>340
まあ過剰反応している人は基地外なので放っておきましょう
0343前スレ7172006/11/23(木) 17:27:13
>>332
>Oh No!これで全然問題無く動くじゃないですかぁ。
>おぅい!前スレの
>>>715,717
>restrip()もeval()も必要ないってさぁ。

それはね、他人のレス内のコードを自分のコード内に取り込むには
イキナリ>>715で参照するのはなんとなくperlっぽい無秩序な感じがする。
ここはpythonぽく他人のレス=文字列と捉えてevalをしよう
っていう冗談だったんだよ。
ちなみに関数の前の*は、単に関数の返り値に対して*を付けるのと
一緒。だからこの場合は*[line.split() for line in file('input.txt')]
という付け方に等しくなる
0344デフォルトの名無しさん2006/11/23(木) 18:05:09
すみません質問です;
下のプログラムでhogehogeと表示されるにはどうすればいいのでしょうか?
class Test :

def printHoge(self) :
print "hogehoge"

def __init__(self) :
print "hoge1"
self.printHoge


hoge = Test()
03453442006/11/23(木) 18:09:05
すみません自己解決しました
0346デフォルトの名無しさん2006/11/23(木) 20:34:22
>>344
まず、インデントを付ければいいんじゃないかな。
0347デフォルトの名無しさん2006/11/23(木) 20:38:41
半角スペース連続で表示されなくなってるだけじゃね?
0348デフォルトの名無しさん2006/11/23(木) 20:54:12
>>346
初心者乙
0349デフォルトの名無しさん2006/11/23(木) 21:09:28
皮肉でしょ。
0350デフォルトの名無しさん2006/11/23(木) 21:10:45
print >> sys.stderr, "hogehoge"
の
>>の後には何を持ってくればOKなんですか?
0351デフォルトの名無しさん2006/11/23(木) 21:14:52
>>350
愛。
うふふ。
0352デフォルトの名無しさん2006/11/23(木) 21:16:52
>>351
愛の入力方法がわかりません。
とりあえず漢字・英語・平仮名・片仮名は試したんですが・・・
どうすればいいでしょうか?
0353デフォルトの名無しさん2006/11/23(木) 21:19:10
愛は入力するものじゃないの。
勉強して出直してらっしゃい。
0354デフォルトの名無しさん2006/11/23(木) 21:29:13
>>352
そういうときはコピペが基本だと思う
0355デフォルトの名無しさん2006/11/23(木) 21:39:09
352にはまだ早いな
0356デフォルトの名無しさん2006/11/24(金) 07:47:27
httplibとかurllib,urllib2あるけど
どれをどう使えばいいんですか?
0357デフォルトの名無しさん2006/11/24(金) 07:52:34
>>352
チンコを使え
0358デフォルトの名無しさん2006/11/24(金) 08:11:13
マニュアル読んでなおそういう質問をするレベルなら,urllibを使いなさい.
0359デフォルトの名無しさん2006/11/24(金) 12:37:14
>>350
ファイルオブジェクトと同様の write() メソッドがあるオブジェクトなら何でも可だと思われ。
0360Python初心者(復活)2006/11/24(金) 12:41:25
>>343
>冗談だったんだよ。
遅まきながら…wwwwwwwww
0361デフォルトの名無しさん2006/11/24(金) 13:00:23
ここは親切じゃないインタネットですね!
0362デフォルトの名無しさん2006/11/24(金) 13:03:01
「情けは人のためならず」
・人に情けをかけておくと,巡り巡って結局は自分のためになる
・人に情けをかけて助けてやることは,結局はその人のためにならない
選ぶのは君だw
0363デフォルトの名無しさん2006/11/24(金) 14:48:20
だから必要なのは愛だって言っているじゃない。
勉強して出直してらっしゃい。
ふふふ。
0364デフォルトの名無しさん2006/11/24(金) 14:56:03
SN比が低いなあ
0365デフォルトの名無しさん2006/11/24(金) 15:09:55
364のせいでさらにS/N比が低くなった.
0366デフォルトの名無しさん2006/11/24(金) 15:15:57
perl, python & ruby - chr() vs. Unicode
http://blog.livedoor.jp/dankogai/archives/50696206.html

この問題、もっとスマートに解決することはできないもんでしょうか?
0367デフォルトの名無しさん2006/11/24(金) 15:25:46
>>366
そもそも0x10000を超えるUnicode(滅多に使わないけど)の扱いが不完全なのが原因
おそらくPython 3000で解決する
0368デフォルトの名無しさん2006/11/24(金) 15:27:06
一番問題なのは弾氏。
0369デフォルトの名無しさん2006/11/24(金) 15:30:06
一番一般的に普及しているOSでちゃんとサポートされてないからな>0x10000を超えるUnicode
ちゃんとサポートされれば素晴らしいと思うが、今のところ必要としているのは
言語学者と京極夏彦くらいだろう。w
0370デフォルトの名無しさん2006/11/24(金) 15:36:48
> Unicode文字をそのまま出力できないという点は、実はperlも似ていて、そのためにbinmode STDOUT, ':utf8';という行がある。pythonでは、以下のようにすればいい。

ここは Perl に合わせるならこうだろうなあ。

import codecs, sys; sys.stdout = codecs.getwriter("utf-8")(sys.__stdout__)
0371デフォルトの名無しさん2006/11/24(金) 16:17:07
ほとんど言いがかりに近いような記事だね。弾ちゃんに
・site.pyに encoding = "utf-8" って書け
・unichr()でBMP外の文字使いたけりゃ--enable-unicode=ucs4 でconfigureしろ
って教えてあげたほうがいいのかな。
0372デフォルトの名無しさん2006/11/24(金) 16:22:04
>>371
>・site.pyに encoding = "utf-8" って書け

あわわわわ。
0373デフォルトの名無しさん2006/11/24(金) 16:23:36
>>> utf32chr = lambda n: ('¥U%08X' %(n)).decode('unicode_escape')
>>> utf32chr(0x2A6B2)
u'¥U0002a6b2'
0374デフォルトの名無しさん2006/11/24(金) 16:50:50
福島にて聖戦が始まる。

http://www.python.jp/Zope/PyLog/PyLog/1164123776/1164341843/ [python.jp]
ここは、Lightweight Language(Perl,Python,Ruby,PHP)ユーザーを巻き込んで開催したいと思います。
0375デフォルトの名無しさん2006/11/24(金) 18:46:24
ちょっと気になったんだけど、
pythonのCGIHTTPServerのCGIの処理ってどうしてるんだろう?
同じCGIを複数の人がリクエスト出した場合内部でマルチスレッドで処理してるの?
それともキュー?
どこを見ればわかるの。
0376デフォルトの名無しさん2006/11/24(金) 18:47:46
>>375
ソースコード。
03773752006/11/24(金) 19:00:48
探してみたらソースコードがありましたね。

% cat -n /usr/local/lib/python2.4/CGIHTTPServer.py | grep fork
6 If the os.fork() function is not present (e.g. on Windows),
43 have_fork = hasattr(os, 'fork')
128 if not (self.have_fork or self.have_popen2 or self.have_popen3):
204 if self.have_fork:
205 # Unix -- fork as we should
210 self.wfile.flush() # Always flush before forking
211 pid = os.fork()
0378デフォルトの名無しさん2006/11/24(金) 19:03:26
ずいぶん大雑把な調べ方だな
0379デフォルトの名無しさん2006/11/24(金) 21:13:49
力強い。
0380デフォルトの名無しさん2006/11/24(金) 22:39:38
pythonでCGIを書いているんですけど、ファイルロックをする方法がわかりません。
fctrl.flock()とfctrl.lockf()はファイルオブジェクトではなくファイル記述子を使うものであり、Unixでは使えるけどWindowsで使えるかは不明。
os.open()も第2引数でオプションフラグを指定できるみたいだけど、そのオプションフラグについてはマニュアルにも詳しいことは書いてないし、Windowsでは使えないみたい。
結局、どうすればいいんでしょうか。
0381デフォルトの名無しさん2006/11/24(金) 22:42:12
泥臭いところで苦労するよりDB使えば?
0382デフォルトの名無しさん2006/11/24(金) 22:56:21
listに[]でアクセスするとき、範囲外のindexであれば例外IndexErrorが発生するけど、例外を発生させるかわりにNoneを返すようなメソッドはある?
ちょうどdictのgetと同じようなものが、listにも欲しい。
>>> lst = [1,2,3]
>>> lst.get(4)
None
0383デフォルトの名無しさん2006/11/24(金) 23:57:38
>BMP外の文字使いたけりゃ--enable-unicode=ucs4
悩みどころ。
あの領域の漢字は滅多に出会わないから
無駄な領域喰うのもあれだし、コンパイルし直すのも面倒だし。
さりとて使われるとうまくいかない。
0384デフォルトの名無しさん2006/11/25(土) 01:12:37
>>380
こんなことしたいの?
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203
別に止めはしないが時間の無駄だと思うぞ。
0385デフォルトの名無しさん2006/11/25(土) 01:17:34
>>382
ないんじゃね?
必要ならlistを継承して作れるけど、可読性が下がる。
0386デフォルトの名無しさん2006/11/25(土) 01:21:59
「エラーを出さないように工夫するプログラミングより、エラーを出して処理するプログラミングの方が楽だ」
みたいなことをPython入門(Pythonプログラミング)に書いてあった気がする
0387デフォルトの名無しさん2006/11/25(土) 06:32:48
>>386 チュートリアルの用語集に書いてある。
0388デフォルトの名無しさん2006/11/25(土) 07:20:40
http://vista.nazo.cc/img/vi6438907986.jpg
0389デフォルトの名無しさん2006/11/25(土) 10:14:41
WindowsでPythonをいじくって遊んでいるのですが、MeCabを利用しようとして躓きました。
MeCabの最新版とMeCab python bindingを落としてきて、MeCabをインストールして、
MeCab python bindingのsetup.pyは↓のページを参考に書き換えました。
http://www.atransia.co.jp/home/fukamachi/Diary/2006/01/15/

またpythonのバイナリは↓を利用しています。
http://www.python.jp/Zope/download/pythonjpdist

しかし、次のような出力が出てインストールできませんでした。
----ここから
running install
running build
running build_py
running build_ext
error: Python was built with version 6 of Visual Studio, and extensions need to
be built with the same version of the compiler, but it isn't installed.
-----ここまで

普段はVC++を使っているので、VS2003は入っているのですが、VC6は持っていません。
VC6無しにインストールすることってできるのでしょうか。
0390デフォルトの名無しさん2006/11/25(土) 10:46:45
python setup.py build --compiler=msvc

かな?
試してないから分からんけど
マニュアル読んでみて
0391デフォルトの名無しさん2006/11/25(土) 10:49:54
コンパイラのバージョンは合わせないといけなかったよーな・・・。
MinGW 使えば本体が VC6 でも大丈夫だと思われ。
0392デフォルトの名無しさん2006/11/25(土) 11:22:01
>>389
あくまで一般論だが、プログラムとそれが依存するDLL
の両者がCランタイム(libc)に依存している場合、そのバージョン/変種は
一致していなければならない。
VC6のDLL版のCランタイムはMSVCRT.DLL、VC7.1(VS2003)ではMSVCR71.DLL
なので、当然まずいわけだ。

Pythonを自分でVS2003でビルドするか、いっそCygwin環境でも使うんだね。
03933892006/11/25(土) 12:28:30
Pythonのバージョンを最新版にしたところ、無事コンパイルすることができ、次の状態までいけました。
リンクがうまくいってない感じなんですが、コレはもうMecabのスレで聞いたほうがいいかな。
MeCab_wrap.cxxはコンパイル時にキャストミスしてたんで、無理やりキャストした。
03943892006/11/25(土) 12:33:43
Pythonのバージョンを最新版にしたところ、無事コンパイルすることができ、次の状態までいけました。
リンクがうまくいってない感じなんですが、コレはもうMecabのスレで聞いたほうがいいかな。
MeCab_wrap.cxxはコンパイル時にキャストミスしてたんで、無理やりキャストした。
0395デフォルトの名無しさん2006/11/25(土) 17:37:44
>>389
ctypes使ったやり方のほうが簡単だと思うよ。

ttp://kugutsushi.s12.xrea.com/blog/index.cgi?id=10

俺が試した環境はWinXp, ActivePython2.4+ctypesモジュール
0396デフォルトの名無しさん2006/11/25(土) 21:08:29
>>329
ZOPE関係者ってイタいな(wwww
0397デフォルトの名無しさん2006/11/25(土) 22:29:26
VCでのコンパイルがからむ質問はCygwin使えとかあほな答えしかかえってこんからやめとけって
0398デフォルトの名無しさん2006/11/25(土) 22:43:24
Cygwin使えよw
0399デフォルトの名無しさん2006/11/26(日) 00:00:09
何かを始めるときに
すぐにT-Shirtsを作るのはどうしてですか?
0400デフォルトの名無しさん2006/11/26(日) 00:15:22
原価が安いからでは?
0401デフォルトの名無しさん2006/11/26(日) 00:17:45
裸じゃ寒いから
0402デフォルトの名無しさん2006/11/26(日) 00:18:35
そこにT-Shirtsがあるから。
0403デフォルトの名無しさん2006/11/26(日) 00:22:59
そろそろ自分の体を隠すような生き方は止めませんか?
0404デフォルトの名無しさん2006/11/26(日) 00:34:38
裸族キタ
0405デフォルトの名無しさん2006/11/26(日) 00:55:47
オレが脱いだら、403はヘコんで引きこもると思う。
0406デフォルトの名無しさん2006/11/26(日) 01:06:00
403 Forbidden
0407デフォルトの名無しさん2006/11/26(日) 02:25:00
dict[]とdict.getを入れ替えて、dictの[]演算子でKeyErrorをださないようにできますか。
dict.get()ではなくあくまでdict[]でアクセスしたうえで、KeyErrorのかわりにNoneが返されるようにしたいです。
d = {}
d.__getitem__ = d.get
としてみましたが
AttributeError: 'dict' object attribute '__getitem__' is read-only
とのことで、dictのメソッドは変更できないみたいです。
0408デフォルトの名無しさん2006/11/26(日) 02:27:03
できるけど危険だから教えない
0409デフォルトの名無しさん2006/11/26(日) 03:09:10
危険で結構ですので教えていただけませんか。
0410デフォルトの名無しさん2006/11/26(日) 03:39:00
なんでそんなことしたいの?
0411デフォルトの名無しさん2006/11/26(日) 03:57:22
class D(dict):
  def __getitem__(self,a):
    return self.get(a)

でそれっぽい動きしてる気がする。けど、あまりお勧めしたくない感じ・・・
0412デフォルトの名無しさん2006/11/26(日) 03:58:31
Rubyと違って、組み込みオブジェクトのdictの動作そのものを変えることはできない。
dictを継承したクラスを作って使うことはできる。
分かりやすく書くなら、

class MyDict(dict):
  def __getitem__(self, k):
    return self.get(k)

もしくは、↓でも同様。

class MyDict2(dict):
  __getitem__ = dict.get

dictのデフォルトの動作そのものを変えられるわけではないので、
ご期待には添えないかもしれませんが、
使うときは、こんな感じになるでしょう。

>>> MyDict({'x':2})
{'x': 2}
>>> x = MyDict(a=1, b=2)
>>> x
{'a': 1, 'b': 2}
>>> print x["a"], x["b"], x["c"]
1 2 None

こんなんでどうでしょうか。
0413デフォルトの名無しさん2006/11/26(日) 07:10:59
以下のサイトにPythonからログインするには、どのように書いたら良い
のでしょうか?
https://www.livly.com/login.php

http://d.hatena.ne.jp/kenkitii/20060216/p1 を見ながら色々試して
みたのですがうまくいきません。ご教示お願いできないでしょうか。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています