人生の敗北者でも使えるPythonのお勉強 Part7
はじめまして。
今日からpythonを覚えてみようかと思います。
6 :
デフォルトの名無しさん:04/12/27 23:37:56
_ ∩
( ゚∀゚)彡 たっぷる!たっぷる!
>>1 ( ⊂彡
| |
し ⌒J
>>7 恥パイ二夜でお勉強にしとけばよかったのに・・
_ ∩
( ゚∀゚)彡 ピックル!ピックル!
>>1 ⊂彡
「敗北者でも使える」って褒めなんじゃないか?
バカチョン言語
12 :
デフォルトの名無しさん:04/12/28 14:51:08
14 :
デフォルトの名無しさん:04/12/28 15:24:57
>>13 >>>
>>6 File "<stdin>", line 1
>>6 ^
SyntaxError: invalid syntax
「敗北者」じゃなくて敗者じゃねーの?
ふつー。
16 :
デフォルトの名無しさん:04/12/28 17:03:54
>>15 今なら負け犬のほうが良いかも。
人生の負け犬でも使えるPython
カコイイ!
"""
この記号はなんと読むのですか?
トリプルクオート
PYTHON勉強したけど、作るものが無い…orz
洩れになにか課題をくれ
>>19 6個ついているのにトリプルなの??????
"は点が二つなのでダブルクォートと称するが、単一の(広い意味での)クォート文字でもある
それが3つでトリプルクォート
だから'''と書いても"""と書いても、トリプルクォートと呼ぶ
>>20 MSN messenger 互換クライアント
"""""""""【スペシャルクォート (special quote)】"""""""""
30 :
デフォルトの名無しさん:04/12/30 04:11:19
○
ノ|)
_| ̄|○ <し
○ノ
○ ノ|
_| ̄| <し
○ ○ノ
人 ノ/
〉 />
ヽ○ノ ヽ○ノ
/ /
ノ) ノ)
31 :
デフォルトの名無しさん:04/12/30 05:15:55
ワラタ
32 :
デフォルトの名無しさん:04/12/30 06:03:31
○
ノ|)
_| ̄|○ <し
(○
○ノ
|
_| ̄| >
ミ
○
。゚○∠
/
_| ̄| />
33 :
デフォルトの名無しさん:04/12/30 06:04:29
ミ ○
_| ̄| (´⌒;;;≡≡≡ _ /\○_ ⌒Y⌒Y
_| ̄| _| ̄|○
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄7 ミ
/ ○
|
!||i○||i|!
ノ)ヽ
_| ̄| ∧ ...
ノ|)
_| ̄|○ <し
>>26-28 みんなメッサレベル高いやん…orz
じゃあ、方針変えます。
みんなでなんかテーマ決めて、それぞれソースを見せ合って、
プログラミングを勉強するのはどう??
みんなはそういうの興味ない??
仕事でPYTHON使ってるだけとか?
>34
とりあえずCookbookで提示されているレベルのツールを進化させるとか。
>>20 「Pythonで学ぶプログラム作法」を買って勉強する
39 :
デフォルトの名無しさん:04/12/31 04:17:29
Pythonってジョイスティックあるけど欲しい?
,.. 、
( ... \
, - 、 ヽ ::::... ヽ
( :::... \ ヽ ::::;... `ー‐- 、
\ :::.... ン´ `丶、
\ ::/ ヽ
ソ ',
| l / ̄ ̄ ̄ ̄
ヽ ● ●| < ぬるぽ
', ,○、 | \_____________
l (_人_)|
} └┘ |
| |
| l
/´ヽ /
L.__,,ゝ、 _ r 〈
"'' ‐- 、__{__}‐'′
PythonってPlan9で動くのか?
PLAN9のシンボルは何ファイルかに紛れてるが、サポートがあるふうではないな。
∧_∧
(,, ・∀・) ↓PSP 人 ガッ
( つ(+□::)-=ニ三三三三三◎< >_∧∩
| | | V`Д´)/←
>>40 (__)_)
2.3 の Windows バイナリを non-admin で入れましたが,
numpy や scipy はインストーラが admin でしか入れることができません.
setup.py で入れるにも,VC++ を要求されます.
VC++ 無し,admin 権限無しで WindowsXP に numpy をインストールするには
どうしたら良いのか教えてください.
2.4でZope使えてる人いる?どうやってるの?
>>44 あのバイナリはzipfileモジュール使って解凍できる。
だからがんばって解凍、んで手動でコピー。
ageオメ!
Windows板2.4用のPILインストーラってないの?
53 :
デフォルトの名無しさん:05/01/02 19:47:08
YYYY/MM/DDTHH:MM:SS形式の2つの時間の差を返す関数ありますか?
>>53 とりあえずこれで出来はする。もっといい方法はある?
#!/usr/local/bin/python
import time
t1 = "2004/01/01T12:00:00"
t2 = "2005/12/31T18:00:00"
format = "%Y/%m/%dT%H:%M:%S"
print time.mktime(time.strptime(t2, format)) - time.mktime(time.strptime(t1, format))
datetimeモジュールは使えない?
datetime.isoformat()の逆、つまり文字列から時間を得るメソッドがないように思う。
最近目立ってないからな、Jython。おもしろいのに。
正月早々,タプルちゃんですよ
Jythonの最初の開発者であったJim Huguninは、.NET上のPython実装である
IronPythonの開発者でもあり、その功績で今はMicrosoftにいる。MSはWindows
とOffice製品で吸い上げた豊富な資金で、オープンソース界からも人材を貪欲
に釣り上げているようだ。優れた頭脳の供給を断たれたら、オープンソースは
死ぬか、あるいはMSに隷属してほそぼそと生かされるかしかない。
>>60 Jim Huguninなんて長いことJythonの開発・メンテナンスなんてやってないよ。
Jython は j2sdk1.5 で使えないのでどうでもいいよ
スケジュールとしては2005年5月にJDK1.5対応作業も予定されている。
>>46 できました.普通に zip を展開して,
正しいディレクトリに放り込んであげるだけなんですね.
展開してみたことは以前にもあったのですが,
大文字のディレクトリ (DATA, PLATLIB など) があってビビってしまい,
インストーラの中の人しかできないのだと思い込んでおりました.
>20
自分に興味のある分野のちょっとしたソフト作ることから始めれば?
ネットワークに興味あるなら簡単なサーバーとクライアント作ったりとか
68 :
デフォルトの名無しさん:05/01/06 01:26:05
('A`)初心者です…
Pythonスレが乱立してますが、どれが本スレなのかわからんとです。
('A`)初心者です…
まるで日本におけるZopeのような混乱ぶりを思わせるとです。
('A`)初心者、いや小心者です…
Windowsでパイプで入ってきたものをもにゅもにゅも入するにはどうしたらいいですか
hoge.exe | spamegg.py > result.txt
みたいなことをしたいのです
すれば?
sys.stdin.read() でパイプから入ってきたデータ読めるでしょ。
それよりWindowsで*.pyなファイルに直接パイプで繋げたっけ?
fileinputモジュールなら標準入力ととともにコマンドラインでのファイル名指定にも対応。
import fileinput
num = 1
for l in fileinput.input():
print num, l,
num += 1
74 :
m9っ・∀・):05/01/07 00:14:59
>>70-73 シェルが使いにくいから全部 python の中でやってしまった方が楽かと思います.
ところで Windows のコマンドプロンプトで動く curses はありませんか?
日本語の表示,文字色の変更,1 文字入力をやりたいです.
os.system() で色を変えるやつは,画面の色全てが変わるので使いものになりません.
なんで今更cursesなんか…
telnetサーバとして実装して、teratermとか使った方が楽かもしれず。ネットワーク対応にもなる。
>75
PDcursesっていう互換ライブラリがあるから、それのブリッジを作ればいけるかも。
>>75 あったと思う。どっかで見た。暇があったら探しとく。しばし待て。
>>76 curses って CUI を高機能にする定番かと思ってたんです.
では最近の方法を教えてください.
とりあえず telnet を試してみます.
80 :
m9っ・∀・):05/01/07 12:03:57
普通にTKinterでよくね?
漏れの独断の予見では3年後ぐらいに某ruby教祖さんは我らがPython陣営に加わる、ような気がする。
rubyの存在価値がこの先なくなるのではないかと内心自覚しはじめているのではなかろうか。
今も、そしてこれからもPythonはrubyを内包しているに違いない。つぅか方向性同じやし。
企業に喩えるとより膨大な資本を保有するPythonが子会社を買収して傘下に収めるといったイメージ。
質問です。
スクリプトのサイズと実行速度に関係はありますか?
例えばコメントをたくさん書くと容量が大きくなりますが、
速度も遅くなるんでしょうか?
また実行速度を量る方法はありますか?
>>84 内部コンパイラはコメントアウト部分を解釈しない。
実行環境を全く一致させる手段は無い。
>>83 そんなことはないと思うよ.
あの人は,ユーザにとっての言語の存在価値を全てと考えているのではなくて,
自分の趣味の部分も,自分なりのポリシーも,ユーザとの関わりもそれなりに
斟酌した上で,自分自身にとって存在価値があるかどうかを優先しているんじゃ
ないかな.結局本人に言語仕様どうこうしたいという希望があって,かつ
それを実行できる環境があれば,開発は続くし言語自体はなくならないと思う.
宗旨替えするユーザは多少いるかもしれないけどね.
教祖はPythonには満足できなかったからRubyを作った。
何より、本人は今のRubyに満足なんだから、いまさら本人が宗旨替えする理由があろうはずもない。
問題は、今のRubyの状況に満足していない信者。つーか俺。
>>80 ありがとうございます.試してみます.
Linux でも動かすからちょっと余計に書かないとならなさそうですが.
>>82 TKinter が最近の主流なんですか?
コマンドで動くやつなんですが,コマンドをファイルに書いて標準入力から入れる,
といったことができないと不便です.
>>87 つぅか奴はグイドタソにベタボレだからruby捨てればいいのになw
なぜpythonを良いものにしようとしないのか不可解だよ
>90
ある意味、「something better than python for me」を作った結果がRubyなんでわ。
92 :
デフォルトの名無しさん:05/01/09 14:56:01
>>91 そのつもりなのにPythonの方が圧倒的に使われているし、
Pythonの方が圧倒的に使える、というわけだな。
>>89 tkinterはデフォで使える唯一のGUIツールキットです。それだけ。
もちろん他のGUIもあるよ。Pythonは他言語との親和性が強いので。
>>92 「日本人が作った」という枕詞が無かったら見向きもしなかっただろうな、ruby
日本語のアドバンテージも今や無くなったし漏れにとってはどうでもいい言語の一つ(^^;
今は単純にpythonが面白い
closureとか情報隠蔽とかではrubyが優位な点もあるね。
>>94 モジュールもドキュメンテーションも少ないのに、それだけの理由でRubyを選ぶのは、教祖本人と言語オタだけ。
いやいや、Martin Fowlerなんて大御所もいるぞ。
言語オタの一人に含まれるかもしれないが。
97 :
デフォルトの名無しさん:05/01/09 19:11:50
Martin Fowlerが大御所。笑わせるな。
真の大御所はPythonを使う。たとえば
↓
徳川家康
pyjugにwikiって置いてある?
Matzなんか話題にするなよ。汚れるから。出すならMertzにしてくれ。
python で mp3 の ID3 タグを管理するツールを
用意したいといじっているのですが unicode/encoding 周りで
良く分からないので教えていただけないでしょうか。
ライブラリ は eyeD3(
http://eyed3.nicfit.net/ の 0.6.3)が v2 のタグを扱えるので
使いたいです(他に id3v2 扱えるものであればそれでもいいです)。
# ちなみに id3v1 であれば
http://id3-py.sourceforge.net/ は
# id3info = ID3.ID3(mp3file)
# id3info[key] = unicode(EUCSTRING ,'japanese.euc-jp').encode('japanese.shift_jis')
# id3info.write()
# なんて叩き込むことができるようです。
import eyeD3
tag=eyeD3.Tag()
tag.link('01.mp3' )
tag.setArtist(unicode('中島 みゆき','japanese.euc_jp').encode('japanese.shift_jis'))
tag.update()
これだと
eyeD3/frames.py", line 560, in render
data = self.encoding +\
UnicodeDecodeError: 'ascii' codec can't decode byte 0x92 in position 0: ordinal not in range(128)
こんなエラーを吐きます。
(103 続き)
eyeD3 ライブラリの frames.py の 190行目辺りに
UTF_8_ENCODING = "\x03";
SJIS_ENCODING = "\x04"; ## 追加
#DEFAULT_ENCODING = LATIN1_ENCODING;
DEFAULT_ENCODING = SJIS_ENCODING; ## 書き換え
さらにそのすぐ下の
def id3EncodingToString(encoding): に
elif encoding == SJIS_ENCODING:
return "japanese.shift_jis";
を追加するとなんとか使えるっぽいんですが…
もっといい方法 or べつのライブラリなどどなたかご存じではないでしょうか。
105 :
m9っ・∀・):05/01/10 19:01:58
動くんならいいんじゃないの?
ちゃんと
#!/usr/bin/python
# -*- coding: euc-jp -*-
って書いてる?
Python をマスターすれば Google か NASA にアプライできますよ!
まずその後調べていたら mp3 の ID3v2 って規格上は SJIS ではなく
utf-8 など unicode 限定のはずらしいですね。
で、手元の MuVo2 が v2 を SJIS で解釈するという変態だっただけみたい。ショボーン。
>105
いや、まあ、その… もともと勉強がてらなんでなんかいけてないなーという…
>106
情報 thx. 調べてみます
(でも規模がでかくなってヘタレには hack しにくそうっす orz)
>107
今回は一応そういうところではないみたいです。
(一応デバッグで引数渡す前に print したりでは確認はしてみてますし、
ライブラリを書き換えた奴では通っているんで)
(sjis問題はともかく)今回の問題のライブラリ(eyeD3)が encoding を
どうやって指定するものなのか良く分からないんです。
Tag() を呼ぶ前とかに eyeD3.DEFAULT_ENCODING を変更してみたり
してもダメっぽかったんで。
pyid3libはどうだろう。id3libへのラッパーだけど。
> (sjis問題はともかく)今回の問題のライブラリ(eyeD3)が encoding を
> どうやって指定するものなのか良く分からないんです。
import eyeD3.frames
tag.encoding = eyeD3.frames.SJIS_ENCODING
threading.Thread内で一定時間待ちたい場合、time.sleep()を使ってもいいんでしょうか?
LinuxとWindowsで試した限りではtime.sleep()でも意図したとおりの動作でしたが、
モジュールドキュメントにはスレッドについて言及してないので不安です。
JavaみたいにThread.sleep()があればいいんですが、
近いのはthreading.Event.wait()ぐらいしか見つかりませんでした。
Modules/timemodule.cを見ると、time.sleep()はUNIXではselect、WindowsではWaitForSingleObjectを使って
実装されているので、事実上は問題ないと思われる。
全てのプラットフォームで、指定した時間だけ特定のthreadの動作を停止する方法はなさそう。
Pythonを初めて使ってみようとしてるんですが、
他の言語のnullやnilに対応する値は何でしょうか?
あと、perl, lisp, rubyあたりとの簡単な対応表があると
教えていただけると助かります。
ありがとうございます。
真理値として評価したときに偽となるものは None, False 以外にも
何かありますか? Cと同様に0がそうであるというのはどこかで聞いたことがあって
知っているのですが。
ああ、偽となる値は116のリンクの先に書いてありました。すみません。
>>113 レスどうも。
仕事で使うコードなので、一応安全だと思われる
ダミーのthreading.Event.wait()を使うことにしました。
数値 (整数も実数も) を返す関数が偽を返したときにはビビッタ.
こういうときは,正常なら数値,以上なら[例外|None|False]を返すようにして,
if f(x) is not None:
みたいにするのが普通ですか? ( if f(x): にしてビビッタんです )
暗黙のキャストは使わない方がPython(現代?)的だろうね。
if f(x) is not None:
でいいと思う。
>>119 Lib/threading.pyを見ると、threading.Event.waitもtime.sleepを使って待ちに入るので、
time.sleepが正しく実装されていないプラットフォームでは意図通りに動作しない。
さらにthreading.Event.waitはwaitしているスレッドが0.5〜50msecごとにpolling
するのでパフォーマンスが悪化するというおまけ付き。
仕事で使うなら、対象プラットフォームでの正常動作を確認したうえでtime.sleepを使うのが筋だろう。
>>122 threading.Event.wait内でそのままtime.sleep使ってるんですね。
threading.Eventはスレッドセーフなはずだから、
time.sleepもスレッドセーフな実装を要求してると好意的に解釈しときます。
わざわざソース調べていただいてありがとう。
配列や集合にある要素(またはある条件を満たす要素)一つがあるか調べたい
(あればそれを返し、なかったらエラーにならずにNoneを返してほしい)ときは
何を使うべきでしょうか?
Lispのmemqやfindに相当するものがPythonにもあるだろうと思うのですが
探し方が悪いのかみつけられません。
125 :
デフォルトの名無しさん:05/01/14 11:51:38
一つのスクリプトファイルが一つのモジュールになるらしいということは
わかったのですが、これは無条件で全ての名前が外部から参照できてしまう
のでしょうか。関数を外部に見せないようにすることはできますか?
目的としては、内部処理用のものは、Cのstatic関数のように完全に外部に見せない
ようにしたいのですが。
> 配列や集合にある要素(またはある条件を満たす要素)一つがあるか調べたい
これでいいか?
>>> a = [1, 2, 3]
>>> 1 in a
True
>>> 4 in a
False
> 関数を外部に見せないようにすることはできますか?
できない。
__all__ を定義すれば、from module import * したときに特定の名前だけ取り込ませる、
ということはできる。
アクセス制御は紳士協定で。
ああ、そうするわけですか。ありがとうございます。
あと、LispやRubyのfindのように、ある条件を満たす最初のものをみつけたいときは
どう書くのが定跡でしょうか?
find(lambda x: x.attr == k, list1)
みたいな操作がPythonにも標準であるんじゃないかと予想するのですが、
>>127 あう、できませんか。残念。
お答えありがとうございます。
>>124 >>126さんと同じ方法で
条件を満たす要素「1つ」じゃくて「リスト」を返すならこんな感じ
L = [-1, 2, -3, 4, -5]
[ x for x in L if x > 0]
最初のやつを1つなら
[ x for x in L if x > 0][0]
Python のあまりのエレガントさについおまいらが優秀にみえてくるから凄いよな Python
訂正
>
>>126さんと同じ方法で
in の意味が違った…
2.4ならジェネレータ式を使って、
(x for x in list1 if x.attr == k).next()
あるいは、
itertools.ifilter(lambda x: x.attr == k, list1).next()
ただ、どちらも該当要素が無い場合は例外が飛ぶ。
>>128 def find(iterable):
for x in ある条件:
return x
return みつかんなかった
ぐらいしか思いつかない。
上の例なら、
for x in itertools.ifilter(lambda x:x.attr == k, list1):
とか、
lambdaは撤廃されたものとしてください
がーん。
>>134みたいなのを各自用意するしかないんですか?
かなりよく使われる部類の操作だと思うのですが、2.4になってもないというこ
とはそのつど定義して大して苦に(かつ重複を無駄に)思わないか、
Python人はこんな操作を自然に避けるような組み方をするのか……。
どうも、組込み・標準ライブラリで用意されるもの・そうでないものの
選定基準がまだよくわかりません。
>>136 > どうも、組込み・標準ライブラリで用意されるもの・そうでないものの
> 選定基準がまだよくわかりません。
グイドタソに直接問い詰めて下さい。
138 :
デフォルトの名無しさん:05/01/14 14:20:45
>
>>134みたいなのを各自用意するしかないんですか?
132とか133とかを先に読んだうえで言ってるのか?
関数型言語ならlambdaがないと面倒だし見通しが悪くなるけど、
逐次実行なんだから、内部関数定義すればいいはなし。
でもlist.indexがあるんだから、listのメソッドに入れてくれたっていいよな。
>>> a = ['foo', 'bar', 'baz', 'spam', 'egg']
>>> 'baz' in a and a.index('baz') or None
2
>>> 'bacon' in a and a.index('bacon') or None
>>> # ←None が返っている
これでどうでしょう.
>>141 値そのものが返ってこないし、属性(a.attrとか)や条件が使えない
>>124に言われそうです。
早く誰かが
>>124を満足させるのです。
>>132のリンク先の様にfindを実装してlambdaを渡せばいいんじゃない。
findをモジュールからimportすれば毎回定義せずに済む、別にimportしなくてコピペでもいいし。
でも、近い将来にlambdaは廃止されます。
X in a and X or None # 値そのもの (そもそも問題設定おかしいよね)
X in a and X.__len__() or None # 属性
X in a and {True:'foobar', False:'spamegg'}[X in ['foo', 'bar', 'baz']] or None # 条件分岐
というのはだめなんですか.
んなややこしいことせんでも、
>>133のを改良して
chain(ifilter(lambda x: x.attr == k, list1), [None]).next()
でいいやん。
関数にした方がよりわかりやすいが。
find = lambda f, seq: chain(ifilter(f, seq),[None]).next()
でも、これが組み込みにないのが不満だと言ってるんだから、
もはやGuidoタンに直談判するしかないでしょう。
PythonでCGIを書けるとかいう話だが,
それらを勉強できるようなWebや書籍等ってあります?
f, seqが常識的な範囲なら
[x for x in seq if f][0]
でいいじゃん…。
> 関数にした方がよりわかりやすいが。
> find = lambda f, seq: chain(ifilter(f, seq),[None]).next()
これなにやってるか普通のひとわからないよ。
まずlist comprehension使って、うんざりするほど遅かったらまたそのとき考えようぜ。
というか、うっかりlamda使うとかえって遅くなるかもなのです。
python cgi でぐぐると少ないながら出てくるよ。
Cookieは標準で入ってるし、セッション管理したければ
web-libだかなんだかの追加パッケージをインストールすれば一応使える。
自分で position_if (見つかり次第終了) とか
map_and_position_if (基本的に map だけど検査もして,
ダメな要素があればそこまでの map の結果と None のタプルを返す) とか作ってる.
float() が例外を出すようになっていると,コードの量が増えますよね?
例外を掴まえて None なり False を返す isfloat() と作ってしまっています.
なんかこう,今の python をそのままで受け入れられるようになる文書は
無いものでしょうか.On Lisp 読んでハァハァしているようじゃ
python は使えませんか.
2.4ならgenerator expression使ってこう書ける。
lambda使うより速く、直感的にもわかりやすい。
def first(i):
try:
return i.next()
except StopIteration:
return None
seq = [1, 2, 3]
print first(x for x in seq if x % 2 == 1)
print first(x for x in seq if x < 0)
import math
x = range(10)
y = [math.sin(x/100.0) for x in x]
print x
print y
>>> import math
>>> x = range(10)
>>> y = [math.sin(x/100.0) for x in x]
>>> print x
9
俺は恐怖した.何行も直した (x を a とか b に w.
def find(f, seq):
for item in seq:
if f(item):
return item
俺はこれがいいと思う.
158 :
デフォルトの名無しさん:05/01/15 22:53:22
REALbasicのスレでみてwxPythonに興味を持ったのですが
wxPython、REALbasicともクロスプラットフォームで手軽にアプリケーションが開発できるとのことです。
どちらのほうがコードの実行速度が速いでしょうか?
また得意分野、不得意分野など比較できませんか?
wxPythonはインストールすれば巨大なDemoプログラムが動かせるから、それ見て判断して。
wxPythonってインラインで日本語入力できたっけ?
とりあえずテキストボックスには日本語入った
162 :
デフォルトの名無しさん:05/01/15 23:09:46
JythonってJ2SDKの5.0で動かないの?
漏れはwxPythonを要求するAPIが多いので仕方無しに入れている。
将来的にはPy-Qtで自前で容易したし。
本当は
>>155 をうまくやる方法を教えて戴きたかったのですが,
煽りのようなネタにしてしまって申し訳ありません.
みなさんならどうやりますか?
(もちろん,*数値ものなら* import Numeric しますが...)
> JythonってJ2SDKの5.0で動かないの?
>>63 > wxPythonを要求するAPIが多いので
意味がわからん
> みなさんならどうやりますか?
なにをやりたいのかわからん
len()で文字列の文字数を数えるとき、
”a”は1文字で”あ”は2文字とカウントされます。
日本語も1文字にカウントさせる、
もしくはこの文字列はascii
すいません、途中で…
asciiかどうかを判断する方法はありますか?
unicode()
ブラウザからの入力を対象としてたのですが
len(unicode(i,"sjis"))で解決しました。
ありがとうございましたm(_ _)m
102,109 です.
教えて頂いたことなどを参考に,一応自分で使う範囲では
UTF-16 の id3v2 を eyeD3 で書けるようになりました.
自分の目的の第一段階はクリアしたんでお礼に報告させて頂きます.
# -*- coding: euc_jp -*-
import eyeD3;
# 以下4行の順番を間違えると泣くみたい...
tag=eyeD3.Tag();
tag.link( '01.mp3' );
tag.header.setVersion(eyeD3.ID3_V2_3);
tag.setTextEncoding( eyeD3.UTF_16_ENCODING );
# setTextEncoding() は eyeD3 v0.6.3 以降
tag.setArtist(unicode('誰々','japanese.euc_jp'));
tag.setTitle(unicode('ほげふが','japanese.euc_jp'));
tag.update();
(その他は
http://www.ginganet.org/ginga/memo/python-id3/ 参照)
乙かれ〜。
173 :
デフォルトの名無しさん:05/01/17 08:25:59
ソースコード見たまんまじゃないか。
def writeDict(self, dict):
print '<DL>'
for x in dict.keys():
print '<DT>%s' % x
print '<DD>%s' % dict[x]
print '</DL>'
こんな機能。
しかしほんとにインデント間違えるとで命取りになるなこれ。
大丈夫なのか?
たかがこんな処理に命がけですか。
emacs の python-mode で,改めてインデントし直していると
たまに for の終わり (インデントが浅くなるところ) が失われますね.
コーディングスタイルを何とかすれば良さそうなんですが,
具体的にどうすれば...?
2 行空けるとブロックの終わりと見倣そう,とかは無いのかな.
178 :
m9っ・∀・):05/01/18 21:13:49
1. 再インデントしたい部分の先頭で C-SPC (set-mark-command)。
2. 再インデントしたい部分の最後に移動。
3. 思うさま C-x C-i (indent-rigidly) を連打。
region 決めて C-x > とか C-x < じゃないの?
C-c > だった… orz
>>178-180 なるほど.region の部分を深くしたいときは,
インデントを崩さないようにすればいいんですね.
いままで rectangle を使っていて不満でした.
これでガンガン書けます.ありがとうございました.
# C-h m したら書いてあった鬱
Debian woody入れたらPythonが2.1.3だった。
>183
Debianは骨董趣味ですから。
○ チンコ タッテキタ
( V
>>
どこからちんこが出てくんだよ。
ページ見てもわからんぞ。
>>183 python2.xって別パッケージない?
まーWorkStation的な利用だったらsargeにするのがふつう。
pychinkoワロタ
pychinkoをCで実装したchinkoを公開します
pychinkoをC++で実装したchinko++を公開します
chinkoのサブセット、tinychinkoを公開します
.,/ _,/ .、、 ...、ヽ,,-、
.,,メ-‐'" _"',| .、、._,i.""│._、
._,,,/`,イ―'' ,`",l゙、、,,ジ'"`.```.|゙゛
.,,,-,i´,―--―''" 、、,!冖'"`、_、,,,/'゚,,."゙l-‐''
_,,,,,,,,,,,,,、 _,,,,,--''"`'",/゙ 、、.',j/′.、,,∠''"` .'_ヽ.',゙l.._,,、
,,-'"゙` `゙゙''lーイ"` .‐′ _,..,,/ .ヽ、,i,i´ ``゙’ 、、シ":"'.「
.,,i´ `'i、\ ゙!, ._,-'"ン'` 、、`_,/`,i´ _,___,ニ='" .'゙、゙".゙l,,-'`
.,/′ `'i,\ ′ .,,,,-',,,,、.,i´、_:_'_v`"゙i、| ```` ` 、_,Jィ""゙l, _,,,,、
: ,i´ ゙l. ヽ丶 .r‐'"、.l゙、、:,p=l┴丶 .!,,! `'"''''''冖''?'''゙~."""'."'/゛ `
: |,,r ゙l, 、 i、、、、:,,_,xl!ヴi,、 、、っ,,,, 、`',,,,、`、`、|、
|、 、"| .i、 lrr-''"゙,,ハ;、-'"゙゙'''''''"丶ヽ.,,冫``~`"`"~"``` `/ `''''
`''r,,、 、 、、 .、丶、.``ヽ,レ"° `` .j゚'=∠、````,,,,,∠ ~'ヽ```````、_,r‐'ヘi、
`゙'ーi,,_、、、、、: :._,,,r〃 " /^゚"'广 ,/ .,/゙゙゙'''ヶ―''''″ `
`゙^""""''"'" ` ′ ′ ."
ぱいちんこ!ぱいちんこ〜〜!!
磯さんわはー
エスパー募集見飽きた
人に虫取りさせるならコード全部さらせと言いたい
てかマジ勘弁
>>196 なぜPEPに触れていないんだろうか・・・・・・・・・・・・・・・・
>>198 奴のスレッドは読まずに捨てます。これで解決。
ワロタ
名前って重要だな。
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいちんこぱいちんこ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいちんこ!
ぱいちんこ〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
numpy と scipy の win32 バイナリキボン.
CygwinのPythonで最新のnumpyを使うことができるけどそんなことする奴はいないか。
言いだしっぺの
>>205がコンパイルしてうp。
ついでに
>>205のpychinkoもうp。
それは2.4用が欲しいのか。
ヲヲ.見事に 「2.4用の」を忘れていた orz
MinGW で作れるものは Linux でも作れたんでしたっけ?
良く分かりませんけど.これが無いと 2.4 に以降できませぬ.
ついでに pychinko というのも分かりません.google日本語で 3 件.
pyyhon-2.4のインストールの質問なのですが./configureで --without-tcl
って出来ないですか?インストールされているtclが古いのでmakeでエラーが出る
のですが、tkinter関係要らないのでmake時に選択されないようにしたいのです。
make distclean して, Modules/Setup から tkinter を外してみてください.
Numeric-23.7.win32-py2.4.exe はすんなりできたけど,SciPyに手こずって時間切れ.
mod_pythonもpyCryptoも2.4対応したので,もうそろそろ2.4移行かな
男なら商用サイトをZope 2.7.4+ Python2.4 + Fedoraできまり。
いや、Plone-Zope-Python-SuSE Linux だ。
> Rubyのプレゼンスが向上したことをすなおに喜ぼう。
> 割とRubyに対して警戒心を持っているようで
まつもと必死だなw
変更点もまとめずにリリース、
直後に一部修正して同じファイル名で再リリースするようなRubyが
Pythonと肩を並べようとは片腹痛いわ。
× Rubyに対して警戒心を持っているようで
○ Rubyの作者に対して警戒心を持っているようで
警戒心というよりかは疑心暗鬼だな(w
でもぶっちゃけ、日本でPython使いだけどRuby使えない人って少ないんじゃない?
rubyなんて入れてませんが?使う必要全く無いし。
>>223 日本だとまったく逆な奴のほうが多いだろうな。
>>222 Rubyを知る以前からPythonを使ってたから、
Rubyを使って何か書いたりはしてこなかった。
>>224 ニホンジン作者なんていう属性はしょうもないことなんですよ。
私がニホンジンでなかったら Ruby なんて注目すらしていなかったでしょう。
そういうことです。その程度なんですわ。Ruby なんていう言語は。
たたくとかそういうことでなくて眼中にない。
>>228 だから出てけって。
しつこいしキモイよ。
Pythonの話をしろよ。
そりゃ救いようのない人達が群れ集まるスレですから。
救いようのない人達が群れ集まるスレ〜になるでしょう〜♪
Ruby on Railsに対抗して、PythonのWebアプリに革命をもたらす勇者はいずこ
もしかして Zope-2.7.4 上では Plone-2.0.5 は使えない?!
>>233 WebアプリくらいPHPにくれてやれ。
PHPなんてヤダヤダ(AA略)
たっぷるたっぷる(AA略)
>>236 なんで使えないか分かりますか?
具体的には handlers と子プロセス関係の Plone 側の方がどうなってるのか知りたし。
Python厨を黙らせるには難しい質問をすればいいらしい
ラムダちゃんさようなら
Python はネイティブスレッドによる並行実行をサポートしているそうだけれど.リファレンスカウンタ増減に対して排他制御をかけていないようだ.本当にそれでいいの?
pythonは、インタプリタ自体は並行動作しない。
システムコールの呼出しなど、インタプリタを抜けるときだけMT動作を許可する。
Pythonが採用しているデータ構造を理解しておきたい。
着手はどこからが良いでしょうか?
>>242 インスタンスでやっているから別にいい。各自独立したスレッド。
競合した場合はプリミティブにkernel依存じゃないかな。
>>246 具体的にはPythonの非常に柔軟な型対応を実現している個所のソースを読みたいんですよ
>>247 「Pythonの非常に柔軟な型対応」って何のこと?
>>249 _ ∩
( ゚∀゚)彡 タップル!タップル!
( ⊂彡
| |
し ⌒J
タップル!! タップル!!
タップル!! タップル!! タップル!!
タップル!! ∩ ∩ ノ) タップル!!
タップル!! 川 ∩ 川彡'三つ タップル!!
タップル!! ⊂ミ∩、⊂ミ∩彡⊃ タップル!!
タップル!!⊂三ミ( ゚∀゚)彡三彡三⊃ タップル!!
タップル!! ⊂彡川⊂彡川ミ⊃ タップル!!
タップル!!⊂彡川∪⊃ U川彡⊃ タップル!!
タップル!! (ノ ∪ 川 ∪ミ) タップル!!
タップル!! ∪ タップル!!
タップル!! タップル!! タップル!!
タップル!! タップル!!
タップル!!
タップル!!一筋30年
_
( ゚∀゚)x"⌒''ヽ、 鍛えに鍛えた左腕
(| ...:: Y-.、
| イ、 ! :ヽ 求めるものはただ一つ
U U `ー=i;;::.. .:ト、
ゝ;;::ヽ :`i 今日も明日も腕を振る
>゙::. .,)
/:::. /;ノ
ゞヽ、ゝヽ、_/:: /
`ヾミ :: :. ゙ _/
`ー--‐''゙~
キモw
必須の便利モジュール教えれ。
timeit.py
Pythonの規格読むの面倒なので教えて。
Pythonってどういう言語なの?
関数型言語なの?
過疎だから無理にでも盛り上げよう
PYTHON/CGIに興味ある人いないかい?
サイト作ろうと思ってんだけど…
チュートリアル読め。
261 :
デフォルトの名無しさん:05/01/30 22:48:04
>>257 Pythonは最高にクールでゴキゲンな言語だぜ!!!!
ジェネレータというのを使ってみると,高尚なことをやっている気分になりますね.
遅延評価とか,あのわけわからない関数言語の特徴がこんなに簡単に,みたいな.
| _
|∀゚) ダレモイナイ・・タプルナラ イマノウチ
|⊂
|
_ ∩
( ゚∀゚)彡 タップル!タップル!
( ⊂彡
| |
し ⌒J
_ _
( ゚∀゚) タップル!タップル!
( )
| 彡つ
し∪J
_, ,_∩∩
(;`Д)彡彡 タップル!タップル!
((⊂⊂彡
| |
ヽ_つJ
∩∩_, ,_ _, ,_∩∩
ミミ(Д´≡`Д)彡 タップル!タップル!タップル!タップル!
ミ⊃⊃⊂⊂彡
| |
し ωJ
問題は現行のZope信者がキモすぎて普及の妨げになっていることだな。
jythonってJAVAのクラスファイル作れるの?
作れますよ。
Javaアプレットを作る例なんかもjython.orgに載ってた気がします。
>>267 さんきゅ〜〜
ということは、JAVAで書くと面倒くさい処理をpythonで書いて
JAVAへ変換、ということができるということか。便利だね
>>259 mod_python使った方が幸せになれるよ。
2.3.5 ... rc1:問題がなければ来週にもfinal
2.4.1 ... 二ヶ月以内予定
2.3.5って存在価値あるの?
sys.stdin/out/err を閉じるときにバッファがflushされない
弱参照されているオブジェクトを含む循環参照をgcしようとするとうまくいかないことがある
ある種のWindows DLLを読み込もうとするときに落ちる
exec() の中でtype()を使って作成したクラスに__module__がない
__init__.pyがディレクトリだとクラッシュする
Solarisでコンパイルがうまく通らないことがある
データを解凍せずにzlib.decompress.flush()を呼ぶと落ちる
非ブロックSSLソケットがブロックしている
OpenSSLのバグ回避
xmlrpclibでUnicodeをキーに使った構造体を操作できない
その他もろもろが修正されてる。
行頭に - とか ・ つけるなり、区点使ってはどうかと。
| _
|∀゚) ダレモイナイ・・オッパイスルナラ イマノウチ
|⊂
|
_ ∩
( ゚∀゚)彡 Oh!Py! Oh!Py!
( ⊂彡
| |
し ⌒J
_ _
( ゚∀゚) Oh!Py! Oh!Py!
( )
| 彡つ
し∪J
_, ,_∩∩
(;`Д)彡彡 Oh!Py! Oh!Py!
((⊂⊂彡
| |
ヽ_つJ
∩∩_, ,_ _, ,_∩∩
ミミ(Д´≡`Д)彡 Oh!Py! Oh!Py! Oh!Py! Oh!Py!
ミ⊃⊃⊂⊂彡
| |
し ωJ
次のPythonのキラーアプリを考える会
Zope→Bittorrent→?
>>276 Pythonを殺すアプリの事ですね。
VisualPythonとか。
Googleテクノロジーのお下がりで使える汎用サーチエンジンが次期候補と予想しておこうかな
Reteアルゴリズムに基づいたRDFのルールエンジン。
どこからPychinkoなんて名前を付けたんだ。
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいちんこぱいちんこ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいちんこ!
ぱいちんこ〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
| _
|∀゚) ダレモイナイ・・パイチンコスルナラ イマノウチ
|⊂
|
_ ∩
( ゚∀゚)彡 pychinko! pychinko!
( ⊂彡
| |
し ⌒J
_ _
( ゚∀゚) pychinko! pychinko!
( )
| 彡つ
し∪J
_, ,_∩∩
(;`Д)彡彡 pychinko! pychinko!
((⊂⊂彡
| |
ヽ_つJ
∩∩_, ,_ _, ,_∩∩
ミミ(Д´≡`Д)彡 Pychinko! Pychinko! Pychinko! Pychinko!
ミ⊃⊃⊂⊂彡
| |
し ωJ
行間嫁
Pythonキラーアプリの変遷
Zope→Bittorrent→Pychinko
最凶のキラーアプリ
-> py2ch
pyslsk
>>285 ハァ?
意味の取れない文章を書いておきながら、行間嫁だと?
俺の行間を読んでくれ。
今日の朝は
だ。
何となくかっこよさそうなので行間嫁と言ってみたくて仕方がない年頃なんだよ。
>>285 つまりノキアの携帯は、ぱいもちんこも付いてるふたなりなのだと?!
Nokiaってティモテな金髪美女のイメージ
そんな彼女達も一皮剥けばPychinko
>>289 > 意味の取れない文章を書いておきながら
残念ッ!
>>> 282 == 285
False
>>>
>>289 うむ。十分に意味が読み取れる文章だよ。
PythonでPychinco動かせる。
NokiaでPython動かせる。
じゃぁNokiaでPychincoうごくじゃん。
という見事な三段論法だ。
>>296 つまりNokiaの中のPythonは、Pythonのサブセットじゃなくてフルセットなわけか?
それともサブセットだけどPychincoは動くと誰かが確認したのか?
>>296 >>297 Pychincoではない!Pychinkoだ!丁寧にもヘボン式ローマ字表記だ!
J2MEでJythonは動きますか
山は死にますか
Jythonのassert対応版、いつ出るのよ
いま必死に取り組んでおります<Jython
303 :
デフォルトの名無しさん:05/02/05 11:29:17
ちょっとよろしいですか
pythonのurllib.urlencodeで'%20'という文字を入れると
'%2520にencodeされてしまうんですが
どにかして%20にできないでしょうか?
前提というか要求がおかしいよ、それ。
urllib.quoteならurllib.quote('%20', '%')とはできるけど。
そうですね。解決しました
ftplibで大き目のファイルを転送しているときに、今どのくらいまで転送したか
知るにはどうすればできますか?
プログレスバーのようなものを考えています。
受信はretrbinary()の引数callbackがつかえるが、送信のstorbinary()にはないので(謎)、
引数のfileオブジェクトのread()を適宜オーバーライドするのがいいかな?
定期的に集計するログ(テキストファイル)の中に
なんでか\x03や\x1aなどの制御コードが入るので、
これを除去するスクリプトを作っています。
bchar = '\x03' # または\x1a
achar = '@'
fp=open(filename,"rb")
fp2=open(filename+"_replaced", "wb")
rep = re.compile(bchar)
buf=fp.read(1024)
while buf != "":
m=rep.search(buf)
if m != None:
buf2 = str.replace(buf,bchar,achar)
fp2.write(buf2)
else:
fp2.write(buf)
buf=fp.read(1024)
fp.close()
fp2.close()
とりあえずreadlineではなぜか検知してくれなかったので
バイナリとして読み込んだら検知はしました。
しかしstr.replaceでは文字化けしてしまって…
str.replaceに代わるものはあるのでしょうか?
>>308 文字化けするとゆーことは、ログファイルは日本語?
EUC-JP だと除去以前に元もと文字化けしてるだろうから
ログファイルの文字コードは Shift_JIS かな。
いずれにせよ(\x03 はともかく)\x1a の除去は難しいな。
EUC-JP や Shift_JIS では \x1a が文字の一部として現れるからね。
Unicode に変換して処理するのが基本だけど、
変なバイト値が入ってくるとコデックが文句を言うかも。
errors="ignore" を指定してみるとうまくいくかも知れない。
あ、誤読した。\xa1じゃなくて\x1aか。てか自分でもそう書いてるし。orz
つーことで下3行以外は無視して下さい。スマソ
UTF-16じゃあるまいし、文字の一部として^Zが現れるエンコーディングがどこにあるのかと小一時間
情報不足ですいません。
ログファイルはutf8nエンコードで日本語が入ってます。
pythonはwindowsの2.3を使っています。
スクリプトの頭でerrors="ignore"と宣言すればいいのでしょうか…?
>>312 UTF-8(string型)をUnicode文字列(unicode型)に変換して処理するべし。
組込み関数 unicode() を使うのが基本だけど
(errors="ignore"とゆーのは unicode() のオプション引数です)、
ファイルの読み書きのときに自動的に unicode() を呼ぶ以下のような方法もある。
リファレンスマニュアルで意味を調べつつ処理を追いかけてみて。
(StringIOは実際のファイルの代わりなので、真似して使う必要はない。)
# -*- coding: Shift_JIS -*-
import StringIO, re, codecs
Reader = codecs.getreader("utf-8")
Writer = codecs.getwriter("utf-8")
log = u"日本語\x03ASCII\x1a\n" * 3
istream = Reader(StringIO.StringIO(log.encode("utf-8"))) # fp
ostream = Writer(StringIO.StringIO()) # fp2
re_control = re.compile("[\x03\x1a]")
while 1:
line = istream.readline()
if not line:
break
print repr(line), "->",
line = re_control.sub("@", line)
print repr(line)
ostream.write(line)
補足。ループの部分は以下のようにも書ける。この方が簡単だね。
for line in istream:
print repr(line), "->",
line = re_control.sub("@", line)
print repr(line)
ostream.write(line)
print "istream:", repr(istream.getvalue())
print "ostream:", repr(ostream.getvalue())
最後の2行でファイルの中身を表示してみる(StringIOならではの処理)。
UTF-8で、なおかつ問題の文字が置換されているのが確認できると思われ。
っていうか、テキストファイルの中に\x03や\x1aが入る原因を調べるほうが先じゃないか?
むうーすいません、ちと理解するのに時間が…
>>315 謎です、Webからの入力をそのまま吐き出してるはずなんですが…
その際使ってるアプリケーションの問題かも知れません。
状況には場当たり的に対処し
いつまでも仕事は減らさぬよう増やさぬよう
readなりreadlineなり使ってファイルから読み込む際に
文字列として読み込むために、\x1aとか\x03とかに遭遇した時点で
処理が終了してるような気が…orz
超coooooooooooooooolなアイコンくれ
超cooooooooooooooool の検索結果のうち 日本語のページ 約 72 件中から自分で探せよ。
_ ∩
( ゚∀゚)彡 ぱいがめ! ぱいがめ!
( ⊂彡
| |
し ⌒J
>>321 GJ!!!!!!!!!!
ああいう解説、もっとキボンヌです。
これからば作者さんのページに「Features, Docs, Screenshots, Download, ...」
に加え、「Tutorial with me」が必須でしょう。
人生の敗北者でPython使ってる奴って
実際どれくらい敗北してんの?
そだなー。テトリスにたとえるならこんな具合の敗北度。
┃ ┃ . . .... ..: : :: :: ::: :::::: ::::
┃ ┃ Λ_Λ . . . .: : :
┃ ┌┐┌┬┬┬┨ /:彡ミ゛ヽ;)ー、 . ::
┃┌┐┌┼┼┼┼┴┴┨ / :::/:: ヽ、ヽ、 ::i . .::
┠┼┼┼┼┼┼┼┬┐┃ / :::/;;: ヽ ヽ ::l .
┠┼┼┼┼┼┼┼┼┤┃  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄
┠┼┼┼┼┼┼┼┼┤┃
┠┼┼┼┼┼┼┼┼┤┃
┠┼┼┼┼┼┼┼┼┤┃
┗┷┷┷┷┷┷┷┷┷┛
↑って連鎖の大チャンスじゃん。
>>325 失敗をバネにして成功を勝ち取れ!というメッセージが通じんのか
Pythonで人生が開けたみなさまの喜びの声↓
┃ ┃ . . .... ..: : :: :: ::: :::::: ::::
┃ ┃ Λ_Λ . . . .: : :
┃ ┌┐┌┬┬┬┨ /:彡ミ゛ヽ;)ー、 . ::
┃┌┐┌┼┼┼┼┴┴┨ / :::/:: ヽ、ヽ、 ::i . .::
┠┼┼┼┼┼┼┼┬┐┃ / :::/;;: ヽ ヽ ::l .
┠┼┼┼┼┼┼┼┼┤┃  ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄
┠┼┼┼┼┼┼┼┼┤┃
┠┼┼┼┼┼┼┼┼┤┃
┠┼┼┼┼┼┼┼┼┤┃
┗┷┷┷┷┷┷┷┷┷┛
split(`ps -ef`) ...
とか、外部プロセスの出力結果を簡単に取り込むシンタックスシュガーが欲しい脳
Perlとちがって純粋なプログラミング言語を目指してるから、
実装されることはないだろうね。
自分では結構仕事でPython取り入れてるけど、
そういうのにはやっぱりPerlを使うし。
自分で定義するんじゃだめか?
from subprocess import Popen, PIPE
def shellexec(cmd):
return Popen([cmd], stdout=PIPE, shell=True).communicate()[0].split()
for f in shellexec('ls *'):
print l
_ ∩
( ゚∀゚)彡 ポーペン! ポーペン!
( ⊂彡
| |
し ⌒J
commandsモジュールを使う
IronPython、開発者がMSの.net開発チームに入ったって
鳴り物入りでニュースになったけど、その後どーなっている
んだろう。
Noneの比較の際は == None ではなくis None が推奨されるようですが、
理由は何ですか?
文字列ではないから
>>337 None は唯一無二のオブジェクトだから。
二つのオブジェクトが同じ値かどうかを調べるのが == 演算子。
二つのオブジェクトが同じオブジェクトかどうかを調べるのが is 演算子。
二つのオブジェクトが共にNoneならば、その二つは同じオブジェクトであるハズ。
その予想を確認する最も確実な方法が is None というわけ。
>>339 is None と ==Noneで別の結果が返ってくる例ってあります?
>>340 無いと思われ。
以前は None に代入できたが最近のバージョンでは SyntaxError になる。
また、C言語で拡張モジュールを書く場合でも None のインスタンスは
Py_None という定数で表される。したがって「None」が None オブジェクト
以外である状況というのは考えにくい。
もし None に代入できれば is None が偽(つまり別のオブジェクト)で
== None が真(値が同じ)になる状況というのはあり得ると思う。
一方、is None が真で == None が偽になる状況はあり得ない(演算子の
定義から明らか)。
こうか。
>>> None = 106
<stdin>:1: SyntaxWarning: assignment to None
>>> n =106
>>> n == None
True
>>> n is None
False
or dieの代わりに流行らせようとして失敗したんだよな
or die はカッチョイイからな。チェケラッって感じ。
ところでオライリーの新しいやつってどんなでしょうか。
買う価値ありますか。
なんでこのスレのテンプレってPyJUGとかへのリンクがないのさ。
> ところでオライリーの新しいやつってどんなでしょうか。
初めてのPython 第2版のこと?
だったら、内容はすごく丁寧。
初学者でもつまづかないように注意深く書かれてる。
Python使いでもあんまり知らないようなディープなことも載ってるし。
ただし言語仕様についてが重点的に書かれていて、
ライブラリのことはほとんど書かれてないという弱点が。
それをふまえて、買う価値があるかどうかは自分で決めてくれ。
348 :
デフォルトの名無しさん:05/02/13 02:50:49
Python 2.3.5(final) released!
subprocess ってのは2.4からか。知らなかった。
350 :
デフォルトの名無しさん:05/02/14 21:44:27
1から100までの数字を選んでそれをプログラムに当てさせるプログラムを作れって問題があるんですがうまくできないです。
何処が悪いか教えてもらえないでしょうか?問題は101以上の数字を入力して再入力するよう指示できないところです。
よろしくお願いします。
G = 1
A = int(raw_input("choose a number: "))
while A < 0 and A >100:
A = int(raw_input("choose a number: "))
while G != A:
G +=1
print "the number is ", G
raw_input("enter")
351 :
デフォルトの名無しさん:05/02/14 21:47:08
350です。
出来ました。
ANDじゃなくてORですね。
スレ汚しすみません。
細かくつっこむと
今のままだと100が入力できないのと、
個人的趣向で最初の
A = int(...
は
A = 0
の方がすきなとこ。
ごめん100は入る。
スレ汚しスマソ
0を入力すると…
> 何処が悪いか教えてもらえないでしょうか?
そんなあほな例題を出してる奴の頭が一番悪い。
「1から100までの数字を選んでそれをプログラムに当てさせるプログラム」って何だよ。
ユーザが最初に入力した値そのものが答えだろ。もっとよく考えて問題作れよ。
while 1:
try:
n = int(input("enter number?"))
if 0<n<=100:
print "out of range (must be 0<n<=100)"
else:
print "the number is %d" %(n)
except ValueError:
print "your input is not a number! bye..."
break
感想の欄があったら「例題があほすぎます。まじめに教える気あるんですか?」って書いとけ。
> if 0<n<=100:
if not 0<n<=100: だし、input() も raw_input() だ。
俺もっとあほや。首吊ってくる。
> print "the number is %d" %(n)
もっと言うと n のまわりの括弧は要らないね。
C言語で return(n); って書くタイプ?
(n,) ならどうだろうか。
return(n);
なんて書くやついるのか。
いや〜
sizeof(n)とは書くけど…
> 1から100までの数字を選んでそれをプログラムに当てさせる
プログラム「50ですか?」
人間「もっと大きい」
プログラム「75ですか?」
人間「もっと小さい」
プログラム「63ですか?」
……
という感じのじゃないのか?
それで矛盾した情報をインプットすると爆発するんだよな。
基本的なアルゴリズム:
予め1から100までの自然数マップテーブルを定義して(静的でよい)
「表面に」ユーザからの任意入力を受けつけて
マップテーブルとのコネクションを確立させる。
なければエラー入力とみなす。
次に「裏面」でこのコネクションを探索するエンジンを動かす(乱数でよい)
「表面」と「裏面」は独立したオブジェクト構成にして「イカサマ」がないように立証する。
# 実装はしませんよ。そんな低俗な労働は精神衛生上よくありませんので(^^;
(1+sqrt(5))/2 を使うのかい。
なぜ黄金比?
プログラム「50ですか?」
人間「もっと大きい」
プログラム「51ですか?」
人間「もっと大きい」
プログラム「52ですか?」
……
nですか?nではありません→O(n)
nですか?nより(大きい|小さい)です→O(logn)
pythonでWindowsのコマンドラインに入力できる関数ってありますか?
>>371 Win32APIのSendMessage
>>372 pythonでwin32api使いたいんですけど
ActivePython入れるしかない?
ごめ。すぐ見つかった。
スレ汚しスマソ
>>371 もしかしたら勘違いしたかも。標準入力からの入力のことを言っているのだったりして…
sys.stdin.readline()
えと、pythonからDOSのコマンドを実行したいんですけど
具体的な例を教えてくれませんか?
pythonから別のアプリを引数つきで起動したいんです。
あと質問ですが
pythonのWin32apiってCでWin32api使うのと同じぐらいの機能はあります?
os.popen() じゃない?
などと
>>371 の質問をいろいろに解釈してみるテスト
しまった、ボケたつもりだったのに・・・
>> 376
例えば,os.system() が使えます.
>>> import os
>>> os.system('"c:\\Program Files\\Adobe\\Acrobat 6.0\\Acrobat\\Acrobat.exe" d:\\docs\\mypaper.pdf')
0
ドキュメントを関連付けされたアプリで開きたいだけなら os.startfile() を使います.
>>> os.startfile("acrobat.exe")
win32api を使うと色々なAPI機能にアクセスできるけど,すべてのAPIに対応している
わけではないでしょう.それに,コールバックが入ってくるようなプログラムを
書こうとしたら苦労するはずです.C で使うほどには融通利かないと思う.
>>379 ありがとうございます。
osモジュールは滅多に使わないので解りませんでした。
win32apiは使ってみる価値がありますね。win32guiモジュールも気になる。
日本語の解説サイトが少ないのが悲しいかなw
>376
えーと、例えばDOSプロンプトで
> type
とか
> copy
とか
> xcopy
とかやるような? だったら>379にもう一工夫
>>> os.system('"command.com xcopy 〜〜"') ←9x、Me
>>> os.system('"cmd.exe xcopy 〜〜"') ← 2000,XP
でも、普通にshutil使った方がよかないかい? netコマンド使うとかならしらんけど。
>>382 お前は明らかに言語のエレベータで『下がる』ボタンを押してるよ
HSP厨の存在は単なる冗談かと思っていたけれど、本当にいたんだ、こんな人。
まわりのりんごまで腐らないといいけれど。。
貶めるバカが居るとは思わなかった
pygameってFFの画面を思い浮べてしまうんだけどw
でも画像ビュアとかプレゼンUIとかのバックエンドで秘かに使われているので
なんとなしに複雑な心境(´・ω・`)
Pythonでも「るびま」みたいなのがあればいいなー。
どうでしょ?
情報が増えるってのはいいことだ
特に日本語の。
>>388 そのとおりですね。小さなブログ記事1000本よりも、「るびま」風
のまとまった記事1本の方がわかりやすかった。だから、「ぱいそま」
に一票。
ところで、「ぱいそま」で投稿をお願いしたいPythonの
人を募集!
* Rubyist Hotlinks 第 1 回 まつもとゆきひろさんさん
* Rubyist Hotlinks 第 2 回 前田修吾さん
* Rubyist Hotlinks 第 3 回 かずひこさん
* Rubyist Hotlinks 第 4 回 ただただしさん
* Rubyist Hotlinks 第 5 回 増井俊之さん
なんで増井さん…
なんで日本語なんだよ。
>> 391
プロトタイピングとして、Perl4からRubyに乗り換えたんだって。
増井さんの記事、面白かった。
.,/ _,/ .、、 ...、ヽ,,-、
.,,メ-‐'" _"',| .、、._,i.""│._、
._,,,/`,イ―'' ,`",l゙、、,,ジ'"`.```.|゙゛
.,,,-,i´,―--―''" 、、,!冖'"`、_、,,,/'゚,,."゙l-‐''
_,,,,,,,,,,,,,、 _,,,,,--''"`'",/゙ 、、.',j/′.、,,∠''"` .'_ヽ.',゙l.._,,、
,,-'"゙` `゙゙''lーイ"` .‐′ _,..,,/ .ヽ、,i,i´ ``゙’ 、、シ":"'.「
.,,i´ `'i、\ ゙!, ._,-'"ン'` 、、`_,/`,i´ _,___,ニ='" .'゙、゙".゙l,,-'`
.,/′ `'i,\ ′ .,,,,-',,,,、.,i´、_:_'_v`"゙i、| ```` ` 、_,Jィ""゙l, _,,,,、
: ,i´ ゙l. ヽ丶 .r‐'"、.l゙、、:,p=l┴丶 .!,,! `'"''''''冖''?'''゙~."""'."'/゛ `
: |,,r ゙l, 、 i、、、、:,,_,xl!ヴi,、 、、っ,,,, 、`',,,,、`、`、|、
|、 、"| .i、 lrr-''"゙,,ハ;、-'"゙゙'''''''"丶ヽ.,,冫``~`"`"~"``` `/ `''''
`''r,,、 、 、、 .、丶、.``ヽ,レ"° `` .j゚'=∠、````,,,,,∠ ~'ヽ```````、_,r‐'ヘi、
`゙'ーi,,_、、、、、: :._,,,r〃 " /^゚"'广 ,/ .,/゙゙゙'''ヶ―''''″ `
`゙^""""''"'" ` ′ ′ ."
ぱいちんこ
>>390 * Hotlinks 第 1 回 mojixさん
* Hotlinks 第 2 回 たけしさん
打ち切り。
だれか暇な人pythonでマルコフ連鎖書いて〜
解らないから書いてほしい。
接頭語句と接尾語をあーだこーだするみたいだけど全く解らない。
つかすれ違いかな。
過疎スレなのに返信速くてワロw
>>387 全うな Pythonist は PEP8 を遵守して英語でコメントせねばなりませんので・・
どうしても日本語情報を欲っするのならばブログのトラバを集めたポータルを
ご自分で作られてはいかがか?
Kakashiで分かち書きしてマルコフ連鎖で文章を自動生成させるPythonスクリプトを以前書いたよ。
夏目漱石風だの梶井基次郎風だのが簡単にできて結構おもしろかった。
そーゆーことがやりたいんだよね?
I'm feeling Lucky!
404 :
デフォルトの名無しさん:05/02/16 19:26:53
今読んでるdictionaryの説明のところで dictionary の value について
"values can be immutable. They can be anything you want"
ってあるんですが文脈からいってこれって mutable のまちがいなのではとおもうんですが
実際のところどうなんでしょうか?
PlanetPythonJでいいじゃん。
>>404 その前の文章はどうなってるの?
↓予想
(keyはimmutableでないといかんが、valueはmutableでもおっけーよ。)←文脈
もちろんimmutableでもよい。つまりvalueはなんでもありっす。
↓エスパー魔美
411 :
デフォルトの名無しさん:05/02/16 20:38:40
>>408 おっしゃるとおりです。
value のが sequance として imutable なんだって説明しているの飼って思ってたんですが
value に入れられるものについての説明だったのかぁ。
value と sequance がなんかごっちゃになってました…。
ありがとう御座いました。
何でこんなにもスレ伸びてるの?
↑こういうレスがあるから(含むこのレス)
>>402 高校生になるまでこのスレに書き込むな。
小・中学生には確かに難しすぎる。
Pythonってインデント間違ってると誤動作しますか?
そういうこともある。
417 :
デフォルトの名無しさん:05/02/17 00:34:08
これ 0 を最初に入力したらループが抜けるとおもってたんですが抜けないんですよねぇ…。
何処が悪いんでしょう?本に載ってるやつと何処が違うのかいまいちわからない。
choice = None
dic = {"a": "aaaa", "b":"bbbb", "c":"cccc"}
while choice != 0:
print \
"""
0: Quit
1: Look up a term
2: Add a term
3: Redifine a term
4: Delete a term
5: Display all items
"""
choice = raw_input("Make a choice: ")
noterm = "we do not have the term"
if choice == "0":
print "\nGood Bye"
raw_input("enter")
417です。
あ、わかりました。
PerlならCPAN、TeXならCTAN、RならCRAN、PHPならPear・・・と、
「まずはここで探せ」という場所があるんですが、
Pythonだとどこが拠点になるんでしょうか。
皆さんはどうしてますか?
PyPI(ぱいぱい?)というのがそれに相当するんでしょうかね?
>>419 つぅか sf か freshmeat のサーチエンジン使え
以下のコードで,セーブ時にエラーがでて,実行できません.
「〜」って使えないんでしょうか?
----------------------------
# coding=shift_jis
print "〜"
----------------------------
423 :
デフォルトの名無しさん:05/02/17 16:44:58
セーブ時にエラーがでて
エディタの問題をPythonスレで聞かれてもリンダ困っちゃう
文字列を標準出力にセーブするときの話だろ。
「標準出力にセーブ」?
エスパーを激しくきぼんぬするスレになりました
おさえの投手が内野ゴロをトンネルして逆転負けっていう話じゃないか?
>>> s = u"\u3000"
>>> s[0]
u'\u3000'
>>> ord(s[0])
12288
組み込み関数で用意されていたとは…orz
ありがとうございました!!
ordをorzと誤読した
>>> orz = ord
>>> print orz('\u3000')
12288
これで問題ない
流石だな、兄者。
寧ろ Python そのものを讃えるんだな
レス遅れてすみません。
>>420-421 ありがとう。
決定版な場所というのはないにせよ、
だいたい見に行く場所ってのは限定されているんですね。
別に Bittorrent 宜しく、"anywhere"でもいいんだよ。
それだと甚大なアタック被害を被ることはありませんですし。
ODBCやらJDBCやらDBIみたいな統一APIがないと聞きますが
そのうちどーにかなりますか
質問自体が間違いの気もしますが
タプルにどうにかして要素を追加する方法ってありませんか?
>>> x = (1, 2, 3)
>>> x += (4, 5, 6)
>>> x
(1, 2, 3, 4, 5, 6)
>>>
わかってるんだろうけど、listと違いtupleはimmutableなので
>>> a = (1,2,3)
>>> id(a)
1077626556
>>> a += (4,5,6)
>>> id(a)
1077607900
要素を変更したい場合は、listに変換するのが正しい方法だと思う。
次ぎのエラーの原因がわからないのですがいったい何なのでしょうか?
python2.2.3を使っています。
>>> file = open("D:\a\TEXT\memo.txt","r")
Traceback (most recent call last):
File "<pyshell#7>", line 1, in ?
file = open("D:\a\TEXT\memo.txt","r")
IOError: [Errno 2] No such file or directory: 'D:\x07\\TEXT\\memo.txt'
>>445 パス名がエスケープシーケンスでやられてる
>>446 ありがとう御座います。
どう対処すればいいのでしょうか?
/ じゃないとだめなのか。
こういう場合os.pathモジュール推奨なんじゃないの?
まーWindowsとUnixだけなら'/'で間に合うけど。
file = open(r"D:\a\TEXT\memo.txt","r") という手も蟻。
今日初めてpydoc使ってみて驚愕しました。イカす。
>>453 標準ライブラリとかでやったか?
次は自分で作成したモジュールでやって見るべし。
455 :
デフォルトの名無しさん:05/02/21 10:30:22
「もし X が 4の倍数なら」っていうのはどうやってかけばいいんですか?
for x in range(0,101,2):
print x
こんな感じになるのかなぁ。
>>455 厳密じゃないかもしれませんが、
そのまま「4の倍数なら」って書き方はできないから、
4の倍数の「4で割った余りが0」という性質をつかって書きます。
>>455 if x % 4 == 0:
xが4の倍数の時の処理
else:
そうで無いときの処理
>>457 どうせガッコの課題かなんかなんだろうから、
もったいつけてないで直接コードで教えたれや。
まさかPythonの課題などあるまい・・・
C言語スレだと絶対に宿題呼ばわりされちゃうから
意表を突いてPythonスレにしたんだな。賢いやつだ。
PythonからC言語に移植できるような賢いやつが
xが4の倍数かどうかで悩まない気が・・・。
リファレンスの、「Pythonインタプリタの拡張と埋め込み」で
所有権に関する記述があるんだけど、頭悪いせいかさっぱりわからん。
どのタイミングで参照カウントを下げればいいの?
借用した参照は、そのローカルでしか使えないの?
タプルに一つの要素ぶっこむ方法できたよーw
>>> x=(1,2,3)
>>> x+=(4,)
>>> x
(1, 2, 3, 4)
この方法ってさ、邪道ですか?
>>> 4,
(4,)
ってことに感動しただけでした。
2.4は最高ですか?
2.5最高です。
ipython最高
469 :
デフォルトの名無しさん:05/02/22 23:22:37
すいません、助けてください。
Pythonに限った事ではないんですが‥
テキストに一行ずつランダムな五桁の数字があり(総行数は一定ではない)、
上から順にテキストを読んで行き、参照している行にある数値が前10行の内、
最大の数値であれば、HIT!、それ以外はpassするスクリプトを書くとしたらどのように書きますか?
ちょっと意味不明な文章かもしれませんが、誰か知恵を下さい。
宿題じゃないことを証明せよ
nyanko=eval(str([0]*10))
def wanko(a,b):pass
for line in sys.stdin.xreadlines():
for b in nyanko:
wanko(int(line.strip()),b)
nyanko.pop(0)
nyanko.append(int(line.strip()))
内側のループはわんこの中に入れたほうが良いね。
あと1行目が意味不明。
単純に。
import sys
lst = []
for line in sys.stdin:
curNum = float(line.strip())
for n in lst:
if n == curNum:
print "Hit", curNum, lst
break
lst.append(curNum)
f len(lst) == 10:
lst.pop()
ではダメかね。
インデント失敗。
import sys
lst = []
for line in sys.stdin:
curNum = float(line.strip())
for n in lst:
if n == curNum:
print "Hit", curNum, lst
break
lst.append(curNum)
if len(lst) == 10:
lst.pop()
zlibについて質問させてください。
以下のようなコードを書きました。
#!/usr/bin/python
import zlib
f = open("test.gz", "r")
all = f.read()
f.close
all = zlib.decompress(all)
print all,
すると「zlib.error: Error -3 while decompressing data: incorrect header check」というエラーになってしまいます。
「test.gz」はgzipコマンドを使って手動で作ってファイルです。
ヘッダーが壊れているとは思えないのですが……。
もちろんgzipコマンドでは解凍することが出来ます。
お知恵を拝借させてください。
よろしくお願いします。
f = open("test.gz", "rb")
バイナリモードで開くべし
>>471,474
ありがとうございます。でもどちらも上手く行きません。
例えば
2,1,5,3,1,1,1,1,1,1,1,1,4
とあった場合(コンマ区切りは一行として)
最初の2が最大値としてスタートし、5と4がヒット。
>>474さんの場合は3もヒットしてしまいます。
自分でもいろいろ試してみましたが、完璧なものが作れません...orz
頼みます。誰かお願いします。
>>477 import sys
lst = []
for line in sys.stdin:
curNum = float(line.strip())
try:
if curNum >= max(lst):
print "Hit", curNum, lst
except ValueError:
pass
lst.append(curNum)
if len(lst) > 10:
lst = lst[1:]
>>478 完璧です!ありがとうございます!
ほんとに助かりました。
調べながらソース見て勉強させて頂きます。
480 :
R(x):05/02/23 09:56:50
>>469 def hit_max_mae_10(lst, idx): return idx and lst[idx] > max(lst[max([0,idx-10]):idx])
dataをlstで与えられ、そのidx番目の値が前10個の値と比較して大かどうかでTrue/Falseを返すと思う。
idxが0の時、無条件にFalseを返すように工夫してみた。あと、pythonらしくなるようにも。
>>480 なんか、Pythonらしいというか、Lisp風だなぁ。
>>480 ごめんなさい
俺の知識じゃ、それの使い方すらわからない。
どのように扱うのでしょうか?
483 :
745:05/02/23 12:15:20
>>475 gzip.open("test.gz")
>>480 私はLispを知らないのですけど、そうなんですか。
>>483 >>475?
hit_max_mae_10(lst, idx)のlstに、元になるテキストから作られたリストを入れてください。
例えば、こんなのです。[2, 3, 8, 1, 2, 5, 9, 8, 1, 0, 7, 9, 2, 9, 3]
で、その中でチェックしたい値の番号をidxに与えます。
例えば例のリストの9だったら、6ですね。
そしたらこの関数は、条件にあっていればTrue値、そうでなければFalse値を返します。
idxに0を指定した時は、どうしょうかと思ったのですけど、無条件にFalse値にしときました。
オマケに私の作成した時のコードを全部、貼り付けますね。
>>482 インデントを全角スペースにしたので、半角に置き換えて動かしてみてください。
import random
def hit_max_mae_10(lst, idx): return idx and lst[idx] > max(lst[max([0,idx-10]):idx])
print '- '*20
s = [random.randint(0,9) for x in range(random.randint(15,20))]
print s, len(s)
for i in range(len(s)):
if hit_max_mae_10(s, i): print 'HIT!', i, s[i]
>>484 あんたすごい。745=475ってことね・・・
エスパー決定w
>>482 どこまで分かるのかが解らないんですけんど
max()は組み込み関数で、リストの中で最大の数値を返す。
Pythonのリストはスライスって機能があって
たとえば
>>>lst=[1,2,3,4,5]
>>>lst[2:4]
[3, 4]
って感じだよ
>>480 max([0,idx-10])をする意味がよく解らんのですが・・・
>>486 それはですね、、、こうしないとこのスライスをとったときに
に例えばidxは5だった時に、lst[-5:5]ってなって、空リストが返ってしまってたからです。
>>485 できました!
これも完璧ですね。
本当に勉強になりました!ありがとうございます!
>>489 そうしないと、出来なかったのです。例えば。
>>> range(7)[-5:5]
[2, 3, 4]
>>491 frame.Show(True)
の間違いだろうね。
Pythonにはcのgetcやputcみたいに1文字ごとに入出力ってないの?
getc?: c = sys.stdin.read(1)
putc?: sys.stdout.write('!')
>>494 どうもです。
writeは知りませんでした。
496 :
デフォルトの名無しさん:05/02/24 01:57:14
ここ以外でも、python系スレで、shelveモジュールについて、話題になった事ってあるのでしょうか?
最近初めて使って、これの便利さ加減に驚愕し、もっと便利な使い方はないかなと思って。
何ソレ?
>>496 pyweblibでセッション管理に使われてますね。
重宝してます。動作の仕組みはさっぱりわからんけど…
ユーノス500
501 :
496:05/02/24 16:19:49
>>498-499 ありがとうです。見てみましたが、ほとんど分かりませんでした;;
shelveは必ず実体のあるファイルを要求するんですね、fileオブジェクトでもいいと
もうちょっとうれしかったかも。使い方の問題なのかな?
私の特にうれしいと思った点は、ちょっとの事ならDBを立てないですむ事。読む速度が早い事。
リアルタイムな書き換えの必要無い場面で、pythonのよく使うオブジェクトをそのまま入れておきたいとき便利ですよね。
またprotocol パラメタかなにかを使って、圧縮や暗号化も出来るのですか?
shelve.py を読んでみるといいよ。小さなモジュールだから簡単だと思われ。
shelve が強力なのは pickle モジュールが強力だからだね。
pickle は Python のオブジェクトを文字列に変換したりオブジェクトに
戻したりするのに使うモジュール。オブジェクトを文字列に変換できれば、
ファイルへの格納もできるし、圧縮・暗号化することもネットワーク上を
流すこともできる。shelve は pickle の有用な応用の一つというわけ。
信者ってキモイね
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| 次でボケて!!! |
|________|
∧∧ ||
( ゚д゚)||
/ づΦ
ハゲを直したい!!
>>505 ,. -──‐- 、
/ \
/ MSCB ヽ
_|==、__, --- 、 ____ l
f勹 -`l-==、 j=v'___ ヽ.|
.!L! `ー彡' ト、__゙ノV!
L.j, / `‐' -'ヽ 〃 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| ヾュェェュ,, 〉 /j < ハゲも爽快感があって気分いいですよ。
|ヽ、 ヽ二´ / \______________
_,. -''^ヽ \ /ヽ、
-‐'''´ || ヽ ヽニニr'´ `゙ヽ、
AA貼るな。荒れるから。
>>502 あれから、shelve.pyを見てみました。
小さいと言うより、ほとんど以上の処理を、他のモジュールに投げてしまってましたね。
shelveはアイデアが良かったか伝統的なのか何故か標準モジュールになってるのでしょうね。
これなら
>>498 の言うように自分の欲しい機能を実装したものを作るのも頷けますね。
独自でこれを拡張するってのもアリでしょうね。
丁度今pickleの移植中、個人的にタイムリーな話題
>>501 protocolはpickleのパラメータで、データを保存するフォーマットのバージョン番号みたいなものです。
省略時は 0 で、すべてのデータが文字列として書き込まれ、
1 や 2 を設定すると、データはpackされ、バイナリで保存されます。
データ全体を圧縮とまではいかないけど、
重複する要素は参照にして、データの実態はひとつにまとめるくらいの工夫はされてます。
オブジェクトの参照が保たれる為、循環構造も保存できます。暗号化はされません。
>>> a = []
>>> b = [a]
>>> a.append(b)
>>> pickle.dumps(b)
# marshal.dumps だと segmentation fault
で、この人がどうかしたの?
pygameについて質問ですが
spriteを動かしたら残像が残るんですがどうしたらいいでしょうか?
timedeltaってどうやったら使えるようになるんですか?
import timedelta ってしたらエラーがでるんですが。
python は2.2 2.3 2.4 入れています。
よろしくお願いします。
from datetime import timedelta
ありがとう御座います
なんかよく使い方がわからないです…。
とりあえず今日の日付をだしてほかの日付との差を出してみたいんですが、どう言う風に使えば委員でしょうか。
今日の日付の出し方もわからないんですよね…。
import datetime
d = datetime.today()
じゃだめなんですか?
ほんと基本的な質問だとはおもうんですがすいません。
なんとなくわかりました。
今日の日付はこうするんですね。
datetime.datetime.today()
この下のところでエラーが出るんですがどうしてなんでしょうか?
def quit_time():
data_file = shelve.open("data.dat", "c")
data_file["quit_time"] = "test"
print data_file["quit_time"]
raw_input("enter")
Traceback (most recent call last):
File "D:\a\TEXT\Py\going_over\going_over.py", line 192, in -toplevel-
main()
File "D:\a\TEXT\Py\going_over\going_over.py", line 190, in main
quit_time()
File "D:\a\TEXT\Py\going_over\going_over.py", line 156, in quit_time
data_file = shelve.open("data.dat", "c")
File "D:\A\UTILITIES\PYTHON\PYTHON23J\lib\shelve.py", line 231, in open
return DbfilenameShelf(filename, flag, protocol, writeback, binary)
File "D:\A\UTILITIES\PYTHON\PYTHON23J\lib\shelve.py", line 212, in __init__
Shelf.__init__(self, anydbm.open(filename, flag), protocol, writeback, binary)
File "D:\A\UTILITIES\PYTHON\PYTHON23J\lib\anydbm.py", line 80, in open
raise error, "db type could not be determined"
error: db type could not be determined
524 :
デフォルトの名無しさん:05/02/26 17:26:14
age
どうも今は教えてクンに教える気分になれねえ。
任せた。
↓
(・∀・)ウンコー
527 :
デフォルトの名無しさん:05/02/26 17:43:35
そんなこといわずに教えてくださいな。
こう見えてもdocumentationも検索したし本も見たんですからぁ。
まずエラーメッセージを声に出して読んでみろ。
529 :
デフォルトの名無しさん:05/02/26 18:29:40
やっぱりわかんないです、先生。
いろいろ調べてみたんですが↓これっすか? パイソンを再インストールすればいいんのかなぁ。なんのこっちゃわけわかんないっす。
The Suse 6.2 distro does not have dbm built in. Recompile Python but first
edit the Modules/Setup file to allow gdbm to be compiled in as a shared
library. Shelve will work but I have not been able to build Tkinter
correctly this way. So I use /usr/bin/python for Tkinter apps and
/usr/local/bin/python for shelve apps.
> File "D:\A\UTILITIES\PYTHON\PYTHON23J\lib\anydbm.py", line 80, in open
> raise error, "db type could not be determined"
anydbm.pyの80行目では何の処理をやっている?
プログラマならgoogleより先にまずドキュメントとソースを見る。
それが出来ないなら足を洗った方がいい。時間の無駄だから。
531 :
デフォルトの名無しさん:05/02/26 19:11:12
>>530 ありがとうございます。できました。
すごく勉強なりました。
そういうふうに原因を探していけばいいんですね。目からうろこでした。
プログラミング自体勉強し出してひとつきぐらいなんでそう言う風に調べていくんだってことも知りませんでした。
ありがとうございました。
openの時に'c'って指定してるのに、data.datってファイルを作って無いとか?
>>523 と、試さずに言ってるので、違ってたらスマソ
あ、sageたのに上がった!と思ったら解決でしたか。では
python について質問できるところでもっとも人が多い(レスが早い、書き込み数が多い)ところって英語のサイトも含めて何処でしょうか?
c.l.py?
2ch
537 :
デフォルトの名無しさん:05/02/27 22:22:17
初心者です。ただいまPythonをダウンロードしたばかりなんですが、
インストールした後に何をやればいいのかわからない初心者です。
ここにいる皆さんは次何をしましたか?
教えてください。
>537
とりあえずコマンドプロンプト立ち上げて
> python
って打って、手元のはじPyのサンプルをぽちぽち入力して「おー」と感心した。
おー
540 :
デフォルトの名無しさん:05/02/27 22:45:54
>>538 ありがとうございます!やってみます!
よければ皆さんのお勧めのPythonの本を教えてください。
自分もインストールした後どうすればいいのかわからなくて
本買うまで何もしなかった(できなかった)です…。
プログラミング経験が全く無いのであれば、本家サイトのチュートリアル
から始めるのがいいと思う。
その次は「Python Cookbook」かな・・・
「初めてのPython」は良書だと思うけど、何気にレベル高い。
恥py2、ほんとに初めての人はビビる値段と厚さだな
546 :
デフォルトの名無しさん:05/02/27 23:34:59
>>541>>542>>543>>544>>545 みなさんほんとにありがとうございます(泣)
他のスレだとみんなに馬鹿にされまともに答えてもらえず、騙され続けました。
本当にありがとうございました。
がんばって習得してみます!!!!!!!・゜・(ノД`)・゜・。
VB、HyperTalk、C++、Perl、Ruby とさわってきたのだが
Pythonは end や } がないのがとても不安で
トイレを流さず出てきたみたいな気がする。
# end def とか入れてたこともあった。
いつになったら、堂々と流さなくなれるんだろうか。
> # end def とか入れてたこともあった。
それやると、コメントの場所が最初から間違ってたり、
スクリプトは修正してもコメントはそのままだったりして余計に混乱するんだよね
>>534 #python-cleese
#python-gilliam
>>537へのお題
いろいろ弄って慣れてきたら、下記の物を作ってみそ
@指定URLのHTMLファイルからタイトルと『
http://』から始まるurlを全て抽出
A抽出したURLのそれぞれのページを開き、それぞれのタイトルを取得
B最初に指定したURLのタイトルでテキストファイルを作成し、
『url<>タイトル』の書式で書き込む。
読み書き処理とURL処理が出来るだけでも結構遊べるから、よかったら挑戦して見て下さい。
ところでpythonで使えるvalidationまでやってくれるXMLパーサってある?
XML Pathも使えればなおよし。
libxml2-python
PyXML
importしたfileが存在する場所のpathを知るにはどうすればいい?
inspect.getsourcefile(module)
556 :
デフォルトの名無しさん:05/02/28 12:59:39
>>550さんありがとうございます!
やってみます♪
.,/ _,/ .、、 ...、ヽ,,-、
.,,メ-‐'" _"',| .、、._,i.""│._、
._,,,/`,イ―'' ,`",l゙、、,,ジ'"`.```.|゙゛
.,,,-,i´,―--―''" 、、,!冖'"`、_、,,,/'゚,,."゙l-‐''
_,,,,,,,,,,,,,、 _,,,,,--''"`'",/゙ 、、.',j/′.、,,∠''"` .'_ヽ.',゙l.._,,、
,,-'"゙` `゙゙''lーイ"` .‐′ _,..,,/ .ヽ、,i,i´ ``゙’ 、、シ":"'.「
.,,i´ `'i、\ ゙!, ._,-'"ン'` 、、`_,/`,i´ _,___,ニ='" .'゙、゙".゙l,,-'`
.,/′ `'i,\ ′ .,,,,-',,,,、.,i´、_:_'_v`"゙i、| ```` ` 、_,Jィ""゙l, _,,,,、
: ,i´ ゙l. ヽ丶 .r‐'"、.l゙、、:,p=l┴丶 .!,,! `'"''''''冖''?'''゙~."""'."'/゛ `
: |,,r ゙l, 、 i、、、、:,,_,xl!ヴi,、 、、っ,,,, 、`',,,,、`、`、|、
|、 、"| .i、 lrr-''"゙,,ハ;、-'"゙゙'''''''"丶ヽ.,,冫``~`"`"~"``` `/ `''''
`''r,,、 、 、、 .、丶、.``ヽ,レ"° `` .j゚'=∠、````,,,,,∠ ~'ヽ```````、_,r‐'ヘi、
`゙'ーi,,_、、、、、: :._,,,r〃 " /^゚"'广 ,/ .,/゙゙゙'''ヶ―''''″ `
`゙^""""''"'" ` ′ ′ ."
ぱいちんこ
>>547 インデントが滅茶苦茶になったら (そんなケース無いけど) どうしよう,
とは思います.lisp ならカッコのお陰で emacs がちゃんとやってくれるんですが.
でも,結局は「馴れ」なんですよね.
>>558 emacsならpython-modeがpythonのソースの中にあるからそれを使えば、
努力次第ではキミもぱいちんこ、と言いたいところだけど、
>>559 python 付属の python-mode はちょっと古くて PEP318 対応(decorator)がないよ
>>561 そうなのか。
デコレータ使ったことないから俺は問題ないけどな。
っていうか使用例があるなら知りたいね、デコレータ。
>>558 慣れですむかよ。
インデントが失われたら、機械的には元に戻せないんだぞ。
>>563 インデントが失われるってどんな状況ですか?
565 :
デフォルトの名無しさん:05/02/28 17:27:47
(・∀・)ニヤニヤ
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* !!!!!!!IF YOU CHANGE TABS TO SPACES, YOU WILL BE KILLED!!!!!!!
* !!!!!!!!!!!!!!DOING SO FUCKS THE BUILD PROCESS!!!!!!!!!!!!!!!!
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
>>556 あとお勧めのエディタはJmEditor
もしかして: Mediator
569 :
デフォルトの名無しさん:05/02/28 17:54:53
(・∀・)ニヤニヤ
>>563 いえ,失われないように編集できるように馴れましょう,ってことです.
コードをコピペするな
高性能なリファクタリングブラウザ作ってから言え
573 :
デフォルトの名無しさん:05/02/28 18:35:50
(・∀・)ニヤニヤ
インデントが失われたら機械的に元に戻せないなんて、
"}"や"end"が失われたら機械的に元に戻せないのと
同じ位にしか危機感を感じませんが、皆さんはどうですか?
>>555 ごめん、importしたfileじゃなかった。あるclassを定義してるmoduleがあるん
だけど、そのmodule自身が存在する場所のPathを知りたいんです。importした
fileだとそれでうまくいったんだけど、自身のmoduleをどう指定したらいいか分
からん。inspect.getsourcefile(self)だとerror出るし。自身のmoduleを指定
する識別子ってある?
>>> import os
>>> os.__file__
'C:\\Python23\\lib\\os.pyc'
[foo.py]
class A:
def __init__(self):
m = __import__(__name__)
print m.__file__
[IDLE]
>>> import foo
>>> a = foo.A()
C:\Documents and Settings\Super Hacker\My Documents\foo.pyc
>574
ネタにマジレス超クール
Python コードは Python IDE 上で弄ぶのが通。
>>574 空白と、} や end などの文字列では失う可能性がまるで違う。
>>580 物がソースコードって事を考えると、空白だろうがそうでなかろうが、
1byteでも失った時点でどうかしてると思うよ。
582 :
デフォルトの名無しさん:05/02/28 22:05:02
>>567さんありがとうございます!!
挑戦してみます!!(^ヮ^)
自分はPy厨だから戻れないけど、一般的な感覚のプログラマなら、
インデントを失う可能性に嫌悪感というか危機感をもつのが通常だろうね。
>>583 rubyのendどれと対応してるのかわからなくなるので
endが消えるとめんどい。Pythonは、その危険性がどの行にも
あるようなもんかな。
〃〃∩ _, ,_
⊂⌒( `Д´) < インデント消えたらヤダヤダ!
`ヽ_つ ⊂ノ
ジタバタ
〃〃∩ _, ,_
⊂⌒( `Д´) < Pythonでも消えたらヤダヤダ!
`ヽ_つ__つ
ジタバタ
_, ,_
(`Д´ ∩ < JavaでもLispでもヤダヤダ
⊂ (
ヽ∩ つ ジタバタ
〃〃
〃〃∩ _, ,_
⊂⌒( つД´) < Cでもヤダヤダ
`ヽ_ ノ ⊂ノ
ジタバタ
∩
⊂⌒( _, ,_) < ヤダヤダ…
`ヽ_つ ⊂ノ
ヒック...ヒック...
∩
⊂⌒( _, ,_)
`ヽ_つ ⊂ノ zzz…
>>576 そのようにimportされたmoduleならinspect.getsourcefileで得られるので
問題ないです。実行中のmoduleから自身のpathを得る方法が分からないんです。
>>577 __import__(__name__).__file__で得られました。thanks
藻前らが愛用してるヴィジュアライゼーション・アイテムを教えてください.
超クールなプロット,グラフが出せるやつをお願いします.
>>588 Microsoft Excel。win32com でウハウハ。
まやび
matplotlib
PyX
PyQtのQCanvasで自前で描画
>>589-593 親切にありがとう! #(本当に愛用してい(ry
unix でも windows でも使いたいということで,win32 バイナリのある
まやびと matplotlib を試してみます.
どちらも動作はあまり軽くないですね...
>>588 ctypes ってことですか?
メモ: matplotlib 試用中...show() すると window を閉じるまで次の処理ができないorz
>>594 > ctypes ってことですか?
これはどのレスに対する問いだ?(エスパーの俺にも分からん)
今更だけど書けました(文章自動生成)。自分のレスを見返すと恥ずかしい・・・
>>596 レス番号ミスでした.
>>589 の win32com にレスシマシタ.
matplotlib は deb を apt でインストールしたところ,
pygtk が使われているみたいです.
これと show() しないと表示されないのと関係あるのでしょうか?
敗北者な私でも機能が少ない Gnuplot-py からは脱脚したいものです.
.matplotlibrcでbackendをGTKAggからTkAggとかに変えてもだめかな?
俺windowsだからよくわからんけど
>>599 backend 変わりました! でも show() しないと出てこないのは相変わらずです.
インタラクティブに操作したいときは困りますよねぇ...
>>598 > レス番号ミスでした.
>>589 の win32com にレスシマシタ.
http://starship.python.net/crew/mhammond/win32/ >>> import win32com.client.dynamic
>>> app = win32com.client.dynamic.Dispatch("Excel.Application")
>>> book = app.Workbooks.Open(r"C:\Documents and Settings\Super Hacker\My Documents\mona.xls")
>>> sheet = book.Worksheets(1)
>>> sheet.Cells(1, 1).Value
u'mona'
>>>
のよーに Excel などの Windows アプリ(COM鯖)を Python から操作できる。
あ…
同じく.matplotlibrcでinteractiveをTrueにしてみて
>>602 show() しなくてもできました! 手取り足取りありがとうございました.
これからガンガン試してみます.
人生の敗北者は「まやび」をMayaViと変換できなさそうだな
orz
605 :
デフォルトの名無しさん:05/03/02 02:37:57
(・∀・)<u"\u041d\u0423\u0420\u0423\u041f\u041e"
(´-`).。oO(ふつーはRPyを使うだろうに・・・
何か処理を行おうとして、それが
組み込み関数やらで用意されているか
自分で作らなくてはならないか
どうかの判断はどのようにすればよい?
ライブラリのリファレンスをざっと見て、どこになにがあるかの内容を把握しとけ。
それも言語習得の一過程。
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいちんこぱいちんこ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいちんこ!
ぱいちんこ〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
>>607 (1)とりあえず具ぐる。
標準ライブラリにあるものは当然リファレンスのページが見つかる。
「こーゆー処理がやりたいんだけど」的なML・掲示板のやりとりも見つかる。
誰かが作った便利なモジュールも見つかる。
(2)見つからなければML・掲示板で聞く。
要求を具体的に書く。それが後に誰かが検索したときの役に立つ。
(3)それでもダメなら存在しないと諦めて自炊する。
具ぐるときのキーワードを選ぶ(探す)のが意外と難しいわけだが、
それはまた別の話。
Pythonソースコードを見ればどんなモジュールがどういうふうに使われているのかが分かるよ。
Pythonで、別のフォーマットのファイルを
XML にして書き出すのって何を使えばいいのでしょうか?
自分でタグを print してもいいのですが、もっといい方法があれば教えてください。
DOM ツリーをこさえて .toxml() とか。
invalid な文書を吐く心配がない点がメリット。
反面、禿しく面倒くさい。折れならやらん。
dictionary で
d = {("a","b"):"c"}
としたとき
"a" だけをつかって "c" をよびだすこってできないんでしょうか?
見つかるまで全ての要素を回せば?
>>615 要素が一つだけじゃ、なんとも言えない気がする。
d = {("a","b"):"c", ("a","d"):"e"} は無いってことか?
d = {("a","b"):"c", ("d","a"):"e"} はありうるのか?
>>617 今のところはないとおもいます。
まわすってのは
keys = d.keys()
for key in keys:
for element in key:
if elemtnt = "a":
destination = key
d[destination]
てなかんじですか?
なら素直に
d = {"a":("b","c")}
とか
d = {"a":(("a","b"),"c")}
にしと毛。
620 :
デフォルトの名無しさん:05/03/02 22:23:57
>>617のようになるとして、
{'a': {'b': 'c', 'd': 'e'}}
としたらどうか。
>>615
>>618 はげしくtypoだらけだが、まあそんなとこじゃないかな
{"n": {"u": {"l": {"l": {"p": {"o": {}}}}}}}
皆さんありがとう御座います
>>619>>620>>622 そっか辞書の中に辞書をいれてもいいんですね。
そう言う風にした場合
d = {("a","b"):"c"}
のbの検索は出来なくなりませんでしょうか?
たとえば
{("本","ほん"):"本の意味"}
というような感じにしたいんですが別々に登録({本:ホンの意味、ほん:ホンの意味})しないでなにかうまい方法ありますか?
>>623 本質的には別々に登録するのと同じだけど・・・
d={}
d.update(dict.fromkeys(("本","ほん"),"本の意味"))
d.update(dict.fromkeys(("紙","かみ"),"紙の意味"))
ちなみに
d.update(dict.fromkeys(("神","かみ"),"神の意味"))
とやると、"かみ"が上書きされてしまう
>>623 要するにキーと値の対応関係が N:1 の辞書を作りたいってことだな。
いろいろ方法があると思うけど、こーゆーのはどうだろう。
$ cat smartdict.py
class SmartDict(dict):
TEXT, LINK = "text", "link"
def lookup(self, key):
type, value = self[key]
print "*** key: %s => type: %s, value: %s" % (key, type, value)
if type is self.LINK:
return self.lookup(value)
return value
if __name__ == "__main__":
d = SmartDict({
"neko": (SmartDict.TEXT, "a cat"),
"giko": (SmartDict.LINK, "neko"),
})
print d.lookup("neko")
print d.lookup("giko")
$ python smartdict.py
*** key: neko => type: text, value: a cat
a cat
*** key: giko => type: link, value: neko
*** key: neko => type: text, value: a cat
a cat
626 :
デフォルトの名無しさん:05/03/03 01:04:12
辞書を2つで、こんな感じはどうか?
oya_dct = {'猫': 2, 'かみ': 1, 'ネ申': 1, 'ぬこ': 2, 'ねこ': 2, '神': 1}
ko_dct = {1: '神の意味', 2: '猫の意味'}
先に断っておけば良かったが、この形の辞書は作るのや更新するのが大変かも知れない。
>>627 >>626の例に追加で 'neko': '猫の意味' を加えようと思ったら、どうしても
'猫の意味'から ko_dct のキー 2 を探し当てないといけないので、適当にキーを付けるのは良くなさそう。
こんなときにhash(hmacモジュール?)とか使うといいのかな?私にはわからんのだけど。
629 :
デフォルトの名無しさん:05/03/03 05:20:57
>>> lst = [1,2,5,4,3]
>>> max(lst)
5
>>>
という風にリストの最大値は取り出せるけど、
最大値の位置を求める方法はありますか?
例えば上の場合は『2』になるような…
すまん。自己解決しました。
lst.index(max(lst))
で出来ました。
そこでまたブチ切れですよ。
>>623 short answer: use RDB
long answer:
Pythonでは、文字列はimmutableなオブジェクトなので、
同一の文字列は内部でひとつにまとめて参照される為、
漢字とひらがなそれぞれ辞書に登録しても, indexを参照するのとたいして変わらない.
つまり、下のように別々に登録した場合でも、
dct['猫'] = '猫の意味'
dct['ねこ'] = '猫の意味'
同一スコープ内で、(例の場合)'猫の意味'はどちらも同じメモリ上のデータを指す.
ひらがなキーで重複する場合は、どうするのかしらないけど、
漢字<=>ひらがなの関連を保持したい場合、効率良く探索する為には別のテーブルに定義するといい。
値を変更する可能性があるなら、適当なオブジェクト作って参照を登録するようにする
class WordDefinition:
def __init__(self, desc):
self.desc = desc
# object は mutableなので, 必ず同じ参照を登録するように注意.
>>> d['猫'] = d['ねこ'] = WordDefinition("猫の意味")
>>> d['猫'].desc = '猫の意味2'
>>> d['ねこ']
'猫の意味2'
普通は long answer の要約 == short answer となるように書くものだと思うのだが・・・・
(*´д`*)ピチョン♥
↓
Σ(゚д`*;)ピッ,ピチョッ♥
↓
Σ(*゚Д`;)ピ…ピ…ピッチョォォォォォォォン♥!!!!
↓
(*´д`;)…
↓
…(*´д`)ピチョン…♥
>>632 すごっ、私にはそこまでは考えられなかったなぁ。dictについてもそこまで知らなかったなぁ。
> dct['猫'] = '猫の意味'
> dct['ねこ'] = '猫の意味'
>
> 同一スコープ内で、(例の場合)'猫の意味'はどちらも同じメモリ上のデータを指す.
誤解を招きそうな表現だな。確かに同じ文字列リテラルは一つにまとめられるが…
>>> a = "abc"
>>> b = "a" + "b" + "c"
>>> a == b
True
>>> a is b
False
Pythonのメモリアロケーションの詳細が良く分かるドキュメント(英語)を探しています。
>>> a = "abc"
>>> b = intern("a" + "b" + "c")
>>> a is b
True
>>> help(intern)
Help on built-in function intern:
intern(...)
intern(string) -> string
``Intern'' the given string. This enters the string in the (global)
table of interned strings whose purpose is to speed up dictionary lookups.
Return the string itself or the previously interned string object with the
same value.
書くの忘れたけど、
> 文字列はimmutableなオブジェクトなので、
と
> 同一の文字列は内部でひとつにまとめて参照される為、
も意味が繋がってない。
後出しでジャンケンに負けたヤシをそこまで追い込まなくても・・・(藁
642 :
デフォルトの名無しさん:05/03/04 09:58:12
>>632の最後の2行だけど、こう出るよね。
>>> d['ねこ']
<__main__.WordDefinition instance at 0xXXXXXXXX>
これだけでなくて、いろいろ怪しく見えてきた。
「同一スコープ内で」というのも間違いでは?
645 :
645:05/03/04 22:41:11
FreeBSD (4.8-RELEASE)のマシンにPython-2.4を(ソースコードから)インストールし
ようとしています。
/usr/local/Pythonにインストールするため、
% ./configure --prefix=/usr/local/Python
% gmake
を実行したのですが、途中で
building '_hotshot' extension
gcc -pthread -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -pg -fno-strict-aliasing -I. … -c …/Modules/_hotshot.c -o build/temp.freebsd-4.8-RELEASE-i386-2.4/_hotshot.o
gcc -shared -pg build/temp.freebsd-4.8-RELEASE-i386-2.4/_hotshot.o -L/usr/local/lib -o build/lib.freebsd-4.8-RELEASE-i386-2.4/_hotshot.so
*** WARNING: renaming "_hotshot" since importing it failed: build/lib.freebsd-4.8-RELEASE-i386-2.4/_hotshot.so: Undefined symbol "fgetc"
というのが出てきます。一方、
building 'array' extension
gcc -pthread -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -pg -fno-strict-aliasing -I. … -c /…/Modules/arraymodule.c -o build/temp.freebsd-4.8-RELEASE-i386-2.4/arraymodule.o
gcc -shared -pg build/temp.freebsd-4.8-RELEASE-i386-2.4/arraymodule.o -L/usr/local/lib -o build/lib.freebsd-4.8-RELEASE-i386-2.4/array.so
building 'cmath' extension
の 'array' extension のように、何のエラーも出ないものもあります。
1. portsを試す。
2. もしダメなら古いバージョンのportsを試す。
3. もしビルドできたら野良ビルドとの違いを調べる。
リンク時(gcc -shared …)に、最後に -lc を付けたら大丈夫っぽいです。意味
が分かりません…。
% env LD_LIBRARY_PATH=/…/Python-2.4:/usr/lib ./python
Python 2.4 (#1, Mar 4 2005, 16:41:41)
[GCC 2.95.4 20020320 [FreeBSD]] on freebsd4
Type "help", "copyright", "credits" or "license" for more information.
>>> import math
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: /…/Python-2.4/build/lib.freebsd-4.8-RELEASE-i386-2.4/math.so: Undefined symbol "fabs"
>>> ^D
%
-lcを付けると
>>> import math
>>>
となり、 ImportError: … のエラーは表示されなくなるんです。
>648=645
いやその。藻前さんが645に書いた警告に対処する一番直球な方法が
>最後に-lcを付ける
ってことなんだが。「fgetc()なんてねーぞゴルァ!!」とお怒りのリンカに
「ここにあるYo!」ってlibc.aを明示的に渡してやっている(リンカオプションに-lcを追加)という図式。
うーむ、Cのプログラムコンパイルしたことのない人間にはソースからのインスコってのは
まだまだ難しいもんなのか。
>>649 -lcを付けなくてもうまくいく場合があることがあるんですよ。例えば
'cmath' extension のソースコード cmathmodule.c ではfabs()が使われているにもかか
わらず、エラーが出ない。
>>650 ライブラリやプログラムをビルドするときに -lc を付けなくてもよいのは
なぜですか?
-lcを付けなかったこと自体が直接の原因というわけではなかろうに。。
'math' extensionでも fabs() で '_hotshot' extension と同様のエラーを出すけど、リン
ク時にはきちんと -lm が追加されていたのでね。
それともう一つ、
*** WARNING: renaming "…" since importing it failed: …
が表示されるのはコンパイルとリンクが完了した「後」です。
>>645で出した例が悪かったですかね。('_hotshot',fgetc,-lc)だけだとあいまいだ
が、
>>651('math',fabs,-lm)を見ると
>>649は(申し訳ないが)的外れ決定ですな。
まぁ、いくらイライラしても、会ったこともない人に対して
>>649 > Cのプログラムコンパイルしたことのない人間には
などと罵る人間にはなりたくないもんだ。
>>654 まあ餅つけや。
649みたいな分かったつもりになってるジジイは放っとけ。
ところでバグ虎はもう見た?
未知の障害で再現性があるなら報告しる。
ドキュメントに名前が載る(かも知れない)チャンスだ(笑
>>654 別に649は罵ってるようには読めないけどな。
ほとんど読まずに書き込むが、
warningの一つや二つ出たっていいじゃん。
>>656 ごめん。よくなかったのね。
本当に全然読んでませんでした。
>>655 http://www.python.org/dev/にある「Bug Tracker」のことですね。初めて見ました。
configureスクリプトの --disable-profiling が働かない(--enable-profilingを指定した
のと同じ状態になる)というのも、まぁバグの一つでしょうね。Bug Trackerを
ざっと眺めてみたところ、そういう報告は上がっていないようですね。
>>656 > warningの一つや二つ出たっていいじゃん。
今回の件の場合、この WARNING が意味するのは、importできない=そのextension
が使えないということなんですよね。
# (Pythonに限らず)コンパイル時に警告が出るというのであれば、危険はあっ
# ても使えないことはないのですがね。(そっちの方の警告は見なかったこと
# にしてたことが多いなぁ (゚∀゚;)
使えないのが、確認しただけで6つもあるんです: _hotshot, math, time, datetime, zlib, bz2
まぁ、
>>653氏推薦の本を読んでいくと何か分かるかもしれませんね。
ありがとうございました。
あれ、reloadしてたけど
>>657見えなかった。(^^;
654を読んで( ゚д゚)ポカーン
>会ったこともない人に対して
2ch以前の問題として、ネットの掲示板で何言ってんだ? このバカは?
>>645 UNIX板から粘着しにきました。
意地でもportsを使わずに野良buildして失敗して質問する人が私の会社にも
いますが、そういうこだわりの背景には何があるんでしょうか。その人にも
質問したんですが、ごまかすだけで筋の通った返答をもらったことはないです。
>>658 ところで、pythonはlibc_r(libcのreentrant版)にリンクしているんだけど、
FreeBSD 4.8-RELEASEのlibc_rってfgetcとか入ってないの? -lcをつけ足すと
エラーが出なくなるということはそういうことよね。
$ objdump -T /usr/lib/libc_r.so | grep fgetc
これを実行すると「*UND*」とか出る?
FreeBSD portsについて補足だけど、これは別に「楽をできる」とかいうだけ
じゃなくFreeBSD特有で必要になる修正や変更のうち、開発元(python.org)へ
フィードバックが必要(または開発ツリーにのみ取り込みずみ)だけどまだ
リリース版には反映されていないような変更を吸収する働きもあるんだよ。
(他のOSでも似たしくみがあると思うけど) あと各人が野良buildして同じところで
ハマるのって時間の無駄でしょ?
>>663 % objdump -T /usr/lib/libc.so | grep fgetc
0001e1ec g DF .text 00000069 fgetc
%
でした。
# 「*UND*」って "UNDefined" から来てるのか。このファイルでは定義されていない
# けど、別のところで定義されているのを利用しているよ、みたいなことです
# かね。
> まだリリース版には反映されていないような変更を吸収する働きもあるんだ
> よ。
files/以下にあるpatch-*とかですよね。あれは私もよく参考にさせていただい
てますよ。勉強になりますから。
Pythonに関しては、2.4では修正されていない PSF-2005-001 の件もportsではパッ
チとして提供されてますね。
>>664 >>663さんの指摘によれば
/usr/lib/libc.so じゃなく
/usr/lib/libc_r.so なのでは。
fgetc() とか fabs() って環境によってはマクロになってそうだね。
エラーの原因は分からないけど、コンパイル時に使うヘッダとリンク時に使う
ライブラリが正しく対応していないんじゃないかなーと何となくオモタ。
(コンパイラが複数入っていたりすると割とありがち)
うわ、すみません。。両方コピペするつもりだったんですが…
% objdump -T /usr/lib/libc_r.so | grep fgetc
0002504c g DF .text 00000069 fgetc
%
> fgetc() とか fabs() って環境によってはマクロになってそうだね。
マクロになってる可能性があるのはfgetc()ではなくてgetc()の方ですね。こち
らの環境(FreeBSD 4.8-RELEASE)ではgetc()はマクロになっているようです。
> エラーの原因は分からないけど、と何となくオモタ。
> (コンパイラが複数入っていたりすると割とありがち)
利用したコンパイラはすべて /usr/bin/ にあるもの(gcc 2.95.4)です。という
わけで、今回の件に関しては、
> コンパイル時に使うヘッダとリンク時に使うライブラリが正しく対応し
> ていないんじゃないかなー
の可能性は低いかと。
スレ違い
pythonを勉強しようと思い、
ttp://www.python.jp/Zope/introを見つつ手をつけはじめたところなんですが、
早速つまずいてしまいました。以下、上記サイトより。
簡単なPythonスクリプトを動かして見ましょう。
print "Hello World!"
リスト 1: greeting.py
リスト 1 の greeting.py をエディタで作成し、次のようにして起動します。
%python greeting.py
Hello World!
見事にご挨拶が返ってきました。 Python はスクリプトファイルを読みこんで実行するだけでなく、対話モードで使用することもできます。
をやってみようと思い、まずはhelloworld!。しかし次のリスト1のgreeting.pyをエディタで作成し・・・
エディタってなんでしょうか?上記内容をそのまま入力するとエラーが出ます。
それと、入力する際改行はどうやって入れるのでしょうか?
プログラミング自体が全くの初心者、いやそれ以前の段階なので、釣りではないです。
よろしくお願いします。
h = httplib.HTTP(host)
h.putrequest('GET', path)
h.putheader('Accept', 'text/html')
h.putheader('Accept', 'text/plain')
h.endheaders()
errcode, errmsg, headers = h.getreply()
これでyahoo.co.jpにアクセスするとerrcode==200なんですが
google.co.jpにアクセスすると302となってしまいます。
回避策などありますでしょうか?
頭おかしいんじゃないの?
>>668 エディタで作成っていうのは、Windowsだったらメモ帳とかワードパッドで先に書いて、
greeting.pyって名前で保存して実行するってこと。
あと他にもプログラミング向けのエディタとかもあるから、victorで探していろいろ
試すと良い。
それと対話モードってのが一行ずつ入力、実行していく方法(簡単な計算等に使用)
コマンドプロンプトでやる場合は『ファイル名を指定して実行』からcmdを入力。
『python』って入力するとpythonが起動する。
そこから『print helloworld!』と入力すると>>helloworldとなる。
>>671 おおなるほど!
ありがとうございます。
>>669 よく判らないけど、
httplib.HTTPConnection(host)
でやってみたらどう?
>>668 ようこそ(笑)
>>669 302 Found の場合、改めて参照すべき URL が headers["Location"] に
書いてある。その URL に対してもう一度 GET リクエストを出せば OK。
詳しくは RFC 2616 あたりを読んでちょ。
あのソースはどこかで拾ってきたものなのですが、
オンラインのリファレンスを見たら
>>673さんの言う
HTTPConnectionを使ったやり方が書いてあり、そちらでやったら
302とならず200を返してくれました。
あのソースは原始的なやりかたっぽいですね。
>>674 ttp://www.studyinghttp.net/status_code#Code302 調べたらこーいうのが出てきて概念は理解できました。
あのソースを使った場合の回避策も理解できましたが
手間いらずのHTTPConnectionを使おうと思います。
回答いただきありがとうございましたm(_ _)m
.,/ _,/ .、、 ...、ヽ,,-、
.,,メ-‐'" _"',| .、、._,i.""│._、
._,,,/`,イ―'' ,`",l゙、、,,ジ'"`.```.|゙゛
.,,,-,i´,―--―''" 、、,!冖'"`、_、,,,/'゚,,."゙l-‐''
_,,,,,,,,,,,,,、 _,,,,,--''"`'",/゙ 、、.',j/′.、,,∠''"` .'_ヽ.',゙l.._,,、
,,-'"゙` `゙゙''lーイ"` .‐′ _,..,,/ .ヽ、,i,i´ ``゙’ 、、シ":"'.「
.,,i´ `'i、\ ゙!, ._,-'"ン'` 、、`_,/`,i´ _,___,ニ='" .'゙、゙".゙l,,-'`
.,/′ `'i,\ ′ .,,,,-',,,,、.,i´、_:_'_v`"゙i、| ```` ` 、_,Jィ""゙l, _,,,,、
: ,i´ ゙l. ヽ丶 .r‐'"、.l゙、、:,p=l┴丶 .!,,! `'"''''''冖''?'''゙~."""'."'/゛ `
: |,,r ゙l, 、 i、、、、:,,_,xl!ヴi,、 、、っ,,,, 、`',,,,、`、`、|、
|、 、"| .i、 lrr-''"゙,,ハ;、-'"゙゙'''''''"丶ヽ.,,冫``~`"`"~"``` `/ `''''
`''r,,、 、 、、 .、丶、.``ヽ,レ"° `` .j゚'=∠、````,,,,,∠ ~'ヽ```````、_,r‐'ヘi、
`゙'ーi,,_、、、、、: :._,,,r〃 " /^゚"'广 ,/ .,/゙゙゙'''ヶ―''''″ `
`゙^""""''"'" ` ′ ′ ."
ぱいちんこ
>>677 おおかた脳味噌にチンポでも生えているのだろう。
>>677 ばいちんこって何?
ウィルスか何かですか?
みなさん
else:
pass
は使用しますか?
YES とも NO とも答えられるね。ダメじゃん。
それもだけどtry:のfinallyも私は使わないね。
>>680 forのelseはたまに使うけど。
>>680 else:
pass
# print "OK"
みたいにブロック内をコメントアウトしたときに使うぐらいかな。
>>683 違いがあったとしても問題にならない程度だと思われ。
訂正。こうでした。
else:
# print "OK"
pass
こう書くと Emacs の python-mode で自動インデントがうまく働くのでした。
較べてみよう。
>>> from dis import dis
>>> disassemble = lambda src: dis(compile(src,"","exec"))
>>> disassemble("pass\n" * 100)
>>> disassemble("if n: func()\n")
>>> disassemble("if n: func()\nelse: pass\n")
ちょっと質問があるのですが、
海外の現地時刻を計算するのはどうやるの?
夏時間も考慮してやるには?
教えてください。
自己解決しました。
pytz ( World Timezones for Python)ってがあったので
それを使いました。
>>679 Python使っているくせに、ぱいちんこも知らないのか?
もぐりだな。
692 :
デフォルトの名無しさん:05/03/07 18:45:58
∧ ∧
|1/ |1/
/ ̄ ̄ ̄`ヽ、
/ ヽ
/ ⌒ ⌒ |
| (●) (●) |
/ |
/ |
{ |
ヽ、 ノ |
``ー――‐''" |
/ |
| | |
.| | | |
.| し,,ノ |
!、 /
ヽ、 / 、
ヽ、⊂、 /ヽ.ヽ、
| | | ヽ.ヽ、
(__(__| ヽ、ニ三
ムーミンがぱいちんこに興味を持ったようです
お前らRubyスレ池よ。あっちなら歓迎してくれるぞ。
ところでこのムーミンのAAは、なぜ他のキャラでなくムーミンが選ばれたのだろうか。
695 :
デフォルトの名無しさん:05/03/07 20:05:27
__,,,,_
/´  ̄`ヽ,
/ 〃 _,ァ---‐一ヘヽ
i /´ リ}
| 〉. -‐ '''ー {!
| | ‐ー くー |
ヤヽリ ´゚ ,r "_,,>、 ゚'}
ヽ_」 ト‐=‐ァ' ! < ぱいちんこ、ぱいちんこ
ゝ i、 ` `二´' 丿
r|、` '' ー--‐f´
_/ | \ /|\_
/ ̄/ | /`又´\| |  ̄\
皇太子様までがこのスレ、とゆーかぱいちんこに興味をお持ちになったようです。
>>693 .._ .......、._ _ /:/l! まぁまぁ。
:~""''.>゙' "~ ,、、''‐'、| ここで歓迎するくらい余裕を持ちましょうよ。
゙、'、::::::ノ:::::::_,.-=. _〜:、 /_.}'':, こころの狭いスレだと思われますよ。
``、/:::::::::__....,._ `゙'Y' _.ェ-、....._ /_゙''i゙ノ、ノ
,.--l‐''"~..-_'.x-='"゙ー 、`'-、 ,:' ノ゙ノブ
" .!-'",/ `'-‐'') /\ `/ でノ-〈
.-''~ >'゙:: ‐'"゙./ ヽ.,' ~ /
//::::: ', / ,:'゙
Pythonなんて使ってる奴はこころ狭いだろ。
クズどもばっかりだからな。
な
っかり
て て
か か
あったま
排泄器としてしか使ってないからOk
そんな悲しいことをいうな
排泄器と生殖器を兼ねるんだから、ちんこはたとえるならpickle並のすごい働き。
ぱいチンコびろーん
∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
708 :
デフォルトの名無しさん:05/03/09 11:33:21
pythonにずっと計算させてると、CPUが常に100%になってしまいます。
CPU使用率を制限させる方法はありますか?
Pythonに限った話じゃないと思われるのでスレ違い(とゆーか板違い)。
とゆーか使っているOSの名前も出さないなんてエスパー募集ですか?
710 :
デフォルトの名無しさん:05/03/09 12:19:35
>>708 演算量が多ければ当然の動き。計算の所要時間が延びても構わないのか?
>>CPU使用率100%
所詮はCPUの自己申告。本当はたっぷりサボってるんだから気にせずガンガン叩いてOK!
>>709 ごめんなさい、OSはWinXPです。
>>710 構いません。バックでゆっくり計算してもらいたいです。
ソースをどうこうして実現するのは不可能でしょうか?
できるか
ループのよく通る場所にtime.sleep(0.1) とか入れとけ。
>>716 優先度の制御はOSに依存した話であってpythonの話じゃないだろ。
Windowsは知らないがUNIXならniceコマンドの仕事。
(´-`).。oO(なんの計算なんだろう・・・
さすがは敗北者スレ
721 :
デフォルトの名無しさん:05/03/09 17:03:45
なんかいかにも就職活動中って感じの女子大生が真昼間の
ファーストキッチンで胸とかバンバン揉ませてるわけ。同じ年くらいの
男子大学生ぽい奴に。しかもスーツの内側に手入れて直で揉んだり
してるわけ。なんか女のほうも廻りを気にしながらも小声で
笑ったりしてるわけ。「ヤダァ♪」とか言いながら。
俺は思ったね。お前ら独身中年なめんな、と。お前らのすぐ隣に座ってる
俺はお前らの様子見ながら正直、勃起してんだよ。ていうか信じられないよ。
素人同士で金のやり取りもなく胸揉むなんてよ。俺はヘルスで平均40回ぐらい
揉むわけ。12,000円で40モミ。1モミ300円。俺はそいつら見ながら「あ、300円」
とか「また300円」とかカウントしてたわけ。で、そのカウントが6,000円ぐらいに
達した時、突然こみ上げてきたわけ、嗚咽が。押さえ切れないほどの憤怒が。
で、声に出して泣き出しちゃったわけ。真昼間のファーストキッチンで。独身中年が。
急に声をあげて泣き出した俺を珍獣でも見るように一瞥した挙句、クスクス笑いながら
店を出ていくそいつらの後ろ姿を見ながら俺は思ったわけ。これはもう階級闘争だ、と。
謂なき触穢の鉄鎖に蹂躙された日陰者の人権は闘争によってしか解放されないのだ、と。
そんなわけで俺は闘うわけ。ここに常駐するグズなお前らも闘え。取り戻せ。矜持を。
_
/,.ァ、\
( ノo o ) ) 空
)ヽ ◎/(. 気
(/.(・)(・)\ . 嫁
(/| x |\)
//\\
. (/ \)
>>717 winだとstartだね。
winアプリだとアプリ側で制御することも多いけど。
>>724 start /low hoge.exe とかすればいいんかな? 勉強になった。サンクス。
UNIXでもRC5アタック等のクライアントのように「皆さんのお仕事の邪魔は
いたしませんので、ええ」なんつーものはアプリ側で制御することもあるね。
os.nice ってのがあるけど、 availability: UNIX って書いてあるから
Windowsではダメっぽいねえ。cygwin版なら使えるのだろうか?
なんでヤシは人に自分の探し物をさせるんだ?
文字列の文字コードについてMS932 --> UTF-8 変換をやりたいのですが、
hoge = unicode(strings,"MS932")
この時点で
UnicodeError: MS932 decoding error: invalid character 0xa03b
と言われ、一文字ずつ切り出していったら
UnicodeError: MS932 decoding error: truncated string
と言われてしまったのですが
何かよい回避策はありますでしょうか…
>>725 cygwin版で試してみたよ。
os.nice(1)ってやったらプロセスの優先度が「通常」から「低」に下がってた。
os.nice(-1)で上げるのも問題なし。
ついでにwin版でも試してみたけど、こっちは「no attribute」でエラーでした。
>>727 unicode関数の引数errorsを使ってみては?
[0xa0 0x3b] というバイト並びは、通常のShift JISエンコーディングなテキストではありえない不正な文字列だが、
それを承知で、できる範囲でテキトーに変換したいのならunicode()の第3引数に"ignore"なり"replace"を指定すればよい。
みんなエディタなに使ってる??
xyzzyのpy-mode + キーワード補完。
簡単なテストはipython。
QtのWindows版がフリーになったらQt製のエディタを試す予定。
>>729-730 errorsの記述で一部でもやり過ごせるかと思いきや、文字列全体が文字化けしてしまって…
本当にShift_JISにあるまじきデータのように思われます。
それならそれで別の策を考えなきゃ…レスいただきありがとうございました。
コモンセンスを啓蒙してもらうのにすら論理が必要だと思っている奴は新興宗教でも立ち上げろや(プ
737 :
デフォルトの名無しさん:05/03/11 00:06:37
739 :
デフォルトの名無しさん:05/03/11 21:17:49
突然ですが、正規表現を使って文字列をヒットさせて、置換させるようなメソッドってないでしょうか?
文字列のReplaceにreを上手く組み合わせると出来ます?
740 :
739:05/03/11 21:23:54
もっと具体的にはCGIで、formから受け取った文字列をまたWebページに表示させたいのだけど、半角スペースの連続は1個と変わりないので、それを置換させたいのです。今のところこんな感じになってます。
△のとこは半角スペースのつもりです。あ、改行の扱いもこれでよかったんでしょうか???
word = ('\n'.join([x.strip() for x in cgi.escape(cgi.FieldStorage().getfirst('word', '')).replace('△△','△').replace('\r\n','\n').replace('\r','\n').split('\n')])).strip('\n').replace('\n', '<br>')
>>740 そんなふうに1行を長く読みにくくして人生楽しいか?
742 :
739:05/03/11 21:53:57
こうですか!?わかりません!
sWord = cgi.escape(form.getfirst('word', ''))
sWord = sWord.replace('△△','△').replace('\r\n','\n').replace('\r','\n')
sWord = sWord.strip('\n') # ←このタイミングの方が無駄が減る事が分かりました。TNX
>>741 sWord = '\n'.join([x.strip() for x in sWord.split('\n')])
sWord = sWord.replace('\n', '<br>')
私も今チュートリアルのここを見ていました。
www.python.jp/pub/doc_jp/tut/node12.html#SECTION0012500000000000000000
なんとか、re.sub()でやってみますね。
import re
import cStringIO
sWords = "lskdjflks\r\n sjfjsj \r dfsdjfkj\n"
words = []
for line in cStringIO.StringIO(re.sub(" +", " ", re.sub(r"(\r\n|\r)", r"\n", sWords))):
words.append("%s<br>" % line.strip())
print words
こんな感じの処理がしたいのかな?
ありがとうございます。
>>745 私のしたかった事とは少し違うのですけど、そこからなんとか出来そうです。
wordsの前後の改行も省きたかったのです。
私のしたかった事は結局。こうでした。ありがとうです。
>>743>>745 sWord = cgi.escape(sWord)
sWord = re.sub(r' +',r' ',sWord)
sWord = re.sub(r'(\r\n|\r)',r'\n',sWord)
sWord = ''.join([re.sub(r'(^ | $)',r'',x) for x in cStringIO.StringIO(sWord)])
sWord = re.sub(r'(^\n*|\n*$)',r'',sWord) # ←さっきこれを上にした方が無駄がどうとか言いましたが、間違いでした。ここでないといけないです。
sWord = re.sub(r'\n',r'<br>',sWord)
>>> import re
>>> re.sub("[\r\n]+", "<br>", " word\r\n\r\nword\r\nword ".strip())
'word<br>word<br>word'
>>>
むむ。私の
>>747も間違ってますね、、、。4行目のre.sub(r'(^ | $)',r'',x) が行末に\nがあるので、上手く働かないですね。
cStringIOも使ってみたかったですが。
>>748 それだと、'あ\n\n\nあ'も'あ<br>あ'とならないですか?文字と文字の間の改行は残したいんです。
こうしました。
sWord = '\n'.join([x.strip() for x in cgi.escape(sWord).replace('\r\n','\n').replace('\r','\n').split('\n')])
sWord = sub(r' +', ' ', sWord)
sWord = sWord.strip('\n').replace('\n', '<br>')
ぱいチンコびろーん
∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
ぱいチンコびろーん びろろ〜ん べろーん びろんぬ
∩___∩ ∩___∩ ∩___∩ ∩___∩
| ノ ヽ/⌒) ヽ/⌒) ヽ/⌒) ヽ/⌒)
/⌒) (゚) (゚) | .| (゚) | .| (゚) | .| (゚) | .|
/ / ( _●_) ミ/ ( _●_) ミ/ ( _●_) ミ/ ( _●_) ミ/
.( ヽ |∪| / |∪| / |∪| / |∪| /
\ ヽノ / ヽノ ./ ヽノ / ヽノ /
/ / ./ / ./ / ./ /
| _つ / | _つ / | _つ / | _つ /
| /UJ\ \.| /UJ\ \| /UJ\ \.| /UJ\ \
| / ) )| / ) )| / ) )| / ) )
∪ ( \ ( \ ( \ ( \
\_) \_) \_) \_)
∩___∩ ∩___∩
|ノ ヽ |ノ ヽ
/ (゚) (゚) | / (゚) (゚) |
| ( _●_) ミ | ( _●_) ミ
彡、 |∪| 、` ̄ ̄ヽ /彡、 |∪| ミ
/ __ ヽノ Y ̄) | ( (/ ヽノ_ |
(___) Y_ノ ヽ/ (___ノ
\ | | /
| /\ \ / /\ |
| / ) ) ( ( ヽ |
∪ ( \ / ) ∪
\_) (_/
ハッスルハッスル
(⌒) .(⌒)
( ´・●・)つ このスレのあり方を
( 二つ 見直そうよ
\./ /、
∪`J
さーて、いよいよプログラム板でも
AAフィルタかけなきゃダメになってきたか?
/\___/\
/ / ヽ ::: \
| (●), 、(●)、 | / ̄ ̄ ̄ ̄ ̄
| ,,ノ(、_, )ヽ、,, | <
>>755、ねぇ、笑って
| ,;‐=‐ヽ .:::::| \_____
\ `ニニ´ .:::/
/`ー‐--‐‐―´´\
あははははははは(乾いた笑い)
つか、本スレなのかネタスレなのかはっきりしてほしい。
>>758 ここは本スレでありネタスレでもあります。
頭の硬い人たちがスレ立て時にいつも一つに統合したがるので。
そもそもネタすれって何だよ。
その存在意義は?
_ ∩
( ゚∀゚)彡 たっぷる!たっぷる!
( ⊂彡
| |
し ⌒J
たっぷる!たっぷる!みんなたっぷる!
でぃくしょなりにも愛をちょうだい( ´д`)人
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ぱいちんこぱいちんこ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ぱいちんこ!
ぱいちんこ〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
2ch自体がネタなのに、本スレだのネタすれだのは無意味
asyncoreって何て発音するの?
pychinko
770 :
【今日のキーフレーズ】:05/03/15 23:50:29
asyncore pychinko [ア チンコハ パイチンコ]
ぱいチンコ・・・・
∩__ _∩
| ノ | /| ヽ/⌒)
/⌒) (゚) |;;;;;;;| (゚) | .|
/ / (_|;;;;;;;| ●_) ミ/
.( ヽ | |;;;;;;;;|∪| /
\ ヽ|;;;;;;;|ノ /
/___________| \|___/
/;;;;;;;\ \;;;;\
/;;;;;;;;;;;;;;\ \;;;;\
|~~~~_つ~~|;;;;;;;|~~/
| /UJ\ |;;;;;;;| \
| / |;;;;;;;| )
∪ (| \| \
\_)
>771
とりあえず、CUBEの犠牲者+1。
自分でconfigure,makeしてインストールすると、/usr/libにlibreadline.があるにもかかわらず
readlineモジュールがインストールされないのですが、どうすればされるようになりますか?
ちなみに、元からインストールされているPythonでは、readlineモジュールが無事使えます。
configureのログを見よ。原因はそこに書いてある。
タップル!! タップル!!
タップル!! タップル!! タップル!!
タップル!! ∩ ∩ ノ) タップル!!
タップル!! 川 ∩ 川彡'三つ タップル!!
タップル!! ⊂ミ∩、⊂ミ∩彡⊃ タップル!!
タップル!!⊂三ミ( ゚∀゚)彡三彡三⊃ タップル!!
タップル!! ⊂彡川⊂彡川ミ⊃ タップル!!
タップル!!⊂彡川∪⊃ U川彡⊃ タップル!!
タップル!! (ノ ∪ 川 ∪ミ) タップル!!
タップル!! ∪ タップル!!
タップル!! タップル!! タップル!!
タップル!! タップル!!
タップル!!
人の人生にいちいちケチつんなよ! 別にいいだろ!
俺の仕事はな、おまえら弁当によく入ってる魚の形した醤油入れ知ってるか?
あれのふたを閉める仕事だ。
おまえらバカにするかもしれんけどな、俺は誇りを持ってやってるぜ。
親戚に紹介してもらってやっと今の会社に入れたんだからな。
別にいいだろ。
別に何人やったからって女にもてるわけでもねーじゃん。
おまえらつまらんこと気にすんな。
おれはスカイラインに乗ってるぜ、どーだおまえらすげえだろ。
自分のプログラムの中で
tkFileDialog.askopenfiles()
だけを使いたかったのですが,ファイルを選ぶウィンドウが閉じた後も
tk のウィンドウが開き放しになります.
速攻でこいつを消すにはどうしたらいいですか?
⊂⌒ヽ (⌒⊃
\ \ /⌒ヽ / /
⊂二二二( ^ω^)ニニ二⊃
\ \_∩_/ /
( (::)(::) )
ヽ_,*、_ノ ぱいチンコびろーん!
/// おシリもびろーん!
///
カワイイ!
>>783 次は「犯罪者が使うPythonのお勉強」か
>>779 コンソール画面が開いたままということ?
それだったらpythonではなくてpythonwで起動すればいいと思う。
関連付けで、pyファイルをpythonwにしとくとか。
>>785 ごめんなさい.環境を書き忘れていました.誤解させてしまいました.
Linux の仮想ターミナルから起動しています.
みなさんのところでも,askopen...() と同時に「tk」という名前のウィンドウと
ファイルを開くウィンドウの 2 つが出て来るのだと思います.
で,選択しても片方は閉じません.Windows では閉じたような気がします.
>>777 goopy/functionalって具体的になんなの?
>>786 askopen...で開くとmasterをとる方法が無いから
素直に
tk = Tkinter.Tk()
tkFileDialog.askopenfiles()
tk.destroy()
するしかないような・・・。
>>787 データの基本操作系の関数の詰め合わせ。
sort, reverse, some, every, remove_duplicatesとか
リストの操作系の関数が多いかな。
ソース読んでみた。
なるほどしょーもない。次回に期待。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
791 :
デフォルトの名無しさん:05/03/20 19:38:46
/⌒\
( )
| / ⌒\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (・∀・ ) < サスーリ!
|((⊂ | \_______
| ( )ノ
| |
| |
| / ⌒\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (・∀・ ) < サスーリ!
|((⊂ | \_______
| ( )ノ
| |
| |
| / ⌒\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄
| (・∀・ ) < サスーリ!
|((⊂ | \_______
| ( )ノ
| |
| | / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| | < ぱいちんこ!
( ・∀・) \_____________
) (
(__Y_)
793 :
デフォルトの名無しさん:05/03/20 22:19:01
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
こんなにネタがあればPythonの
未来も明るいと言えるよね。
794 :
デフォルトの名無しさん:05/03/21 00:47:16
Pythonデスクトップリファレンスは買い?第2版まで待ったほうがよい?
さすがに1.xベースは古くないか?
トヨタスポーツ800
いきなり質問ですみません。
ファイルの最終更新時間を知りたいのですが、
import time
time.strftime("%c", time.gmtime(os.path.getmtime(PATH)))
とすると9時間程ずれるのですが、どのようにすれば良いでしょうか?
>>> print time.strftime("%z",time.gmtime())
東京 (標準時)
とは出るのですが・・・。
time.localtime() にしたら?
803 :
801:2005/03/21(月) 21:02:20
ありがとうございます。
time.strftime("%c", time.localtime(os.path.getmtime(PATH)))
で出来ました。
804 :
デフォルトの名無しさん:2005/03/21(月) 21:59:02
ぱいチンコびろーん
∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
スライスだけで何でもできる
>>805 じゃあスライスで彼女を作る方法を教えてください。
>>807 スライス元のオブジェクトを持ってきてください。
808 :
デフォルトの名無しさん:2005/03/24(木) 01:40:40
pythonでCGIを書いてます。
フォームからの情報をテキストに書き込む時に『utf-8』で保存したいのですが
どのようにすれば可能でしょうか?
現在は単純に
form = cgi.FieldStorage()
value = form['value'].value
f = open('test.txt','w')
f.write(fix(value)) # fix()は"\r"を""に置き換えしているだけ
f.close
だれか教えてください
>>808 フォームのあるページが EUC-JP だと仮定して、
f.write(fix(unicode(value, "EUC-JP").encode("UTF-8")))
もちろんJapaneceCodecsかCJKCodecsは必須。
StreamWriterつかうのが吉
811 :
808:2005/03/24(木) 04:59:48
codecに日本語の自動判別が含まれないのは、当然とはいえどう対処したものか。
>>812 今のところ PyKf.guess() を使うのが一番楽な方法かも。
英語圏の人達は、UTF-8とISO 8859-1を判別する必要に迫られたりはしないのか?
>>779 遅レスだが一応。
tk = Tk()
tk.withdraw()
>>815 消してない、隠れてるだけ。
ま、どっちでもいいが。
(゜Д゜)???
?????????
∩___∩
| ノ ヽ/⌒)
/⌒) (゚) (゚) | .|
/ / ( _●_) ミ/
.( ヽ |∪| /
\ ヽノ /
/ /
| _つ /
| /UJ\ \
| / ) )
∪ ( \
\_)
「消す」と「隠れる」の違いくらい分かるだろ?
\ │ /
/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< ?????????!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< ???????!
?????〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
学生のころマックでアルバイトしてたときの事。
わたしはドライブスルー担当で、その日は日曜。
次から次へとやってくる客の対応に追われ、目の回る忙しさだった。
あまりの忙しさにあせってしまって、
「いらっしゃいませコンニチハ。マイクに向かってご注文をどうぞ!」
って言うとこを、
「いらっしゃいませコンニチハ。マイクに向かってコンニチハ!!」
全身から汗がふきでたよ。
モニターの向こうのドライバーも、
「こ、こんにちは…」 とか言ってるし…
俺は初めて彼女とhex()した。(以下略
正規表現が使いずらい気がする。
構文になってるPerlと比べると使いづらいのはたしか。
あっちは正規表現に命懸けてるし。
ParrotになってVMレベルで正規表現をサポートしても、
Pythonは利用しなさそう。
>>824 馴れ,かなぁ.
ソース全体が正規表現みたいになるよりはいいかと.
そこでpyperlですよ
>>824 勉強しはじめの頃を思い出すと、
perlは、$Match = $1 みたいにマッチした部分が特殊変数に入ってるっていうのが何か気持ち悪かった。
pythonは、Match = re.findall(〜) みたいに、正規表現を使うのと取りだすのが同時なので納得しやすかった。
リスト内包表現みたいな構文があるなら
正規表現も構文にすればいいのに、といつも思う。
そんなことしたら、ますますPerlつかわなくなって
必要なときに勘がにぶって困るので却下。
Paythonって・・・・ぺいそん??
そんな番組みてないっすよスクリプト-Paython-
>>829 Pythonはじめたばかりだから変なこと言うかも知れんが。
文字列にマッチ演算子とか定義すればいいんでないの?
言ってることが変
836 :
834:2005/03/26(土) 22:41:11
そうか、もうちょっとROMってることにしよ。
最近Python使ってなかったからまたDiveIntoPythonするわ
>>838 この程度のコードなら腐るほどあるような気がするが、まあがんばれ。
マッチした全てをタプルのリストで返すre.findall()はあるのに、
最初にマッチした一つをタプルで返すre.find()がないのはなぜ?
>>834 演算子っていうかメソッドってこと?
文字列.match(正規表現)
の方が好きってこと?
842 :
834:2005/03/27(日) 17:25:01
>>841 文字列 ~= 正規表現 とか。
Perlっぽく書ければいいのかなと思っただけ。
何かの記事で見た、演算子の再定義もできますというのを
演算子の定義もできますと勘違いして覚えたみたい。
>>842 演算子を定義できる言語ってあるのかなあ。
(再定義ではなく新規に定義という意味で)
ちょっと思いつかない。
"0x61" という文字列があったとして、それをワンタッチで "a" に
変換する楽チンな方法ってありますか?
ordとchrでできそうな木がするんだけど、計算が大変そうで。
chr(int("0x61", 16))
エッチ、スケッチ、ワンタッチ、
それいつの時代からあるんだろうか・・・
u'hogehoge'
となっているバイト列から単純に u を外すにはどうしたらいいのでしょうか?
なにがしたいのかというと、sjisなのにunicodeとして
扱われているバイト列を取り出したいのです。
小手先の問題回避でしのがず、
unicode文字列代入時に、sjis文字列としてきちんとdecodeして代入できるよう
手を尽くすのをお薦めする。
禿同。
> sjisなのにunicodeとして扱われているバイト列
が出てくる理由をつきとめて
stringとして扱われるようにするか、unicodeに正しく変換するのが吉。
>>842 APL とか Prolog とか Haskell とか PostgreSQL とか。
>> sjisなのにunicodeとして扱われているバイト列
> が出てくる理由
これはmp3のタグをpyid3tagで取り出したからです。
Cレベルは自分には対処は無理ですので……。
どうやらlatin1でencode()してやれば誤魔化せそうと気付いた。
> どうやらlatin1でencode()してやれば誤魔化せそうと気付いた。
バイト列がunicodeになっちゃってるときの割と一般的な解決方法だと
思われるので、それで良いかと。
unicode("能","ms932")
↑こういうのってまだできないのね
手元の環境では普通に動くが、何の問題が?
859 :
856:2005/03/30(水) 22:53:24
皆さんコマンドラインで
>>> "能"
File "<stdin>", line 1
"能"
^
SyntaxError: EOL while scanning single-quoted string
ってならないの?
# -*- coding: ms932 -*-
import re
print re.sub("能", "@", "脳能熊")
とかもできないんだけど・・・
860 :
856:2005/03/30(水) 23:01:02
unicode("能","ms932")
はコマンドライン使わないでcoding指定すればできましたすんません
class Foo(object):
def __init__(self, fooattr):
self.fooattr = fooattr
class Bar(Foo):
def __init__(self, fooattr):
self.barattr = 2
super(Bar, self).__init__(fooattr)
クラスFooに属性barattrを追加したサブクラスBarを作りたいんだけど、
こんなふうに__init__を書くと、スーパークラスFooの情報(この場合はfooattr)が
サブクラスBarに混入してしまう。
これを回避する方法ってある?
混入というか意図した動作じゃないの?
いやならFoo.__init__()を呼ばなければいいだけ。
同意。「混入」という認識がおかしいと思われ。
継承=親子関係なんだから血が混ざっているに決まっている。
Barの定義に「Foo」と書きたくないなら
継承じゃなく集約(aggregation)を使えばいいのでは。
864 :
デフォルトの名無しさん:皇紀2665/04/01(金) 03:16:40
"The joy of coding Python should be in seeing short, concise, readable
classes that express a lot of action in a small amount of clear code --
not in reams of trivial code that bores the reader to death." --GvR
(Pythonでコーディングする楽しさがどこにあるかと言えば、
多くの動作をすこしのコードで表せる、簡潔で読みやすい
クラス群を見ることにある。読み手を死ぬほど退屈させる、
長大で自明なコードではなく、ね)
865 :
861:皇紀2665/04/01(金) 10:17:44
もしかしてPythonは、継承を使わずに属性を追加したクラスを作れる?
俺はエスパー
>>861がイメージしていることは大概のオブジェクト指向言語で出来る。
というかオブジェクト指向を勉強し直せ。
クラス定義する必要って再利用させる時とする時ぐらいで十分?
俺もエスパー
>>867がクラスにした方が良さげだと思ったらクラスにするがいい。
というか実際に試して経験から学べ。
869 :
デフォルトの名無しさん:int 2ch =05/04/01(金) 20:43:36
Pythonって使いやすそうなデバッガ無いね…
念記
今さらだけど、日本語のできる学生はいなかったのかなぁ。
「PyPenisと名乗ってるみたいで可笑しいんですけど・・・」とか
メールしたくなる今日この頃。てゆーか痛々しい。
その自意識過剰が痛々しい。
ぱいちんこ
pythonには複数行コメントはないのでしょうか?
文字列リテラルをその場で放置するとか。
オブジェクトの先頭なら__doc__にも入って一石二鳥。
877 :
デフォルトの名無しさん:int 2ch =05/04/02(土) 11:53:06
'''こんな風に書いて
試してみ。
>>875'''
>>877 ありがとうございます。
ヘルプから見つけられなかったのでないと思っていましたがあったのですね
>>873 「自意識」という言葉の使い方を間違っている。
「日本語での語感を世界中のみんなが気にしてくれる」という自(国語)意識
>>872 「陰茎」やら「肉棒」なんかに相当する単語なら知っていても、
「ちんこ」という単語に相当する英単語を知っている
日本人学生もかなり少ないと思うけどな。
dick
cock
>>880 はいはい。君が言葉遣いを誤ったことは分かったから、もういいよ。
「自慰識」で落としてほしかった
886 :
デフォルトの名無しさん:2005/04/03(日) 10:12:50
板違いですが。。
『日本の武道や伝統芸能には「まず型を学ぶ。型を習得する
ことにより心を学ぶ。型を体得してこそ型から自由になれる
。」という考え方があります。』
http://www.python.jp/Zope/ この考え方はよく聞くけど、原典的な著書ってある?
五輪書チックだけど。
んなことを書から学ぼうとするのは間違い。
『書』とは中途半端に理解した者が書くもの。
888 :
デフォルトの名無しさん:2005/04/03(日) 11:34:56
自己レスです。
世阿弥のいう「序・破・急」とか、茶人川上不白の提起した「守・破・離」
のようです。ども!
武道もそうだけど、舞踊の古典でよくある話だよね。
とにかく先生の踊りの見よう見まねをしなさいってやつ。
上手な人のヘタな部分、ヘタな人の上手な部分も見なさいとかも。
Pythonを学ぶには、まずインデントを受け入れる。
インデントを体得することにより心を学ぶ。
インデントに習熟してこそインデントから自由になれる。
どんなに習熟してもインデントから自由になるのは無理。
まだまだだな。
(インデントが嫌でも。。)
Pythonを体得する。
Pythonに疑問を持つ。何かを創造できると感じる。
Pythonを離れ、素晴らしいものを創造する。
その結果、Pythonを改良できたり、新言語を作ったり
できる真の能力が、、そして古いPythonから自由になれる(^^
887 名前:デフォルトの名無しさん [sage] 投稿日:2005/04/03(日) 11:05:45
んなことを書から学ぼうとするのは間違い。
『書』とは中途半端に理解した者が書くもの。
Yet Another Python、略して(ry
PyPAN
PyO2
Pyaython [ピャイソン]
Pythonはいい言語さ。プログラムのイロハはこいつに教えてもらったようなもんだ。
操作性はすなおの一言さ。
CやJAVAなんかに使い慣れるとこいつのスピードじゃ物足りないけどね…
母親みたいなもんだよ。
子供に歩き方を最初に教えるのは母親さ…
そうやって歩き始めた子供は、やがて母親から去っていく。
このPythonはそんな言語なんだ。
コードの書き方から、プログラミングの楽しさや難しさや…
コードを組む心ってのかなぁ…
そんなありとあらゆる感動を全部教えてくれるんだ。
そして組み方を覚えた子供たちがさらに速く、さらに高度なコードを
書けるようになることを願って見送るんだ。
そんなやつさ…こいつは…
エリア88ワロスw
サザエ:
さ〜て、次スレのスレタイは〜?
波平です。
春の陽気に誘われていろんな人が萌え出でる時候になりましたな。
さて、次スレのタイトルのの候補は、
Pythonなら俺に聞け!Part8
【タプルタソは】Python質問ヌレPART8【エロかわいい】
★Pythonって死滅しちゃうの?Part8★
の3本です。
サザエ:
次スレもまた見てくださいねぇ〜。
じゃんけんポン!うふふふふ♪
やべー、ほとんど脳内で音声合成されてら
>903
漏れはBGM入りだ。
Pythonで外部のcomやdllを使う場合、参照渡しはどのように取得できるのでしょうか?
COMならpythonのオブジェクトにバインディングされるから何も考えなくてもいいです。
他のCOM対応高級言語と一緒。
DLLはわからない。自分でC拡張を書けば絶対だろうけど。
909 :
907:2005/04/04(月) 21:35:10
>>908 ありがとうございます。
現在iTunesを操作しようとしています。
どうも使い方が悪いのか解らないのですが
下記のを呼び出してもうまくいきません。
void GetPlayerButtonsState(
[out] VARIANT_BOOL* previousEnabled,
[out] ITPlayButtonState* playPauseStopState,
[out] VARIANT_BOOL* nextEnabled);
---------------------------------------------
import win32com.client
itunes = win32com.client.Dispatch("iTunes.Application")
itunes.GetPlayerButtonsState(a,b,c)
print a
print b
print c
----------------------------------------------
これを実行すると
>python test.py
Traceback (most recent call last):
File "test.py", line 3, in ?
itunes.GetPlayerButtonsState(a,b,c)
NameError: name 'a' is not defined
a,b,cを明示的に型を宣言してみてもうまく渡されませんでした
何が悪いのでしょうか?
よくわかんないけど、宣言からは引数3つ必要なようでいて実際は不要みたい。
---------------------------------------------
>>> help(itunes.GetPlayerButtonsState)
Help on method GetPlayerButtonsState:
GetPlayerButtonsState(self,
previousEnabled=<PyOleMissing object at 0x00863430>,
playPauseStopState=<PyOleMissing object at 0x00863430>,
nextEnabled=<PyOleMissing object at 0x00863430>
) method of win32com.client.CDispatch instance
>>> itunes.GetPlayerButtonsState()
(True, 2, True)
---------------------------------------------
Pythonを使って2chのログ(.datファイル)を自分なりに見やすくするスクリプトを作ろうとしています。
Pythonのチュートリアルを参考にしながら、簡単なスクリプトを作り始めたのですが、
どうやら2chの.datファイルには、jisx0213に含まれる文字があり、Unicodeでのreモジュール
を使っての文字列検索(re.search(u""))でエラーになります。
そこで調べていたら、pykfというものを使えば、jisx0213で定義されている文字列が含まれていても、
大丈夫そうだとわかったのですが、いまいち期待通りにスクリプトが動作しません。
この時点で、今まで出ていた
Traceback (most recent call last):
File "superpai2-1.py", line 9, in ?
ustr1 = unicode(temp, "shift-jis")
UnicodeError: Shift_JIS decoding error: invalid character 0x8764
は、出なくなりました。
正直、今のスキルだとどこが原因なのかもよくわからないのですが、少なくともこれだけは調べておけ、
このモジュールを使わないとダメだ。等ありましたら、ご指導ください。
ソースコードを見せろ等ありましたら、おっしゃってください。
環境:
OS: Vinelinux3.1
Python: python-2.3.4-0vl5
Pykf: pykf0.3.4 (←python setup.py installでインストールしました。)
912 :
911:2005/04/05(火) 01:11:23
ソースコードと読み込み対象のファイル、そして書き込んだファイルの3ファイルです。
ttp://49uper.com:8080/html/img-s/50840.zip パスワードは空欄です。
読み込みファイル: superpai-s.org.txt
ソースコード: superpai2-2.py
書き込みファイル: superpai.csv
この時点で、何をしたいかというと書き込んだファイルがShift-jisのファイルとして、可読な
ファイルとして出力しようと思っています。
>>911 0x8764 は d かな?
>>> print '\x87\x64'.decode('cp932')
d
ustr1 = unicode(temp, "cp932")
ではどうなるでしょう。
>>913 dクス。
('cp932')で問題なく、出来たもより。
どうもありがとう。
# coding=euc-jp
import re
fr = open('superpai-s.org.txt', 'r')
fw = open('superpai.csv', 'w')
temp = fr.readline()
while temp != "":
ustr1 = unicode(temp, "cp932")
pi_result = re.search(u'M/B', ustr1)
if pi_result : #### レス中に'M/B'があったら、実行。
fields1 = re.sub(u'<>|<br>', u',', ustr1)
fields2 = re.sub(u'ID:', u', ID:', fields1)
fields3 = re.split(u',', fields2)
fields4 = ''
for i in range(len(fields3)):
fields4 = fields4 + ',' + fields3[i].encode("cp932")
fw.write(fields4)
temp = fr.readline()
fr.close()
fw.close()
915 :
デフォルトの名無しさん:2005/04/05(火) 12:29:37
よく分からないですが、半角文字列を逆並びにして返す関数を貼っておきますね
def reverse_str(s): return reduce(lambda a,b: b+a, s + '')
917 :
デフォルトの名無しさん:2005/04/05(火) 13:17:57
>>> '(T_T)'[::-1]
')T_T('
>>> u"(゚д゚)"[::-1]
)゚д゚(
>>> 'タケヤブヤケタ'[::-1]
タケヤ゙フヤケタ
ふやけた…
というか、対話モードのエンコーディングってどうやって指定するんだ?
>>910 ありがとうございます。
なんだかよくわかりませんがそういうものとして使うことにします
921 :
911:2005/04/06(水) 12:58:35
すいません、また教えてください。
一部分抜粋
ustr1 = unicode(temp, "ms932")
pi_result = re.search(u"】", ustr1)
というような、reモジュールでUnicodeでの検索をしたいと思っています。
実際、この文を実行すると、以下のようなエラー文が表示されます。
Traceback (most recent call last):
File "superpai2-3.py", line 10, in ?
pi_result = re.search(u"】", ustr1)
File "/usr/lib/python2.3/sre.py", line 137, in search
return _compile(pattern, flags).search(string)
File "/usr/lib/python2.3/sre.py", line 230, in _compile
raise error, v # invalid expression
sre_constants.error: unexpected end of regular expression
正規表現でのUnicodeの扱いがまずいように思えるのですが、以下のようなスクリプトだと
エラーが出ません。何が違うのかよくわからないのですが、ヒントを教えてください。
# coding=euc_jp
import re
str = ['これはてすとです。【】', '2フィールド', '3']
for i in range(len(str)):
ustr = unicode(str[i], "euc_jp")
mituketa = re.search(u"】", ustr)
if mituketa:
print '見つけた', mituketa.group(), mituketa.span()
else:
print '見つかんなかった'
同じような感じなのでついでに質問しときま。
『能』
はreモジュのたいていの関数の、第一ひきすうの最後の文字に使えない?
# coding=ms932
import re
match = re.search(u".能", u"能登かわいいよ能登")
if match: print match.start()
能登厨死ね
質問。タプルのアンパック代入では、両辺の要素の数が一致しないとValueErrorエラーになるけど、
>>> l = [1, 2]
>>> a, b, c = l
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: unpack list of wrong size
足りない分にNoneを代入するためには、こんな書き方をするしかない?
>>> a, b, c = (l + [None] * 3)[:3]
926 :
デフォルトの名無しさん:2005/04/09(土) 09:18:09
さすがにBytecode見るのは処理系の実装に依存しすぎ。
「日本語化してください助けてくださいお願いします」じゃなくて
「このプログラムはこんな所がこんな風に素晴しい。でも日本語が使えないのが残念」
と書いた方が食いつきがいいと思われ。
932 :
928:2005/04/10(日) 01:33:19
>>930 出来た!
読み込むファイルのコーディングをshift_jisにして解決できました。
win32allモジュールにウィンドウを常に最前面表示にするメソッドってありますか?
探しても見つからないです…探し方が悪いのかな…
くわしくないけど、そのモジュールにはSetWindowPos()ってない?
935 :
933:2005/04/10(日) 17:34:37
936 :
933:2005/04/10(日) 18:24:49
すみません。もう1つお願いします。
ウィンドウのハンドルからそのウィンドウの実行ファイルのあるパスを取得するメソッドはありますか?
タイトルの文字列や座標、サイズ、クラス名は取得できるんですが…
pychinkoってなんなの?モジュール??
RTFM
リストのIndexErrorがうざい。
dictのget()に相当するメソッドがlistにもあってよさそうに思える。
そういう独自のメソッドを追加できるような
仕組みってないの?(この場合だとlist型に追加できてほしい)
subclassで妥協するか
builtin typeを変更できるのも便利そうなんだが
他人のコードでそれやられるとコーディングホラーまっしぐらなので微妙。
もしかしたら、と思って試してみたが、
list = MyList とした後でも type([]) は <type 'list'>のままだった。残念。
943 :
デフォルトの名無しさん:2005/04/11(月) 19:18:26
トリッキーなことをせず素直に書くのがPython流
built-in typeでも区別なく操作できても、それはそれで素直かと。
そのコード自体はトリッキーじゃないし。
>>942 type(list())とすればすむのでは?
947 :
デフォルトの名無しさん:2005/04/11(月) 20:07:05
チン ☆ チン ☆
チン マチクタビレタ〜 チン ♪
♪
♪ ☆チン .☆ ジャーン! マチクタビレタ〜!
☆ チン 〃 ∧_∧ ヽ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(・∀・ #) /\_/ < 次ヌレまだぁ?
チン \_/⊂ つ ‖ \________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/| ‖ マチクタビレタ〜!
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :| /|\
| |/
948 :
デフォルトの名無しさん:2005/04/11(月) 20:09:02
" ; ;ヾ *;""#ヾ*;ヾ;i"i "; *
* ;"; "i "; *;ヾ;* ;"; "i "; *;ヾ;
" ;ヾ *; ;@;ヾ; ;"/"* ;";^"i ";ヾ;
ヾ* ;"; "i "; *;ヾ;"i "; *;ヾ;"i ";
ヾ;i;;ii ;iiメソ"i "; *";;,*
゛*|l!|| ll|ソ./i;^*.
l;l!ll |l| ゛
l;l!ll |l|
|:l||| |l| ,, ∧_∧
|;l!l| ||l. 曰 ( ´Д`)<はぁー 次スレまだかな ・・
|ill|| ll|. | | / \
,, l|il|l l!| ノ__ヽ || | |
,, .,|::l|| !!|,,,,,||大||,,,,,,,|| | |,,,,,,,,,,,
";:ノ;;;i!! !!ヽ ||吟|| ⊂_/\ ヽ \> ,,
,, ||醸|| ▼ ,, \ / ̄) ̄)
,, ,, ゙゙゙゙""" ,┻ 丶 ノ、ノ
次ヌルポ
>>945 __builtin__.listを置き換えたら、[]で作るリストにもMyListを使って欲しいのだよ。
list([1,2,3])なんて書くのは面倒だから。
Windows版のwxPythonって2.4からwxRICH_2の仕様変わったよね?
なんかRTF開いても生のテキスト{\rtf...}が出るんだけど、どうしたらいいんだろ。
これバグなのか単に使い方が変わったのか、公式サイト読んでもググっても分かんない。
誰か助けて!
955 :
954:2005/04/12(火) 09:35:41
2.4じゃなくて2.5.4でした。2.5.3まではまともに使えてる。
誰かPythonでEXCEL級の表計算ソフト作ってよ。
>>956 とりあえずVBAのかわりにPyshonってのはよさげに見えるな。
つ【Gnumeric】
959 :
デフォルトの名無しさん:2005/04/12(火) 19:34:15
_∧_∧_∧_∧_∧_∧_∧_∧_
デケデケ | |
ドコドコ < 次ヌレまだぁぁぁぁ〜!? >
☆ ドムドム |_ _ _ _ _ _ _ _ _ _|
☆ ダダダダ! ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨ ∨
ドシャーン! ヽ オラオラッ!! ♪
=≡= ∧_∧ ☆
♪ / 〃(・∀・ #) / シャンシャン
♪ 〆 ┌\と\と.ヾ∈≡∋ゞ
|| γ ⌒ヽヽコ ノ ||
|| ΣΣ .|:::|∪〓 || ♪
./|\人 _.ノノ _||_. /|\
ドチドチ!
>>950のは過去の重複スレじゃん。お古はイヤッ!!
962 :
166:2005/04/12(火) 21:03:51
OOo2がマクロ言語としてpython扱えた希ガス
gya-
>>961 いまだに削除されていないので再利用の方向で責任とりましょうね♪
責任取りたいならお前が勝手に取っとけ。バーヤ
重複すれ立てたアホが責任とればいいにきまってるだろ?
"yyyy/mm/dd hh:nn"で渡した日付及び時刻に対し、14時間加算した日付と時刻を返す
関数を誰か書いて頂けると、このスレも非常に盛り上がると思うのですが…
たしかにこのスレを埋めるに足る程度には盛り上がるであろうな。
>>967 t = time.strptime("2005/04/13 09:13", "%Y/%m/%d %H:%M")
あとはtimeかdatetimeモジュールでなんとかなるでしょう。
なんで日本時間と北米東海岸時間の時差を計算したいの?
あ、夏時間だから今は13時間か。
971 :
967:2005/04/13(水) 12:09:29
>>969 ありがとう。
その線でちょっと調べて試してみます。
>>970 ttp://www.advsofteng.com/cdpython.html ↑こいつを使ってちょっとお遊びで為替チャートを作ってるんだけど、
海外の証券会社から取ってくる為替データが全部向こうの時間になってるから、
可能であれば、日本時間にしたいっていう俺の意味のないこだわりです。
ちなみにYahooの株価チャートは一瞬で表示されるのに対して、
上のモジュール使って作ったチャートはどんなに軽くしても表示に一秒以上はかかる。
なんかちょっとPythonの限界を感じてしまったかも。
ってかYahooはなんであんなに早いんだろ?
株価チャートだけに、キャッシュが有効なのでございます。
t = time.strptime("2005/04/13 09:13", "%Y/%m/%d %H:%M")
d = datetime.datetime(t.tm_year, t.tm_mon, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec)
d += datetime.timedelta(hours=13)
datetimeにstrptimeメソッドがないのはスマートじゃないな。
タイムゾーンももうちょっと手軽に扱えてよさそうだが…
あと、help(datetime.timedelta) 見ても、timedeltaがhours引数をとるなんて
一言も書いてないんだが、この不親切さはなにか理由あるの?
「 ̄ `ヽ、 ______
L -‐ '´  ̄ `ヽ- 、 〉
/ ヽ\ /
// / / ヽヽ ヽ〈
ヽ、レ! { ム-t ハ li 、 i i }ト、
ハN | lヽ八l ヽjハVヽ、i j/ l !
/ハ. l ヽk== , r= 、ノルl lL」
ヽN、ハ l ┌‐┐ ゙l ノl l
ヽトjヽ、 ヽ_ノ ノ//レ′
r777777777tノ` ー r ´フ/′
j´ニゝ l|ヽ _/`\
〈 ‐ 知ってるが lト、 / 〃ゝ、
〈、ネ.. .lF V=="/ イl.
ト |お前の態度が とニヽ二/ l
ヽ.|l 〈ー- ! `ヽ. l
|l気に入らない lトニ、_ノ ヾ、!
|l__________l| \ ソ
おまえら、変数の型をどうやってソースコードで表現してますか。
動的型とはいえ、型がわからないと読みにくい。
結局、俺の中では変数名=型になりつつあるんですが。
def foo(str, date):
i = 0
strの代わりにspamだよ漏れは
うーん、あんまり型を意識して変数名を付けてない鴨・・・。
型じゃなく「何を表しているか」に基づいて変数名を付けている希ガス。
「文字列」じゃなくて「ファイル名」とか「ラベル」とか。
「数値」じゃなくて「カウント」とか「インデックス」とか。
Parserクラスのインスタンスだったら「parser」とか。
> Parserクラスのインスタンスだったら「parser」とか。
型そのまんまじゃん!
982 :
【次スレ】:2005/04/14(木) 07:37:11
助けてください。
Pythonスクリプトからコマンドプロンプトの起動は
os.startfile("cmd")で出来るんですが、
引数を付けて起動するのにはどうしたら良いでしょうか?
やりたいのはディレクトリの変更です。以下は試しました。
os.startfile("cmd D:/")
os.startfile("cmd /k cd /d D:/")
985 :
984:2005/04/14(木) 11:16:09
ごめんなさい
os.system('"cmd /k cd /d D:/"')
で出来ました。すいません
最初に
# coding: utf-8
としておいても、
UTF文字列使うときは
u"ほげ"
のuって必要?