Py乙
3 :
デフォルトの名無しさん :2008/08/08(金) 12:17:34
Webアプリ編は板違い
webprog板のPythonスレはいまいち盛り上がってないなぁ
とあるプロセス(例えば/usr/bin/firefox)が動いているかどうかで分岐処理したいのですが、 どうすればいいのでしょうか?
いろいろヤバそうだけどとりあえず思いつくやり方 import os if '/usr/bin/firefox' in os.popen('ps').read(): ...
どうやばいの?
ps の出力をちゃんと解析してないので、関係ないもので True になる可能性があるとか、・・・ popen の種類がたくさんあったりして、いつもこれでうまくいくのかよく分からんとか・・・
pgrep使えばリターンコードだけで出力見ないで済むよ。
13 :
デフォルトの名無しさん :2008/08/09(土) 21:40:14
また、だまされた
15 :
デフォルトの名無しさん :2008/08/11(月) 21:31:02
<a href="省略1">省略</a> <a href="省略2">省略</a> ... みたいな、リンクが列挙されてるソースから 省略1を関数に投げて、返ってきた文字列で置換 省略2を関数に投げて、返ってきた文字列で置換 ... という処理をしたいんだけど、どういう方法が考えられる? re.compile('<a href="(.+?)".+?</a>').findall(ソース)でリストを取得 して、それを元にaタグごと生成し直す方法しか思いつかない。 要は、re.sub('a','b','ソース')でa→bって置換する過程で、マッチした文字列 に応じてbを変化させるような処理をしたいんだ。 長文&説明下手でスマソ
re.subに関数渡すとか、そういうこと?
検索, 取得してから置換すればいいんじゃね?
ほんとに説明が下手だ。 具体例を挙げてくれないと、全然分からん。
>>15 >>16 が言ってるが、
re.sub()には置換先(repl)として、ただの文字列ではなく
matchオブジェクトを受け取って文字列を返す関数を渡すこともできるよ
たとえばこんな風に
s = '1 234 5678'
print re.sub(r'\d+', lambda m: str(int(m.group()) * 2), s)
が、一般論としては、htmlを扱ってるんならlxmlなりBeautifulSoupなり
使ったほうがいいと思う
もし使い捨てツールならperlつかう方が得策。 gオプション付きの正規表現をwhileループさせれば簡単に順次処理できる。 あえてPythonならこんな感じで for m in re.finditer(regex, source): print m.span(), m.group() これだとヒットした位置(span)から前後の読み飛ばした文字列を じぶんで拾う必要がある。 もっとスマートのがあってもよさげだけど思いつかん。
21 :
デフォルトの名無しさん :2008/08/11(月) 23:12:42
15です。
力不足ですみません。とりあえずは、
>>17 でやりました。
>>19 のやり方がスマートなのかな
>>20 実装するには、逐次処理する方法が簡単なんですかね
参考になりました。ありがとうございます!
Pychinkoってなにをするモジュールなんですか?
23 :
デフォルトの名無しさん :2008/08/13(水) 13:13:51
Pachinkoの捩りなのかなあ…。
PyPy Pychinko Python始まってるな。
ISO 8601フォーマットの文字列からdateオブジェクトを生成するにはどうしたらいいんですか?
>>24 FOAF関連のモジュールなんだから
ともだちんこの捩りだろう
python って ruby とかperlの -cwオプションみたいなのないの?
30 :
デフォルトの名無しさん :2008/08/24(日) 00:01:57
pycheckerもあるな
33 :
デフォルトの名無しさん :2008/08/26(火) 10:45:03
optparse では -h と --help が最初から設定されているけど, -h を別の意味で使いたい時にはどうすればいいの? parser.add_option("-h", "--host", dest="host") ってやると optparse.OptionConflictError: option -h/--host: conflicting option string(s): -h になっちゃう (>_<)
横からだけどせっかく書いたので貼ってみる import optparse from gettext import gettext parser = optparse.OptionParser(add_help_option=False) parser.add_option('--help', action='help', help=gettext('show this help message and exit')) parser.add_option('-h', '--host', dest='host') options, args = parser.parse_args(['-h', 'www.example.com']) print options # {'host': 'www.example.com'}
36 :
デフォルトの名無しさん :2008/08/26(火) 13:13:21
C++ だと例外「オブジェクト」を受けとって それに含まれる情報を宛てにしていろいろ例外処理できるけど, Python だと例外として投げられるのは具体的にはなに? except MyExceptionClass: 見たいに書くわけだけど,じゃ,その例外クラスの インスタンスは本当にどこかに生成されているの?
みんな親切だなあ
i = 1 j = i i = 2 print i,j ってすると当たり前のように 2 1 って表示されるんですが、 「Python の代入は束縛だ」って書いてあったので 2 2 ってのが 正しい気がするのですが、何が間違っているんでしょうか(俺が)
リテラルは束縛される対象にはなりえないってことですか?
int,long,float,str,tupleあたりはimmutableだから
i=1で1というオブジェクトが生成されiが参照する。 j=iで、jはiと同じ1というオブジェクトを参照する。 i=2で新たに2というオブジェクトが生成されiはそれを参照する。 この時点でiは2を指し、jは1を指す。
45 :
デフォルトの名無しさん :2008/08/29(金) 12:55:58
>>41 >何が間違っているんでしょうか(俺が)
そう、オマエの存在自体が間違っているのだよ.
>>41-42 j = iは「jをiの別名、エイリアスとせよ」という意味ではなくて、
同じオブジェクトを指すようになるだけだ
その後のi = 2で、iは2に束縛される(iという名前が2を指すようになる)が、
別にjはiの別名じゃないから、(弄られてない)jは、1に束縛されたままだ
つーか、束縛って別名のことじゃないと思うんだが、なぜそのように動くと
思ったんだい?
>>> a = () a は immutable object への参照 >>> b = a b は a の指し示す immutable object への参照 >>> a = (1,) a は新しい immutable object への参照 >>> print a, b (1,) () Python には名前への参照はないというだけ
>>43 こらこら、別にmutableだろうが
i = [1]
j = i
i = [2]
で、jが[2]を指すようになるわけじゃないんだから
いい加減なことを言わないように
入門書嫁
>>> i = 1 >>> j = i >>> i = 2 >>> print i, j 2 2 >>> i += 1 >>> print i, j 3 3 こんなクソ言語だれも使わないよな常考
51 :
41 :2008/08/29(金) 13:31:00
C/C++ の参照型のようなもんかと思ってた。 boost::shared_ptr<T> のようなものか・・・
52 :
デフォルトの名無しさん :2008/08/29(金) 14:57:31
>>50 "もし〜だったら"を入れないと勘違いしそう
pythonインタプリタでテストをしていて、モジュールを修正した場合、再importするにはどうすればよろしいでしょうか? いちいちインタプリタを再起動するのが面倒ですorz
>>> import foo >>> reload(foo)
55 :
53 :2008/08/29(金) 15:16:36
>> 54 天才
>>53 IDLEならCtrl+F6を押すだけでリスタートできる。
reload() will be removed in python 3.0
58 :
デフォルトの名無しさん :2008/08/29(金) 23:05:53
cPickleとpickleを使ってみようと思って import cPickle o = "a" f = file("pick.txt","w") cPickle.dump(o, f) は正常に動いたんですが、 import pickle o = "a" f = file("pick.txt","w") pickle.dump(o, f) は raceback (most recent call last): AttributeError: 'module' object has no attribute 'dump' って感じんのエラーがでるんですが、誰かpickleのサンプル書いてもらえませんか?
とりあえずこれでも import pickle dir(pickle)
60 :
デフォルトの名無しさん :2008/08/29(金) 23:59:13
何がなんだかよくわからないのですが、 2chを読み書きするためのPythonを教えてください
>>60 wgetだけでできるので
pythonの出る幕はない
>>60 urllib
urllib2
cookielib
>>58 そのテストスクリプトにpickle.pyと付けちゃったていうオチか?
64 :
58 :2008/08/30(土) 12:59:04
>>60 前に書いた奴。
クッキーの保持の方法が分からないので2回連続POSTしてるがご愛嬌。
# coding: utf-8
import urllib2, cookielib
from urllib import urlencode
def cnvChar(str, code, code2='utf-8'):
return unicode(str, code2).encode(code)
cj = cookielib.CookieJar()
pd = {'bbs': 'board', 'key': 'key', 'time': '1',
'submit': cnvChar('書き込む','cp932'), 'FROM': cnvChar('名前','cp932'),
'mail': cnvChar('メール','cp932'), 'MESSAGE': cnvChar('内容','cp932'), 'hana': 'mogera'}
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Monazilla/1.00 Python/2.5'),
('Referer', '
http://host.2ch.net/board/ ')]
r = opener.open("
http://host.2ch.net/test/bbs.cgi ", urlencode(pd))
r = opener.open("
http://host.2ch.net/test/bbs.cgi ", urlencode(pd))
教えて君にはソースを見せるのが一番だね
クッキーはIPとちょっとした文字列で、自力でも作れたと思うなぁ しかし、なんとも作りかけのスクリプトだなw まあ、とっかかりにはよいだろうが
67 :
デフォルトの名無しさん :2008/08/31(日) 00:31:39
包茎が治るスクリプトをお願いします
自己解決しました
病気じゃないから治んないだろ
import ueno_clinic
72 :
41 :2008/08/31(日) 06:08:58
Windows でも UNIX でも共通に使える Python から自分自身を nice する方法ってありますか?
73 :
デフォルトの名無しさん :2008/08/31(日) 09:58:48
回答まだですか?
自己解決しました
OpenOfficeのmacroで使うためにPythonを勉強しようと思うのだけれど、何かお薦めの入門書ってない? Pythonの入門書は色々出ているみたいで、始めてやる場合ににはどの本がいいのか分からないです。 プログラム歴はCの入門書をある程度理解している程度です。(実用で使った事はない。)
77 :
デフォルトの名無しさん :2008/09/02(火) 14:50:51
>>77 標準リリースの2.5.2のやつ。
日本語環境用のやつは古いし、選ぶ理由はないよ。
ありがとうございます標準のものを使うことにします ありがとうございました
pythonを日本語で引くとpython.jpがトップに来るんだよなあ 誰が得するんだよ
>>80 検索結果から除外するように
NGサイトを登録することができればいいのにな。
個人単位で。
80みたいなことを言って誰が得するのか知りたい。
そもそもpython単体でググってなにを求めるというのか
そういえば、日本のPythonコミュニティをどうこうするとか息巻いて玉砕してた人たちがいたよな 元気にしてるのかな? アッーー!
85 :
デフォルトの名無しさん :2008/09/03(水) 00:20:23
python温泉はレベル高いから遠慮しておいたほうがいいな
そうだな 角電池くらい入れられるようにならないとな
>>85 今回もキャバクラ行くんだろうな
今からキャバクラ芸を練習しておくことにするよ
書籍が売れなかった件についても反省して欲しいな(ww
89 :
デフォルトの名無しさん :2008/09/03(水) 00:47:18
書籍は大量に売れたよ。品切れになるぐらい。
>>86 勝手に疎外感を感じてしまいがちなボクチムは
寂しい気持ちを慰めるためにキャバクラに通います
最近はお金がないので,もっぱらイケメンのあの人を思い浮かべながら
単三電池や角電池で自分を慰めているかもしれません
そんな毎日なのでずっと万年厨房の日陰者です
どんな負け犬合宿だよ(wwWwwWwwww
92 :
デフォルトの名無しさん :2008/09/03(水) 13:45:31
口だけ立派でたいしたこともできない上 すぐキレるような奴はいらないから今すぐ消えて欲しい
optparseでdefault値を設定したとき、例えば parser.add_option("-w", "--width", dest="width", default=100, help = "Width of output image (default is 100)") などとやることを考えます。 このときdefault=100と指定しているのにも関わらず、 helpの説明にdefaultが幾つかを手で書かないといけません。 これを自動化させるような方法はoptparseの標準機能では存在しないでしょうか。
%default
Windowsのコマンドプロンプトで実行する場合、 input(u"日本語文字列")ってすると文字化けします。 明示的にコマンドプロンプトの文字コード(cp932とか)にエンコードしないと駄目なんでしょうか?
>>95 環境に合わせて自動的に決定されるようにできるよ
>>96 ご回答ありがとうございます。
もうちょっと調べてみます。
>>89 >書籍は大量に売れたよ。品切れになるぐらい。
どの本だよ(wwWwwWwwwwwWWwwwWwwww
grassで返答するのはやめろ
売れない書籍の関係者乙(wwwWwwwWWwwWwwWwWwww
>>84 >そういえば、日本のPythonコミュニティをどうこうするとか息巻いて玉砕してた人たちがいたよな
>>85 >python温泉はレベル高いから遠慮しておいたほうがいいな
どこの中二病だよ(wwwwwwwwwwwwwwwwwwwwwwwww
Pythonはじまったな(wwwwwwwwwww
pylonsとTurboGearsとDjangoってどれが一番初心者向けですか?
twisted
pylonsとTurboGearsとDjangoとtwistedってどれが中二病っぽいですか?
hpricot
pylonsとTurboGearsとDjangoとtwistedとhpricotってどれが邪鬼眼っぽいですか?
pylonsとTurboGearsとDjangoとtwistedとhpricotとGrokってどれが日本のPythonコミュニティをどうこうするとか息巻いて玉砕してた人たちっぽいですか?
pylonsとTurboGearsとDjangoとtwistedとhpricotとGrokとweb.pyってどれが日本のPythonコミュニティをどうこうするとか息巻いて玉砕してたくせに結局できたのは傷をなめ合うだけの引きこもりオナニー集団だけだったのですねおまえらいらないからPHPでもやってろよ。
PHPはないだろ あるとすれば ocaml とか
boost.python つかったら std::vector<myclass> みたいなのが さっくりと python から扱えるようになる?
またPHP厨か
>>110 以下の一文を適宜付け加えておいてくれ
自分の能力のなさを棚に上げて他人を逆恨みする
116 :
デフォルトの名無しさん :2008/09/05(金) 22:08:05
翻訳ドキュメントの読み方のコツを教えてください。 javaのドキュメントのようには、なかなかクラスとメソッドの関係とかが 分かりません。
pydocと併用するとか、対話モードで動かしながら読むとか
118 :
デフォルトの名無しさん :2008/09/05(金) 23:43:57
これは便利ですね。はじめて知りましたpydoc さすがに親クラスとかパッケージに含まれるクラスにリンクで飛ぶようなことは 出来ないですよね?それが出来れば最高なんですけど
119 :
デフォルトの名無しさん :2008/09/05(金) 23:45:48
i = 1 iに1加える場合 i = i + 1 よりも簡単な方法ってないですか?
i+=1
>>120 それ、あんま好きになれん。
結局iは+1した値を指しなおすわけで全くの構文糖てのが。
>>122 pythonで数字は普遍性を持つので
CPUにとっての「簡単な方法」を追求するなら
CやPerlなどの「純粋」手続き型言語を選択すべき。
>>122 pythonの場合はintがimmutableだから仕方が無いんだろう
__add__()と__iadd__()は別物だから、mutableなobjectに関しては、
C++と同じように+と+=は別物として定義できるし
一般には後者のほうが効率がいいわな
>>124 __iadd__()って別個にあるんだな。しらんかった。
immutableなくせにmutableのフリをしやがってプンプン
いま PyDev 使っているんですがUSBメモリに入れて持ち歩ける開発環境を探しています。 エディタでおすすめはなんでしょうか??
emacs
>>128 Windows なんですけど、Meadow とかすか?
できれば 22 系の情報キボンヌ
widowsならpyscripterでも入れとけよ
そのままJRE+Eclipseでいいんじゃないの? うまくcmdファイルを書けばいけるよたぶん。 ドライブレター固定もわざわざディスクの管理でせずに substで回避するとかで。(ダブってるとダメだけど)
pyscripterよさそう。 しかし! よく考えたらそもそも Python 自体をどうやって持ち歩くんだ? C:\Python25 以下をごそっとコピーしただけでいいんだろうか? だけどたしかその位置(C:\Python25)ってレジストリに 登録されてるんだよなぁ。
レジストリはsys.pathの初期化に使うだけ なくても動く C:\Python2Xをそのままコピーすればおk
質問です。cat(引数はつけない)のつもりで以下のスクリプトを書きました。 import sys for line in sys.stdin: print line, コンソールから実行してみると、入力して改行しても出力されません。 そこでwhileとreadline()を使って、 import sys line = sys.stdin..readline() while line: print line, line = sys.stdin.readline() のように書き直しました。これで望む結果は得られたものの、どうもいまひとつです。 もっとスマートな方法があれば教えてください。よろしくお願いします。
すいません、インデント崩れました。 import sys line = sys.stdin..readline() while line: print line, line = sys.stdin.readline()
forループは先読みバッファを使うらしいね 下のと同じ意味で for line in iter(sys.stdin.readline, ""): print line,
レスありがとうございます。どうもそのようですね。 独自のバッファを使うことを意識しておかないと。 結局、whileループを while True: line = sys.stdin.readline() if not line: break print line, と書き直すことで解決しました。今後はこっちを使うことにします。
__setattr__()メソッドが再帰的に呼び出されないように、 このメソッドの中では object.__setattr__(self, name, value) という形式で値を代入するらしいけど、この"object"ってなによ????( ;´Д`) 自分の参考書には class MyClass(object): ってクラスの()の中に1箇所だけ記述されてるんだけど、 これって"継承"してるってこと???objectは基底クラスってこと? objectはどこに定義してあるのよ?おれはしてないよww ( ´Д`) ( ´Д`) ( ;´Д`) 寝る
class hoge(object): def __setattr__(self,method,value): self.__dict__[method] = value self.method = value とするとself.methodの時点で __setattr__の条件を満たしてしまい 永久ループに突入してしまうので、 オブジェクトのディクショナリを参照し、 そこに代入する形を取る。
うそを書くなよ。上のコードは動作しないぞ、気をつけろ!
>>142 ありがとうございます
危うく嘘を覚えるところでした ( ;´Д`)
引き続き解説募集中です (^o^)
とりあえず、object は基底クラスで、 class MyClass(object):... は object を継承してる。
def main(): なにか if __name__ == '__main__': main() という形式を見かけたんですかなぜこのようにしているのでしょうか?
スクリプト起動したときに 必ずmain関数が動いてほしい、という時の為のおまじない。
知らん
149 :
145 :2008/09/09(火) 00:10:05
150 :
デフォルトの名無しさん :2008/09/09(火) 00:13:34
>>147 ありがとうございます
よくわかりました
やっぱりわかりません
>>145 モジュールとしてして利用するとmainは実行されない。
単体で実行するとmainが実行される。
たいがいはテスト目的かな。
importするとそのスクリプトが実行されるという基本的なことを 説明してあげないと
__name__にはモジュール名が入る。 import sys print(sys.__name__) とやると'sys'が戻る。 でトップレベルで実行(自分自身を実行) すると'__main__'になる。 そのため、__name__ = '__main__'が成りたつ場合 自分自身が実行された、ということがわかるため、 その後にmain関数だのを列挙しておけば実行される
おいおい嘘教えるなよ。それはまったくのでたらめだろ importの内容について語るかと思ったら嘘張られるとは
156 :
デフォルトの名無しさん :2008/09/09(火) 03:43:02
ひどいスレだ・・・
でたらめが多すぎる・・・
158 :
デフォルトの名無しさん :2008/09/09(火) 09:56:15
そもそもPythonて言語自体が怪しくなってくる
自己解決しました
入門書嫁
import urllib
print urllib.urlopen("
http:example.com ").info()
info()って一部のヘッダー情報しか出力しないよね?
httpステータス(200とか)をurllibで取得することってできますか?
HTTPでinfo()にHTTPステータスが含まれないのはそういう仕様なんだろう。 urllib2か直接httplibをつかうしかないと思う。
>>164 urllib2.urlopenの返してくるオブジェクトには、なぜかcodeってプロパティがあって
そこに200とかそのものずばり入ってる
Python3.0に向けて皆さんが勉強していることってなんですか? ソースビルドして動きを確かめるぐらい?
ML,PEP,NEWS.txt
Rubyに乗り換える準備をしている
171 :
162 :2008/09/15(月) 20:07:56
>>165 まじっすかww自分urllibの方のコード必死に潜ってましたww
クラスURLOpenerのhttp_openメソッドでhttpステータスが入った変数errcodeが
if文の分岐に使われてるのを見つけたんですが、
どうやってアクセスするのが良いか悩んでたとこだったんです。。
助かります。ありがとうございました。
def f( *arg ): print arg p = None f(p) f()のargを空タプルにしたい場合、 変数pへはどんな値を代入すればいいでしょう?? ちなみに、上の場合は (None,) となってしまいます。。
引数無しで f()
p = () f(*p)
f(*p) と書くべきじゃないの
今、windows xpでpython3000を勉強しています。 ハードディスクにあるファイルを、更新日の新しいものだけUSBメモリにコピーするという スクリプトを書いたのですが、大きなファイルをコピーするとファイルの断片化がひどいです。 Explorerのコピーのように一旦連続した領域を確保してからそこにコピーというような処理は 書けないでしょうか? ついでの質問ですが、比較関数を指定したlistのsortはどうやるんですか? # Rubyでいうとこの、ary.sort{|a,b| a <=> b } みたいなやつです。 動作効率向上のために機能を削ったとかいうのは、メーリングリストで見かけましたが 全く方法がないと言うことはないと思うのですが。
後半については L = ['one', 'two', 'three', 'four'] L.sort(cmp = lambda a, b: len(a) - len(b)) # 文字数で昇順ソート 大抵の場合はkey指定で間に合うと思うけどね (上の例の場合、L.sort(key = len)
>>176 ファイルを扱う側からすれば領域が連続するかしないかなんてどうでもいい話だから
どうしてもやりたいならボリュームを直接開いてファイルシステムを直接いじることになるんじゃないの?
explorer云々が本当ならどんなことしてるかスパイツール使って調べてみればいい
常套手段として前半は 低レベルI/Oでファイルサイズ分lseek()して空write()かな。 モダンなOS・FSならこれでヒントになるとおもう。 py3kで実現できるかは試してないから不明。
xyzzyってエディタではTabによる空白を空ける事が出来ないんですが 解決方法もしくは他にオススメのエディタがあったら教えていただけませんか
C-q TAB
有難うございます!
mod_python + publisher handler はじめて使った。 こんなに簡単に書けてしまっていいのだろうか…
Pythonの問題集っぽいのが欲しいです 一度学習した事のチェックがしたいんです
他言語の宿題スレの問題をPythonでやるとか
188 :
176 :2008/09/23(火) 08:48:59
>>179 断片化に関してはだいぶよくなったような感じがします。
ですが、挙動が思ってたものと違うようで、lseekしてからwriteすると
パッとそのサイズのファイルができるのではなくて、ファイル先頭から
順次\x00を書き込んでいってるような感じでした。なので全体の書き込み速度は半分に。
178氏の言うように、近いうちにexplorerの挙動を調べてみたいと思います。
分かったとしても、Cで拡張ライブラリ書くことになるのかなぁ。
>>177 Python 3.0b3 (r30b3:66303, Sep 8 2008, 14:01:02) [MSC v.1500 32 bit (Intel)] on win32
>>> L = ['one', 'two', 'three', 'four']
>>> L.sort(cmp = lambda a, b: len(a) - len(b)) # 文字数で昇順ソート
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'cmp' is an invalid keyword argument for this function
cmpは動かないようです。L.sort(key = len) なら動きます。
python3000の啓蒙サイトでもcmpを使ったコードがあったんですけど動かないのはうちだけ?
if id == 1: ... とかいうコードを書いてひどい目にあった おまいらも気をつけろよ というか組み込み関数だけでも色分けしてくれるエディタを使うべきか
190 :
189 :2008/09/23(火) 09:58:03
import __builtin__; print '\n'.join(dir(__builtin__)) で自己解決
>>188 Windows上ではfile.truncateでファイルサイズ増やせる
後はctypesでCopyFileW,SHFileOperationWあたりを使ってみるとか
そうだね。 8年前の記事なんて誰も読まないから気付かなかったんだろう。
195 :
193 :2008/09/24(水) 23:45:58
>>194 やっぱりそうなんですね。1日悩みましたが解決して先へ進めそうです。
もし中の人がいたら修正お願いします、私みたいな初心者がつまずかないために。
196 :
デフォルトの名無しさん :2008/09/27(土) 11:25:25
Python で作ったデーモンっぽいツールに
(と言ってもログ監視とかその程度だけど)
ちょっとしたウェブインターフェイスを付けたいと思っています。
こういう目的で使える HTTP を扱うモジュールってありますか?
http://www.athana.org/ なんかは単体のウェブサーバだし・・
PyHP
199 :
デフォルトの名無しさん :2008/09/28(日) 21:39:05
urllib の pathname2url を使って C:\cygwin\usr\local\bin\sandbox.py を変換すると /C|/cygwin/usr/local/bin/sandbox.py になります。 ドライブレターの後続の : が | になっています。 実際にはこれを URL として使おうとすると file:///C%7c/cygwin/usr/local/bin/sandbox.py となります。たしかに IE も含めてこのURLで ローカルファイルシステムのファイルを開くことができます。 : ではなく | を使う理由は、初期のNetscapeで : の 代替として | が使われていた(しかも RFC に反して %エンコードの対象から外されていた)という以外に 何か理由があるのでしょうか? また、 file:///C%7c/cygwin/usr/local/bin/sandbox.py と file:///C:/cygwin/usr/local/bin/sandbox.py のいずれが正規形なのでしょうか?
スレ違いのような気もするが、Wikipediaによると次の理由があったのらしい。
the original URL syntax とやらの出典がないので真偽は不明。
http://en.wikipedia.org/wiki/File_URI_scheme > On MS Windows systems, the normal colon (:) after a device letter has sometimes been
> replaced by a vertical bar (|) in file URLs. For example, to refer to file FOO.BAR in the
> top level directory of the C disk, the URL file:///C|/FOO.BAR was used. This reflected
> the original URL syntax, which made the colon a reserved character in a path part.
RFC1738を見る限りでは使えそうなんだがな
202 :
デフォルトの名無しさん :2008/09/28(日) 22:23:45
パスを構成する要素として使える文字 pchar の定義が RFC2396 から RFC 3986 で増えているのもそれに関連しているのかも。 RFC2396 "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" RFC3986 ではそれに加えて /"&" / "$" / "+" / "," / ";" / "=" / ":" / "@" ただ、RFC2396の時点でも既に | は含まれてないんだよな… たとえ : の代わりに | を使ったとしても %エンコードしなきゃ いけないことには変わりないんだけど、ネスケはそれを無視してたらしい。 「the URL file:///C|/FOO.BAR was used」ってことで今は file:///C:/FOO.BAR でいいわけで、なんで urllib では そうなってないんだろうな、と疑問に思った次第。
203 :
デフォルトの名無しさん :2008/09/28(日) 22:59:54
あ、いや、そういうことが言いたいんじゃなかった。 ドキュメントには「urllib.pathname2url() は urllib.quote() 処理された結果が返る」って書いてあるのに「|」が urllib.quote() 処理されてないじゃん、ってことが言いたかった。 バグじゃねぇ?って思ったんだけど、仕様なのかね。
204 :
デフォルトの名無しさん :2008/09/28(日) 23:02:04
C:\cygwin\usr\local\bin\sand~box.py は ///C|/cygwin/usr/local/bin/sand%7Ebox.py に返還されるので ~ はエスケープ処理されるんだ。 まぁ昔のNetscapeに合わせた仕様ということなんだろう。 とはいえ RFC3986 に準拠したい自分にとっては気持ち悪い。 再度 urllib.quote() かけると % が二重にエンコードされちゃうし。
205 :
デフォルトの名無しさん :2008/09/28(日) 23:20:04
urllib のコードを読んでみた。 なんのことはない、urllib.quote() は RFC3986 ではなく RFC2396 の reserved をエンコードしているだけ。 ただし "/" は引数 safe のデフォルト値なので除く。 で、そのreservedは何かというと RFC2396 reserved = ;/?@&=+$, RFC3986 reserved = :/?@&=+$,#[]!'()*;
206 :
デフォルトの名無しさん :2008/09/29(月) 00:09:14
207 :
デフォルトの名無しさん :2008/09/29(月) 11:39:14
組込み関数property()と メソッド__getattr__()、__setattr__()、__delattr__()って どっちか一方があれば事足りるような気もするんですが、 何が違うんでしょう??
>>207 __???attr__ は動的なプロパティに使えて柔軟。
propertyは用途が制限されている変わりに、単純にクラスにプロパティを追加したいだけなら楽に書ける。
209 :
207 :2008/09/29(月) 13:04:42
なるほどぉ〜。そういう亊ですね。 ありがとうございます。
210 :
デフォルトの名無しさん :2008/09/30(火) 03:45:11
winでscapy使ってる人います? キャプチャしたパケットをpdf表示するのにTeXが必要なんだけど MiKTeXだと上手くいくけど pLaTeX2eだとdvi出力でタイムアウトしてしまいます。 ちょっとソースみてみたところ、PyXのtext.texrunnerでexpextのパターン指定がないせいで TeXプロンプトが表示される前に入力を流し込んでるっぽい。 expextにどんなパターンを渡すかってとこで、なんだかわからずお手上げです。 まぁMiKTeX使えばいいんですけど せっかくTeXなんていう巨大なシステム入れるなら 日本語も使えるようにしたいっす。
211 :
デフォルトの名無しさん :2008/10/01(水) 15:21:52
global b a = 'a desu' b = 'b desu' def a_print(): print a return def b_print(): print b return class c(object): def a(self): print a def b(self): print b print 'a printed!\n' a_print() print 'b printed!\n' b_print() x = c() print 'class-a printed!\n' x.a() print 'class-b printed!\n' x.b() exit() グローバル変数って何なの?意味ないの?
def func1(): x = 10 def func2(): global x x = 20 x = 0 func1() print "x =", x func2() print "x =", x
>>211 Pythonのglobal文は、global変数を定義するときじゃなくて
それを使うとき(正確には、global変数に代入するとき)に使うもんだぞ
global bってのは「bというグローバル変数を定義します」
じゃなくて
「このローカルスコープでbというグローバル変数に代入したいです」
という意味だ
なにもなしでローカルスコープで
b = 1
とか書いたら、単にローカルにbという変数が作られてしまうからな
Pythonでは
214 :
デフォルトの名無しさん :2008/10/01(水) 23:43:37
SimpleXMLRPCServerを使ってクライアントから送られたデータに クライントのIPアドレスを付加して保存したいのですが, アドレスはどのように得ればいいでしょうか? class Server: def __init__(self, port): self.server=SimpleXMLRPCServer(('localhost', self.port)) self.server.register_instance(XMLRPCMethod) self.server.servforever() class XMLRPCMethod: def __init__(self): self.database=[] def senddata(self, data): #引数が送るデータ self.database.append((data, addr)) return True
>>214 普通に動かせばデフォルトでアクセスログがstderrに吐かれるみたい
あとハンドラにaddress_stringなるメンバもあるから使えるんじゃないかと
216 :
デフォルトの名無しさん :2008/10/03(金) 00:01:56
py2exe は VC7.1 でコンパイルされているようですが、 たとえば boost.python を使って VC9 でビルドした DLL を使うような Python アプリケーションでも py2exe が使えるものなのでしょうか? 異なるバージョンのランタイムを使うDLLが混在 していても問題ないものなのでしょうか? boost.python をつかった Python アプリを Linux から Windows に移植しようとしています。
217 :
デフォルトの名無しさん :2008/10/03(金) 01:31:22
configparser と optparse って、 こう、なんか、その、うまく連携してくれないものでしょうか?
>>216 FILE*に触ってなければ異なるコンパイラでも動くはず
msvc7とmingw gccでは大丈夫だった
GoogleのAndroidのアプリをPythonで作れませんよね?
モジュールがあればなんでも出来る
221 :
デフォルトの名無しさん :2008/10/03(金) 15:04:13
2.6 ririisu
ktkr?
223 :
デフォルトの名無しさん :2008/10/03(金) 17:02:56
CGIでクエリ文字列を参照したいんですが 環境変数「QUERY_STRING」にはどうやってアクセスすればいいんでしょ?? test.cgi?a=1&b2 の場合は a=1&b2 を取得したいです。
224 :
デフォルトの名無しさん :2008/10/03(金) 17:06:19
>>223 import cgi
data = cgi.FieldStorage()
a = data.getfirst('a','')
環境変数はos.environ
227 :
223 :2008/10/04(土) 16:42:07
228 :
デフォルトの名無しさん :2008/10/05(日) 02:45:07
デバッグってどうやってます? emacsに慣れちゃってるんで,Meadowのgud-modeで pdbを動かしたいんだけど,新規バッファに何も表示されず "q"で終了するとした時に,今まで溜まってたのが表示される・・・ WinPdbは使いにくいんだよなぁ・・・
PyScripter
すいませんlinuxなんです
eclipse + pyDevじゃだめ?
すいませんlinuxなんです
emacsじゃだめ?
235 :
デフォルトの名無しさん :2008/10/05(日) 12:03:50
すいませんlinuxなんです
あやしい部分で print すればいいよ。
すいませんlinuxなんです
すいませんほんとうはrubyなんです
239 :
228 :2008/10/05(日) 13:25:39
240 :
228 :2008/10/05(日) 13:33:09
>>238 スレチですが,rubyも本家で配布しているelispでは
Meadowでrubydbが使えません.
ドライブ文字を含むパスを通すように,rubydb3x.elを修正する必要があります.
Meadowは少数派なのかなぁ・・・
python 2.6 がリリースされていますが、 Psyco 1.6 は動作しますでしょうか? 本家にあるWindows用は2.5向けしかないようです。
>>241 一般にCで実装されていてコンパイルが必要なライブラリのバイナリ配布物は
メジャーバージョンが違えば*全て*使えない
ソースからコンパイルすれば使える*可能性*はあるが、公式にサポートが
表明されていないなら、全て自己責任の世界
243 :
241 :2008/10/05(日) 14:54:41
>>242 ありがとうございます。
これから使ってみようと考えている初心者なんで、素直に2.6用のがでてくるのを待ちたいと思います。
使ってみてエラー吐くか試すぐらいしてもいいんじゃね でもpsycoで高速化される場面は限られるよ
すみませんVAXなんです
外部ライブラリ使うなら、素直に2.52にしとけ。
windowsですが2.5から2.6にするには単に2.6をインストールすればいいのでしょうか?
初歩的な質問ですいません。(winXP) どうしてもPloneを使いたいのですが、zopeがPython2.4対応なので Ploneのインストーラが勝手に2.4をインストールするらしいのですが、 2.5がインストールされていても問題無いでしょうか? 初心者なのでただのスクリプトは2.5を使いたいのです・・・
すみません、返答まだですか・・・
インストーラを使うとレジストリに書き込むので複数バージョンの共存は無理。 Plone は知らないけど、TracLightなんかだとTrac用のPythonをインスコして環境変数まで書き込むんで既存のPythonのパスが見えなくなったりした。 そのときは環境変数を弄って対処した。 TracLightはコンソール操作用のbatがあってその中で環境変数設定をしているのでシステムの環境変数は無くても平気だったからそういうことが出来た。 いずれにしても初心者といわれたら難しいと答えるしかないと思う。
251 :
248 :2008/10/07(火) 09:57:50
>>250 さん ありがとうございました。
webサーバも勉強してみたかったので、Plone用のPCを
調達することにします。
threading.Thread 生成時に target= で関数を指定した時、 関数の戻り値を取る方法はありますか? def myfunc(arg): sleep 2 return arg * 2 th = threading.Thread(target=myfunc, kwargs={'arg': 2})
threading.pyのThread.runで戻り値は捨ててるね
助言ありがとうございます。Thread.runを再定義すれば何とかなる かと思いましたが、それを呼んでるところにも手を加えなければな らないみたいで挫折しました。別な方法を考えます。
255 :
デフォルトの名無しさん :2008/10/08(水) 11:08:58
mod_pythonについてです。
http://www.python.jp/doc/contrib/modpython/tut-what-it-do.html をテストしてたんですが
<Directory /usr/local/apache2/htdocs/py>
AddHandler mod_python .py
PythonHandler myscript
PythonDebug On
</Directory>
と設定すると正常に動くんですが、
<Directory /usr/local/apache2/htdocs>
のようにディレクトリの階層を1つあげると
ImportError: No module named myscript
がでてしまいます。。
上のリンク先によると「サブディレクトッリでもmod_pythonは処理します。」
みたいに書いてあるんですが、何か自分の設定が間違ってるんでしょうか??
ちなみに、Linux,Python2.5,mod_python3です。
256 :
255 :2008/10/08(水) 14:11:18
すみません。自己解決しました。 sys.pathへ指定しておくか subdir/myscript のように記述しないといけなかったようです。
質問です。 a.pyとb.pyの2つのスクリプトがあって、 a.pyから子プロセスを生成してb.pyを実行しようと思います。 ただ、a.pyはb.pyの終了ステータスを確認せずに終了させたいです。(waitしない) 2パターンのa.pyを作ったんですがどっちが良いコードでしょう? """ a.py パターン1 """ import os pid = os.fork() if pid == 0: os.execv("/usr/bin/python",("","b.py")) else: import signal signal.signal(signal.SIGCHLD, signal.SIG_IGN) """ a.py パターン2 """ import os os.popen2("/usr/bin/python b.py")
258 :
デフォルトの名無しさん :2008/10/10(金) 11:39:44
今まではほとんど単一のファイルで事足りるような スクリプトばかり書いていたのですが,最近ちょっと 大がかりなものを書いて複数のマシンに撒かなけりゃ ならなくなったので distutils を使ってみようと 思い立ちました. で,インスコはそれでいいんですが,アンインスコは なんか簡単にできないものでしょうか?というか アンインスコのための仕掛けは用意されていませんか? バージョンアップ時の入れ替えとか考えたら 結局 deb ファイルにパッケージしなきゃなら名ないのかな なんて思ってます(Ubuntuなので). できれば Python 世界だけで閉じたいのですが・・・
numarrayで、既に中身がintのarrayがある場合に、 それを全てfloatに変換するにはどうすれば簡単でしょうか。
260 :
デフォルトの名無しさん :2008/10/10(金) 12:18:18
Pythonを使えるIDEのお勧めは? Djangoをつかいんたいんですが。
>>259 array(arr, type=Float64)
>>258 RPM 系のディストリだと setup.py bdist_rpm とか、
Windows だと setup.py bdist_wininst とか出来るんだけどね。
reモジュール使って連続した改行を1つの改行にしたいんですが、 正規表現どうやって書けばいいでしょ? # before test test test ↓ #after test test test こんな感じにしたいのです。
\n+ を \n に置き換える
re.sub(r"\n+", "\n", text) か re.compile(r"^\n", re.M).sub("", text)
効率が悪いだろうがreを使わないで "\n".join(i for i in s.splitlines() if i)
join信者ってキモいよね
初耳だ
# いかにエレガントに効率の悪いコードを書くか、とか def shrink(x, c="\n"): a = x.replace(c * 2, c) return a if a == x else shrink(a, c)
おれも書いてみたよ def shrink(s, ch): if not s: return s return s[0] + shrink(s[1:].lstrip(ch) if s[0] == ch else s[1:], ch)
272 :
デフォルトの名無しさん :2008/10/11(土) 21:09:04
-m オプションの解説ってどこを見ればいいんでしょうか?
PHPでやっていた、たった二行の処理を再現しようとして見事にハマっております。 require("lib/$nnn.php"); call_user_func($nnn); importするファイルを動的に指定ってできないんでしょうか。その前にlib/nnの/の部分でSyntax errorがでてしまいます。 仕方なく、その後に行うcall_user_func($nnn);の処理の方法を先に調べて寝ようとしたら見事にハマっております。 PHPでいうcall_user_func($nnn)はできないんでしょうか。 ぐぐっても見つからずこのままだと寝れません。ご教授お願いします。
PHPは知らないから間違ってるかもしれないが foo/bar/hoge.pyのfuncなら import sys sys.path.append("foo/bar") import hoge getattr(hoge, "func")(arg1, arg2)
import hogeは hoge = __import__("hoge") の方がいいか
dirname, basename = os.path.split(path) modname = os.path.splitext(basename)[0] mod = imp.load_module(modname, *imp.find_module(modname, [dirname]))
ありがとうございます。これで無事寝れます。
それがPHPクオリティ
283 :
デフォルトの名無しさん :2008/10/13(月) 10:44:08
Perl Hentai Perl
windowsでPython2.5.2のコマンドラインを使う時に、日本語を入力できません。 IDLEでは入力できるのですが、コマンドラインでも日本語入力をするには どうすればいいのでしょうか?
Alt+全角とか?
>>285 日本語入力できました。
迅速なお答えありがとうございました。
それは実はコマンドプロンプトの仕様なんだ
288 :
デフォルトの名無しさん :2008/10/14(火) 22:27:32
Python内のデータをC++ のコードに渡すことは可能ですか? 例えば、Pythonで DB からデータを取得して、そのデータをC++のオブジェクトに渡す、というようなことです。 最初からC++で取得すれば良いとか、そういう突っ込みは抜きで御願いします。
最初からC++で取得すれば良い
ctypesを使ってCの型に変換して渡すとか C/C++で拡張ライブラリ作るとか
すみません。もっと面倒くさくない方法をお願いします。
pipe open
もっともっと簡単な方法をお願いします
294 :
デフォルトの名無しさん :2008/10/15(水) 07:00:56
boost.python
295 :
デフォルトの名無しさん :2008/10/15(水) 12:57:18
テキストファイルから例えば"a"という文字を検索して、マッチすれば その前後に指定の文字列を挿入する方法はありますでしょうか。(-人-)
>>> text = "aabbaaccaa" >>> text.replace("a", "fooabar") 'fooabarfooabarbbfooabarfooabarccfooabarfooabar' >>> import re >>> re.sub(r"(a)", r"foo\1bar", text) 'fooabarfooabarbbfooabarfooabarccfooabarfooabar'
297 :
デフォルトの名無しさん :2008/10/15(水) 14:58:23
ありがたす
298 :
デフォルトの名無しさん :2008/10/15(水) 16:17:10
プログラミング自体には関係しないかもしれませんが、 マッピング(連想配列)の出力結果がエディタで書いた 順番と違うのはなぜでしょうか?
入れた順序で出せることを保証していないから
実装がハッシュテーブルだから
理由を知りたいなら、アルゴリズム関係の本を読むんだ。
使えない奴らですね
いえいえ、どういたしまして
305 :
304 :2008/10/17(金) 21:51:32
次に ↓から SOAPpy の zip をダウンロード、
http://sourceforge.net/project/showfiles.php?group_id=26590 c:\tmp に解凍、zip の中に入っている readme.txt を見ると、setup.py build しろとあるので、やってみると
以下のエラーになる。
C:\tmp\SOAPpy-0.12.0> c:\Python25\python setup.py build
Traceback (most recent call last):
File "setup.py", line 8, in <module>
from SOAPpy.version import __version__
File "C:\tmp\SOAPpy-0.12.0\SOAPpy\__init__.py", line 5, in <module>
from Client import *
File "C:\tmp\SOAPpy-0.12.0\SOAPpy\Client.py", line 46
from __future__ import nested_scopes
SyntaxError: from __future__ imports must occur at the beginning of the file
Client.py の中身を見て、46行目にある以下の行を、
from __future__ import nested_scopes
ファイルの先頭に持っていってやりなおしてもだめだった。
このあとどうすればいいのでしょうか?
別のファイルで同じエラーが起きてるだけだろ
future 文をファイルの先頭に持っていっても Client.py に関する SyntaxError が消えなかったの?
308 :
304 :2008/10/17(金) 22:22:24
>>306-307 すみません、Client.py をなおしたあとの build のエラーメッセージをよく見ていませんでした。
おっしゃるとおり、Client.py を直すと Types.py で、その次は Server.py で
同じエラーが出たので、それぞれ移動して build しなおすとエラーがなくなりました。
最後に setup.py install でインストールしました。
ところで python のライブラリのインストールって、こういうふうにソース直すことがよくあるのですか?
PHP の PEAR だったら、依存するバージョンはないとか言われるけど、ライブラリの中のソースをいじることは
なかったのですが・・・・
EasyInstall
検索するためのスクリプト書いてます
普通にGoogleから検索するだけなら
import webbrowser
print "search: "
word = raw_input("> ")
webbrowser.open("
http://www.google.co.jp/search?hl=ja&q= " + word +\
"&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq=")
で行けたんですが、たとえば入力する時に"y "を最初に付けるとYouTubeから、
"w "を最初に付けるとWikipediaからとか指定したい場合、どのように書けば
いいのでしょうか。if で分岐させるのは解っているのですが、その書き方が
思いつきません。
314 :
デフォルトの名無しさん :2008/10/20(月) 19:52:35
わたしは wxPython で幸せになりました
Tkinterについて詳しく書いてある日本語ドキュメント(webでも本でも)ありませんか?
見覚えがあるけどURL忘れた ググレばすぐ出てくると思う
つかえないやつらだな、
pspでフォームデータの参照ってutilモジュール使えないですよね? fom = util.FieldStorage(req) form.has_key("formname"): だとダメみたいなので req.form.has_key("formname"): って感じやってるんですが、この方法でいいんでしょうか?
L = ["a","b","c"] s = "" for x in L: s = "%s%s" % (s, x) print s # "abc" シーケンスの要素を1つの文字列にする場合、 上のやり方以外に簡単な方法ありますか????
"".join(L)
321 :
319 :2008/10/22(水) 19:16:36
マルチすんなぼけ
arrayで0以上の要素はそのまま,0以下の要素は0に置き換える場合, a = array([-1,0,1]) for i in range(len(a)): a[i] = max(a[i],0) と書かずに一行で済ます方法ありませんでしょうか? matlabならmax(a,0)でいけたんですが.
arrayモジュールでもlistでもないみたいだしなんか間違ってないか それはさておき L = range(-2, 3) # [-2, -1, 0, 1, 2] L = map(lambda x: max(x, 0), L) # [0, 0, 0, 1, 2]
clip(a,0,inf)
>>> from numpy import * >>> a = array([-1,0,1]) >>> maximum(a, 0) array([0, 0, 1])
a = [max(i, 0) for i in array([-1, 0, 1])]
330 :
デフォルトの名無しさん :2008/10/27(月) 21:33:07
331 :
325 :2008/10/28(火) 10:08:21
いろいろやり方あったんですね. ありがとうございました.
すいません、pythonって浮動小数点相対精度表示させる関数ありませんか? 極めて小さい非ゼロの値が欲しいんですが。
>>332 「極めて小さい非エロのメイド」と刮目した
>>> import math >>> math.tan(math.pi) -1.2246063538223773e-016
>>> math.exp(-745) 4.9406564584124654e-324 >>> math.exp(-746) 0.0
>>332 相対精度表示というのが何のことか分からないんだが
print "%e" % 1e-16
じゃだめなの?
338 :
デフォルトの名無しさん :2008/10/29(水) 23:32:11
初めて書き込ませていただきます。 文を作りメモ帳をname.pyで保存し、それをコマンドプロントに表示させる のですが、 #codeing: UTF-8 print "こんにちわ"でコマンドプロントから普通に表示できるのですが、 print u"こんにちわ"だとエラーが出てしまいます。 UnicodeDecodeError: 'utf8' codec can't decode byte 0x82 in posid code byte となってしまいます。 なぜuが使えないのでしょうか;
ちゃんとutf-8で保存されてないんじゃなかろか
>>338 #coding指定はソースコードのエンコードを指定するためのもんだぞ
実際のソースのエンコードと一致してないとダメだ
多分name.pyはcp932になってるんだろ
341 :
デフォルトの名無しさん :2008/10/29(水) 23:56:37
>>339 >>340 素早い返答ありがとうございます。
はい、まさにcp932になっています。
しかし・・・すいません、テキストを見ているのですがソースとエンコード
の一致の仕方がわかりません;
>>341 ソースがcp932ならエンコード指定もcp932にすればいいだけなんだぜ?
343 :
デフォルトの名無しさん :2008/10/30(木) 00:08:07
>>341 ぉぉぉ・*:.。. (ノ´ω`・。)・*:.。. クスン
理解できました。ありがとうございます!
とりあえず、メモ帳やめて他のフリーのテキストエディタ使え
やさしいスレだな
346 :
デフォルトの名無しさん :2008/10/30(木) 04:46:25
サクラエディタか寺パッドがオヌヌメ でも Eclipse + PyDev が便利だが
メモ帳って勝手に改行増えたりするよね
>>347 そんな夢のような機能は聴いたことがない。
Pythonのチュートリアル読んだのですけれど色々と理解できない日本語があったりして あまり理解を深める事が出来なかったんですがやはりみんなのPythonとかそのあたりを買ってみるべきですかね
初めてのPythonの方がいいとおも
でもそれはちょっと古いからな
確かにちょっと古いけど読み進めるのに支障はないんじゃね?
ご教示ありがとうございます。それにしても高いですね・・
PHPとJavaしか知らないんだけど、pythonでWebアプリって簡単に作れるもんなの?
別に
うん
PyScripterの文字化けで悩んでいます。 print "日本語" のように日本語を含むプログラムを実行すると、 ウィンドウ下部に表示される実行結果が文字化けするのですが これを改善する方法はありますでしょうか。 ちなみにインタープリタエディタオプションにて、フォントは日本語フォントに変更してあります。
あります
print u"日本語"
Tools Options IDE Options Python Interpreter UTF8 interactive interpreter [ ] OK >>> print "日本語" 日本語
>これを改善する方法はありますでしょうか ちなみに改悪だから
>>360-363 ありがとうございます。
utf-8とunicodeの違いを把握していなかったのが原因でした。
解決してよかったね
from matplotlib.pylab import * x = array([0,1,2,3]) y = array([0,1,2,3]) for i in range(10): plot(x,i*y) show() matplotlibを導入しました。 例えば上のように次々と一次直線をグラフに表示させたいのですが、一回目のshow()で止まってしまいます。 どのように書けばよろしいでしょうか?
367 :
デフォルトの名無しさん :2008/11/02(日) 09:12:22
vine linuxでpondesaからpythonをやっています。 インタラクティブシェルでユニコードを使おうと思いましてた。 ustr = u"日本語" print u で、エラーが発生してしまいます。 pythonのverは2.4.4です。 ver的に問題はないかと思うのですが・・・・・・・ どうしたらユニコードが使えますか?
>>368 すみません・・・・・・・
真面目な答えを希望してるんですが・・・・・・・
ユニコード以前に
>>367 はプログラミングの素質が無いと思う。
>>367 > print u
その「u」って変数名はどこから出てきたんだ?
文字列を代入した変数は「ustr」だろ?
俺も
>>370 に同意する。
プログラミングを始めたばかりでOSがWindowsとかなら 丁寧に答えようという気にもなるだろうけど > print u ustr はどこへ行ったんだ
373 :
372 :2008/11/02(日) 12:21:27
レスがかぶって前のレスと二分差とかって恥ずかしいよね 吊ってくる
すみません・・・・・・・これでもLinux使えてるんですが 素養ってなんですか?
ぃぬxが難しかったのは10年前の話
>>374 ここのスレにいる人たちは自分たちが答えられない質問が
書かれると、叩きに入るから無視してしまったほうがいいよ。
いやいや、
>>367 に答えられないやつはいないだろw
378 :
377 :2008/11/02(日) 13:48:37
あれ、よくよく見ると俺にもわからんなw
騙りとはまた暇な・・・
382 :
367 :2008/11/02(日) 16:10:34
すみません・・・眠気で文字が抜けていました。。 皆さんご迷惑おかけしてごめんなさい・・・ ustr = u"日本語" print ustr でした。 みんなのpythonに表記されている通りにしたのですが、 ユニコードを使うにあたって、アプリケーションの設定が必要やら と書いてありました。もしかしたらそれなのかもしれません。 ただ、その設定の仕方はあえて載せてないみたいです。
謝って済む問題じゃないな。とりあえず脱げ
385 :
デフォルトの名無しさん :2008/11/02(日) 16:17:52
あのさぁ、スレタイとはあんまり関係ないんだけどちょっと聞いてくれよ。 実は6〜7年前銭湯で幼稚園ぐらいの女の子に「パパー この人のちんちん大きー」と指をさされて大声で言われた。 確かに俺の息子は大きい方だったが、指をさされたのは初めてだった。俺は特にタオルで隠すことはしなかったので特に目立ったのだろう。 その子のお父さんは「すみません」と恥ずかしそうに謝っていた。 しかし、それだけでは終わらなかった。 俺が体を洗っているとその女の子が友達の女の子2人を連れてきて「ほら、この人のちんちんとっても大きいんだよ」とわざわざ見に来た。 お父さんが「やめなさい」と言ったのと同じくらいに女湯の方から「○○ちゃ〜ん、なにお話してるの?」と同じくらいの女の子の声が聞こえてきた。 すると「この人、とってもちんちんが大きいの。ゾウさんみたいなの」とありったけの大声で叫んでいた。 すると男湯、女湯の両方からくすくすと笑い声が聞こえた。 俺はとんでもなく恥ずかしくなって石鹸を流して早く上がろうと思い立ち上がったとき、不覚にも勃起してしまった。 その場にいた女の子3人から「わっ!」と声が上がり「○○ちゃ〜ん、大変〜、この人のちんちん上にいっちゃったの〜、パオーンしてるの〜」と 女湯に向かって叫んだ。男湯・女湯同時に大爆笑がおこった。その女の子達は「すごーい! すごーい!」と俺の息子に向かって拍手をしていた。 それを見た男湯の人たちがさらに爆笑し、その爆笑につられて女湯でもいっそう大きな爆笑になった。 恥ずかしさをこらえて体を洗っていると、女の子3人もとなりで体を洗い始めた。 「ぞうさんのお鼻も洗ってあげようね」といって、俺の息子を洗い始めた。不覚にも俺は子どもの石鹸遊びのような洗いで 射精してしまった。「わー。ぞうさんのくしゃみすごーい。白いはなみずが鉄砲みたいに飛んだー」 「ちがうよ。お鼻でミルクのんだのはきだしちゃったんだよ」銭湯中が爆笑の渦となった。 俺は逃げ出すようにして銭湯から出て行った。 その日以来、その銭湯へは行かなくなった…。
トレースバック貼らないとエスパー回答しかできないよ UnicodeEncodeErrorって出てるんじゃないの? print ustr.encode(utf-8') とかしてみたら この質問もいい加減テンプレが必要だな
2.4以降なら特に設定などは要らなかったはず。
389 :
367 :2008/11/02(日) 22:55:19
遅くなりました。
>>383 脱ぐのだけは勘弁してください
>>386 えと、エラーの表示はですね。
Traceback (most recent call last) :
File "<stdin>", line 1, in?
UnicodeEncodeError: 'euc_jp' codec can't encode character u'\x97'
in position 1; illegal multibyte sequence
と表示されました。
>>387 UnicodeEncodeErrorって出ました。
print ustr.encode('utf8')と入れてやってみたところ
文字化けが起きました。
度々すみませんがよろしくお願いします。
390 :
367 :2008/11/02(日) 23:29:35
print ustr.encode('utf-8') でした。
367をパイソンにインポートしようとするとエラーになります。 どうしてですか?
とりあえず、 スクリプトの一行目 (一行目が #! で始まってたら 2行目)に # coding: euc-jp と記述して、スクリプトファイルを euc-jp で保存して実行してみ。 それでもだめなら、エラーメッセージを全部貼ってくれ。
393 :
デフォルトの名無しさん :2008/11/03(月) 18:04:02
print ustr.encode('utf-8').decode('euc-jp')
394 :
デフォルトの名無しさん :2008/11/07(金) 06:06:47
Pythonを初めて間もない、超初心者です。 もしよろしければ、知恵をお貸しいただきたいと思っています。 文字列中における空白で文字列を2つに分けるという作業をやっています。 そのためsplitのメソッドを使って分けたところ、日本語が[\x90\x09]のような \が付きコードのようになってしまいます。 これはlistでの仕様なんでしょうか? これをなんとか日本語にしたいと思っているんですが無理なんですかね? この問題が解決してくれないと、いまやっている作業が全然進まないため、 よろしければ解決方法を教えてください。よろしくお願いします。 バージョンはPython2.5.2です。
IDLEが表示するときにエスケープしてるだけだろう。 printで表示させれば日本語のまま出てくるかと。
>>> u'ふが ホゲ'.split(' ') [u'\u3075\u304c', u'\u30db\u30b2'] >>> print u'ふが ホゲ'.split(' ') [u'\u3075\u304c', u'\u30db\u30b2'] >>> print repr(u'ふが ホゲ'.split(' ')).decode('unicode-escape') [u'ふが', u'ホゲ']
398 :
デフォルトの名無しさん :2008/11/07(金) 10:02:10
この質問もいい加減テンプレが必要だな
listの仕様です
400 :
デフォルトの名無しさん :2008/11/08(土) 23:39:05
パイソン3.0はどの程度仕様変更がなされるんでしょうか?
解説読めば
403 :
デフォルトの名無しさん :2008/11/08(土) 23:55:04
394です。 皆さんの回答を参考にさせていただいて、解決しました!! めちゃくちゃ簡単なことで詰まっていたとわかって、とても恥ずかしいです・・・ 本当にありがとうございました。
>>403 最初は誰でもそんなもんだし、まったく気にする必要ないよ。
「簡単なこと」でつまづくのが普通ですよ。 トラブルやミスの99%以上は「簡単なこと」が原因。
>>407 多分実際には何も起きなかったのではなくエラーメッセージを吐いて
終了したんじゃないのか
見たところ、コマンドプロンプトで
python aaa.py -d 保存先ディレクトリ XMLファイル名
のようにして実行するとよさそうだぞ
>>408 ありがとうございます! windowsのコマンドプロンプトで
D:\xml>aaa.py -d D:\xml jawiki.xml
と入力したところ、動作が始まりました。
410 :
デフォルトの名無しさん :2008/11/11(火) 03:45:04
Pythonを使って、PostgreSQLのデータベースにアクセスしようと考えています。 pgdbを使おうと考えているんですが、使ったことのある方の意見を聞かせてください。 インストールのし易さや、使いやすさ、または私はこういう物を使っている等。 pythonバージョン:2.5.2でOS:windowsXPです。よろしくお願いします。
俺はRubyを使ってる。
>>410 悪いことは言わないから MySQL 使っとけ。
現場で使える知識を得ることは大事だぞ。
413 :
デフォルトの名無しさん :2008/11/11(火) 22:04:46
sqliteでもじゅうぶん
>>410 Ubuntuでpygresql使ってるけど、
ドキュメント見ながらやってて別に詰まったりはしなかった。
WinXPで使ったことはないからインストールはよくわからない。
412はMySQLしか使ったことがない負け犬ITドカタだから気にするな。
‥と短小チンポの415が申しておりますので、Postgreでいいんじゃないでしょうか。 ぞうさんマークだしね。
今時PostgreSQLをPostgreと略すのはキモオタ童貞か負け組の低賃金ITドカタ(この不況で確実にニート化決定)だけ。
ちょっと聞きたいんですが、 label1:entryBox label2:クリックで現れる文字 ボタン って配置にしたいんだけどこのコードじゃうまくいかないんです。 self.label1.grid(row = 1, column = 1) self.entry.grid(row =1, column = 2) self.label2.grid(row = 2, column = 1) self.button.grid(row = 3, columnspan = 1) どうしたら上のような配置にできるでしょうか?
ちなみに、 self.srice.grid(row =3, column =2) self.txt.grid(row = 4, column = 1) とやると、self.button.gridより self.label2が上にきて、その下にself.txt.gridが真ん中にくる感じです。 どうしたらよいのでしょうか?
self.label1.grid(row=0, column=0) self.entry.grid(row=0, column=1) self.label2.grid(row=1, column=0) self.button.grid(row=2, columnspan=2, sticky="w")
421 :
418 :2008/11/12(水) 13:34:57
ありがとうございます! もう1つ問題が出てきたんですが ボタンをクリックしたら結果を出すようにしてるんですが、 結果は出てくるものの欲しい結果が出ません。。 def buttonAction(self): book = self.entry.get() if book < 1: self.label3.config(text = "0 point.") elif book == 1: self.label3.config(text = "5 points.") elif book == 2: self.label3.config(text = "15 points.") else: self.label3.config(text = "30 points.") という風にユーザーが本の数を入力すると その入力数によってポイントを出すっていうやつなのですが、 どの数字をあてはめても30 pointsを出力してしまいます。。 if文が間違っているのでしょうか?
entry.getの戻り値はstrじゃないか? intに変換するか、文字列と比較するかじゃないだろうか
Pythonの書籍が充実した書店って首都圏内でありますか? 洋書とかを中身を読んでから買いたいんだけど、 横浜有隣堂・紀伊國屋じゃ置いてなかったので。
yodobashiのPC書籍コーナーとか webで十分じゃね?と言っておく
コンピュータ関係で洋書と言ったら、昔は書泉ブックタワー2階にもあったが 今は池袋ジュンク堂の6階ぐらいか? 紀伊國屋新宿南店の洋書フロアと 神田三省堂も置いてたかな。
426 :
418 :2008/11/13(木) 01:53:32
>>422 遅くなりましたがありがとうございます!
おかげで思うように動きました!
427 :
デフォルトの名無しさん :2008/11/14(金) 07:15:29
410です。 遅くなってすいません。回答本当にありがとうございました!! Ubuntuのpygresqlを使うことにしようと思いました。 しかし、pythonのバージョンが2.4用の物しかないように思えるんですけど、 python2.5用のpygresqlってどこに置いてあるか教えてもらえませんか?
428 :
デフォルトの名無しさん :2008/11/14(金) 08:14:14
↑ すいません、自己解決することができました!!
できてません。 すぐに回答ください。
どっちやねんw
まともなやりとりしたいなら質問者はトリップつけてくれ
できてますん
自己解決なりすまし君がでるからトリップつけたほうがいいね
自己解決しました!
まだでしょうか‥
>>433 トリップってなんですか新しいモジュールか処理系の名称でしょうか
こっそりなりすまそうとするのはやめてください もう自己解決したんですから
>>436 すみません、私が本物なのですがこっそりと
なりすまそうとするのはやめてくださいもう自己解決したんですから
夜中にこんな事していて虚しくないのだろうか
インタラクティブシェルでのディレクトリの移動ってどうやるんですか 本にも載ってないしググっても見つからなくてスクリプトが起動できないんですけど
os.chdir(path) # path に移動 os.getcwd() # 現在の作業ディレクトリを返す もしWindowsを使ってるなら、ファイルアイコンの右クリックメニューから そのファイルのパスを作業ディレクトリとしてコマンドプロンプトを起動できる 拡張があったような気がするから探してみるといいかも
ありがとうございます。何とかなりそうです
インタラクティブシェルは、IPythonがお勧め。 cdでディレクトリ移動もできるよ。
ディレクトリを移動したのは良いのですけれど インタラクティブシェルからのスクリプトが起動の仕方が分かりません python test.py と打ち込んでもエラーが出てしまいます
やっぱ勘違いしてる インタラクティブシェルってシェルって付いてるけどshとかと違うよ ていうか短いコード実行して試行錯誤したいならIDLE使え スクリプト実行したいならターミナルなりcmd.exeから実行すればいい
>>444 ありがとうございます。解決できました
勘違いしていました。
>>443 ipythonなら !python test.py でできる。
もしくは、 exec test.py
夜中にこんな事していて虚しくないのだろうか
このすれにわいてるいけぬまくんはやくしなないかなあ
さきほどpython2.5をインストールして"Hello world"レベルの 簡単なスクリプトをいろいろ試してたんですが、突然 printで文字が表示されなくなりました。 WindowsXPのDOS窓で、実行していた状況です。 再起動しても状況変わらずです。 何が原因なのでしょうか?
450 :
449 :2008/11/16(日) 00:52:57
すみません。 python test.py のようにpythonを頭につけないと動かないようです。 最初はそんなことなかったんだけど・・
.pyをpython.exeに関連付けていたのが、エディタに関連付けを変えてしまったんじゃない?
452 :
449 :2008/11/16(日) 02:34:12
>>450 まさにその通りです。毎回エディタが起動していました・・・
自分で関連付け変えたんでした。
ズコー
454 :
デフォルトの名無しさん :2008/11/16(日) 11:14:36
ドザは大目にみてやらないと
assoc .py=Python.File
ファイル名の補完をタブでやるにはどうすればいいですか? f = open("hoge.txt") "hまで打ってタブを押すと、.txtまで出てほしい。
>>458 ちょ、
>>456 で一言もipythonって言われてないんだが。
ipythonで補完がとまるなら、ほかに hoge で始まるファイル名なり、
変数名なりがあるんじゃないの?
候補がひとつなら普通に拡張子まで一気に補完されるよ。
俺も普段IPython使いだが、常識では特に明示しない限り普通のPython Shellだと 思ってたよ。 普通のPython Shellでもちょっと設定するだけで補完できるし
回答 「ちょっと設定するだけ」
463 :
デフォルトの名無しさん :2008/11/19(水) 21:00:09
Pythonの変数名って2語以上を連結するときはふつうキャメルですかアンダースコアですか。
PEP 8でぐぐってくらさい
sys.getdefaultencoding
466 :
デフォルトの名無しさん :2008/11/20(木) 05:33:44
listに含まれている数字をstr型からint型へ変換したいと思い、 int(List[0]) print type(List[0]) と、テストで書いたんですが<type 'str'>と出てしまいます。 どうすればlistの型変換でできるんでしょうか?よろしくお願いします。
List[0] = int(List[0])
468 :
デフォルトの名無しさん :2008/11/20(木) 13:37:06
ありがとうございました!! めちゃくちゃ初歩的な事で申し訳ありません。
>>466 みたいに関数に通したデータを変数に入れないままだと、そのデータはどうなっちゃうの?
ガベージコレクションとかいうやつで自動的に破棄されちゃうの?
470 :
デフォルトの名無しさん :2008/11/20(木) 19:39:46
プログラム初心者ですが、pythonから始めたいです 入門書でわかりやすいのを教えてください
472 :
デフォルトの名無しさん :2008/11/20(木) 22:03:37
>>471 オライリーの初めてのパイソンは難しいという話がありましたが、大丈夫でしょうか?
問題は古いこと 簡単にさくっと読みたいなら、適当なの1冊読んでネットで色々調べればいいんでないな
>>472 難しいよ。始めは誰でも難しいよ。
けど、難しいでしょうか?と質問ができる
あなたなら買ったあとに活用できると思う。
ネットでもドキュメントが普通に公開されているし、
プログラミングはなんだろうか?というのなら
他のサイトを見ながらテストコードを書けば良いよ
数字のリストを引数として受ける関数を作って リストの中の数字の平均を出したいんですが、うまくいきません。 ちなみに自分で考えたコードは numList = [] numList.append(value) value = input("Enter a number: ") def numbers(numList): total = 0 count = 0 numList = [] for value in numList: total = total + value count = count + 1 average = total / count print average です。
"うまくいきません"じゃなくて、もっと具体的に書いたほうがいい。 numbers関数は numList = [] ってとこを消せば動くように思うよ。
477 :
475 :2008/11/21(金) 11:06:17
すみません。うまくいかないっていうのはエラーが出るんです。
いろいろ試行錯誤してるのでどんなエラーかは覚えてません。。
>>476 numList=[]消してみましたがだめでした。
エラーが出たらそのままコピペしろ
自己解決しました。
480 :
デフォルトの名無しさん :2008/11/21(金) 11:42:48
日本語のHTMLを読み込み、そのエンコードである”shift-jis”を"EUC-JP"もしくは”UTF8”に変換したいと考えています。 なにかそのようなモジュールとかご存じではないですか? バージョンはpython2.5です。
>>480 import urllib
f = urllib.urlopen('
http://www.yahoo.co.jp/ ')
html = f.read()
f.close()
unicode_string = html.decode('utf8')
sjis_string = unicode_string.encode('sjis')
eucjp_string = unicode_string.encode('eucjp')
>>480 unicodeを経由して変換するだけだが、
多分そのhtmlは、Shift_JISといいつつ十中八九はWINDOWS-31J(cp932)
でエンコードされているのでcp932を指定したほうが安全。
しかし、それをunicode経由でeuc-jpに変換しようとすると、文字セットやマッピング
が異なるので、コケるケースが出てくる。
PythonはいわゆるeucJP-msをサポートしていないので、eucJP-msを使いたいなら
自分で作りこむか、subprocessやctypesで外のプログラムやライブラリを
使うことになる。
もっとも、単にhtmlを出力したくて、文字を実体参照に変換しても良いのなら、
htmlstr.decode('cp932').encode('euc-jp', 'xmlcharrefreplace')
で良い。
483 :
481 :2008/11/21(金) 12:36:56
>>> uchar = u'\u2460' # 丸付き数字 (1)
>>> uchar.encode('cp932')
'\x87@' # CP932 での (1)
>>> uchar.encode('sjis')
... UnicodeEncodeError: 'shift_jis' codec can't encode character u'\u2460' ...
>>> uchar.encode('eucjp')
... UnicodeEncodeError: 'euc_jp' codec can't encode character u'\u2460' ...
>>> uchar.encode('sjis', 'xmlcharrefreplace')
'&#9312;' # 文字実体参照での (1)
勉強になりました。
>>482
オライリーの本なんか読むから、基本的なことも身につかないんじゃ。
486 :
デフォルトの名無しさん :2008/11/23(日) 01:16:19
>>481 ,482
ありがとうございました!!早速やってみました。
import urllib
html = data.read
unicode_string = html.decode('cp932')
data = unicode_string.encode('utf8')
print data
しかし,これだと文字化けしてしまい必要な処理ができなくなってしまいます。
現在、このhtmlの中にある必要な情報だけを取り出し、データベースに書き込むという作業をしているのですが、
ERROR: invalid byte sequence for encoding "EUC_JP" とエラーを吐いてしまいます。
どうも、データベース自体のencodeがEUC_JPなのに対してこの文字がshift-jisのため
おこられているとわかりました。それで、なんとかshift-jis -> EUC-JPに変換できないかと四苦八苦しています。
これが482さんが言われていた、こけるケースですかね?
JapaneseCodecsなら直接マッピングしてるかもよ
>>486 >unicode_string = html.decode('cp932')
>data = unicode_string.encode('utf8')
ここの'utf8'を'euc-jp'にしたらUnicodeEncodeErrorが
起きたっつーことでいいのかな?
だとすれば
>>482 の通りだな
どの程度のパフォーマンスを要求されるのか知らんが、
どうでもいいならnkfあたりに変換させるのが楽だと思われ
489 :
デフォルトの名無しさん :2008/11/23(日) 02:38:32
すいません!! data = unicode_string.encode('utf8') ↓ data = unicode_string.encode('euc-jp') でした。 488さんのご指摘の通りです。
490 :
デフォルトの名無しさん :2008/11/23(日) 03:46:06
>>487 私も一度JapaneseCodecsでやろうと思ってたんですが、
pythonのバージョンが2.3までしか見つけることができずに諦めました。
>>486 例えば Windows で日本語を入力すると CP932 の文字セットが使われるので
Unicode 経由で EUC-JP に変換すると対応する文字がないという問題が起こる。
具体的には以下の8つの記号が問題になる。次のように置き換えから変換するとよい。
>>> text = u"\u2014\uFF5E\u2225\u22EF\uFF0D\uFFE0\uFFE1\uFFE2"
>>> text.encode("euc-jp")
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
text.encode("euc-jp")
UnicodeEncodeError: 'euc_jp' codec can't encode character u'\u2014' in position 0: illegal multibyte sequence
>>> unification = {
0x2014: 0x2015, # HORIZONTAL BAR
0xFF5E: 0x301C, # WAVE DASH
0x2225: 0x2016, # DOUBLE VERTICAL LINE
0x22EF: 0x2026, # HORIZONTAL ELLIPSIS
0xFF0D: 0x2212, # MINUS SIGN
0xFFE0: 0x00A2, # CENT SIGN
0xFFE1: 0x00A3, # POUND SIGN
0xFFE2: 0x00AC} # NOT SIGN
>>> text = text.translate(unification) # 問題になる記号を置換
>>> text.encode("euc-jp")
>>491 それらはマッピングの違いの問題だね
それとは別に、13区の丸付き数字などのいわゆる「機種依存文字」の問題がある
493 :
デフォルトの名無しさん :2008/11/26(水) 18:36:56
この質問もいい加減テンプレが必要だな
494 :
デフォルトの名無しさん :2008/11/27(木) 12:25:44
すいませんこれからpythonを学習したいのですが
http://www.python.jp/Zope/downloadのサイトの Python標準リリースと日本語環境用インストーラ(Win32),Python 2.3.4ベースのどちらを
インストールしたらいいのでしょうか?
基本的にutf8でコード書くので問題はないのですが、前者でインストールする場合はsjisは使えないということですか?
ありがとうございます本家があったんですね バージョン2.6をダウンロードしました
python.jpは罪つくりだよなぁ
情報の古いサイトが検索で上位に来るなんて よくある話じゃない。
PyScripterの設定で質問なのですが 行間の開け方は Extra Lines でできるのですが、 文字同士の間隔は設定できないのでしょうか。もう少し狭くしたいです…
できますよ
どうやるんですか?
Pythonスレには、他人を騙ったり適当なことを言って周りを困惑させる愉快犯が居座ってるので、
>>500 のような適当なレスは信用しない方が良いですよ。
503 :
デフォルトの名無しさん :2008/12/01(月) 02:24:34
ネットで間違った情報が流れて来るなんて よくある話じゃない。
504 :
デフォルトの名無しさん :2008/12/01(月) 08:17:38
2chはその総本山とも言える
真面目な話、メーリングリストで質問した方がいいぞ。 ここはただの雑談場だからな。
506 :
デフォルトの名無しさん :2008/12/01(月) 10:54:10
何かご不満でも????
507 :
デフォルトの名無しさん :2008/12/01(月) 11:05:08
ハヒフヘホ パピプペポ バビブベボ
508 :
デフォルトの名無しさん :2008/12/02(火) 13:37:47
一般的にインデントはタブと半角スペースどっちがいいんでしょう? 好みの問題でしょうか? 自分の遠い記憶によるとGuideは半角スペースを推奨していたような気がするんですがどうでしょう?
xpでIPython0.8.2使ってるんだけど、 cdコマンドがうまく機能してない。 In [9]: !cd D:\Pytmp In [10]: !cd ./sudoku In [11]: !cd D:\Pytmp Pytmp下にあるsudokuフォルダに移動しようとしたけど効いてないみたい。
./sudokuじゃなくて.\sudokuだった。でもそれでもだめだ。 コマンドプロンプトの方ではちゃんとcd使えてます。
>>510 !はシェルにコマンドを実行させるので、シェルのカレントディレクトリが
変わるだけで、pythonインタプリタ自身のカレントディレクトリは変わらない
cd使うときは!をつけずにやれ
他に、pwdだのlsだのも!なしのものが使えるよ
>>512 あー、ほんとだ!
インタプリタのカレントディレクトリは独立していたのか。
!無しでうまくいきました。ありがとう。
MS-DOS的感覚がある人かな? 基本的にカレントディレクトリというのはプロセスに属するものだから、 子プロセスがカレントディレクトリを移動しても(!でcdを実行しても) 現在のプロセスのカレントディレクトリは変わらない。 cdが外部コマンドだと意味がない理由、という奴ね。
515 :
508 :2008/12/02(火) 23:16:11
>>> 0700 File "<stdin>", line 1 0700 ^ SyntaxError: invalid token え・・・?
517 :
デフォルトの名無しさん :2008/12/05(金) 13:46:48
>>> 700 700 >>> 0700 448 >>>
>>516 はPython3.0かな。0o700に変わった。ドキュメント嫁
>>518 > Octal literals are no longer of the form 0720; use 0o720 instead.
見落としてたスマソ
なぜ素直にまったく読んでなかったと言えないのかねえ
521 :
デフォルトの名無しさん :2008/12/07(日) 14:00:23
for line in open('text.txt', 'r'): print line こんなコードを書いた時、line に入っているのはどんな 文字コードなんでしょうか? line のタイプは <type 'str'> とのことです。unicode だったら明確なんですが、 str って単なる何でも入れられるバイト列なんでしょうか? 画像データなんかでモノホンのバイト列を扱うときも str にぶち込んでしまっていいものなんでしょうか? そういや raw 文字列などというものがあるらしい・・・ 混乱中
>>521 バージョン2.x系ならstrはただのバイト列で、画像などのバイナリデータも扱える。
エンコーディング決め打ちでいいのなら、テキストファイルをunicodeとして
読み込みたいときはcodecs.open()を使うといい。
バイト列として読んだ後で、エンコーディングを判別して変換するほうが柔軟だがな。
523 :
304 :2008/12/07(日) 16:50:08
Windows 版 python 2.5 で、 以下のようなスクリプトを作りました。 fin = open('input.txt', 'r') fout = open('output', 'w') for line in fin: line = line.strip() fout.write(line + '\n') fin.close() fout.close() input.txt の内容を output.txt に書き出すだけなのですが、 output.txt のファイルを秀丸で開くと、改行コードが CRLF になっています。 \n は、LF として出力されると期待しているのですが・・・ Unix 環境に持って行くファイルを作るスクリプトを作っているのですが、 Windows 環境で改行コードを LF で出力するには、どうしたらいいでしょうか?
あ、304 は関係ないです 失礼しました
fout.write(line + '\r')
Unix環境に行けば \n になるから気にすんな
528 :
523 :2008/12/07(日) 17:02:19
レスどうもありがとうございます。
>>525 \r だと CR になってしまいます。
>>526 Unix 環境には python がインストールされていないので、
あらかじめ Windows 側でデータファイルを作成しておきたい。
529 :
523 :2008/12/07(日) 17:04:31
>>527 ウホッ、 これでうまくいきました!!
どうもありがとうございました。このページはブックマークしておこう。
次スレにpythonのダウンロード先を追加していただけませんか?
python.jpだけは許せねえな
何でも人のせいにしてると誰も雇ってくれないよ(w
>>531 "実験バージョン"はないのではないかな
開拓バージョンくらいで
531=532だとしたら相当イタいな。
>>532 あそこはもう死んだサイトだから……
早く検索上位からいなくなってほしい
>>540 Python使っている人は全員関係者ですが何か(wwWwww
>>541 私は Python 使ってますが python.jp とは無関係です
あそこはもう死んだサイトだから…… 早く検索上位からいなくなってほしい 日本でpythonが流行らない原因を作ってる
>541 あんなのと一緒にしないでください あなたとは違うんです!!
547 :
デフォルトの名無しさん :2008/12/09(火) 07:09:26
python.jpより詳しいサイトってあるの?
2.5使ってます。 nan = float("nan") if nan == nan: print "nan is nan" else: print "nan is not nan" の実行結果が、else文の中身になります。 nanとnanを比較するにはどうしたら良いでしょうか。 infとinfの比較を同様に行うと、正しい結果に辿り着きます。
def is_nan(x): return type(x) is float and x != x def is_finite(x): return x not in (Infinity, -Infinity)
MLでいじめられたりしたのか?
551 :
548 :2008/12/09(火) 08:50:30
俺は北米に長く滞在していたこともあり英語は苦なく読めるのだが 翻訳ドキュメントにはお世話になるなあ 手の掛かる翻訳を無償で公開してくれている人たちには心底頭が下がる あのサイトを死んでるとか言う奴は、Python使ってないんじゃないのか???
翻訳プロジェクトの成果を python.jp で公開させてもらっているだけで、 python.jp と 翻訳プロジェクトは独立してる。
>>552 苦なく読めるのにお世話になる意味が分からん。
どうせアフィ目的だろjpなんて
アフィというかセミナーで金集める宣伝サイトみたいなもんね
屁理屈から妄想へ。
基地外って怖いですね
そういえば、日本のPythonコミュニティをどうこうするとか息巻いて玉砕してた人たちがいたよな 元気にしてるのかな? アッーー!
545みたいな奴がいるから日本でPythonが流行らないんだろJK...orz....
562 :
デフォルトの名無しさん :2008/12/09(火) 17:06:13
過疎ですね
>>561 きめえええええええええwwwwwwwwwwwwwwwwwwwwwwwwww
自殺予告通報しておいた(www
564みたいな奴がいるから日本でPythonが流行らないんだろJK...orz....
>>555 python-doc-jp という ML 見たら?
翻訳プロジェクトの中のアクティブなメンバーのうち、 python.jp の中の人は一人だけ。
python.jp と関係の無い翻訳プロジェクトメンバーは、ミスを修正するたびにその一人に
python.jp の更新してもらってる状態。
正直、sf.jp 上で公開したらどうかと思うんだ。。。
567みたいな奴がいるから日本でPythonが流行らないんだろJK...orz....
569 :
デフォルトの名無しさん :2008/12/10(水) 04:05:40
>>567 >翻訳プロジェクトの中のアクティブなメンバーのうち、 python.jp の中の人は一人だけ。
結局関係あるんじゃん。
>正直、sf.jp 上で公開したらどうかと思うんだ。。。
今の仕組みになにか問題があるのか?
教えて>中の人
日本語の取り扱いについてかなり誤解を与える載せ方だとは思う
573みたいな奴がいるから日本でPythonが流行らないんだろJK...orz....
流行るのが常に良い事とは限らないんだよね 無理に裾野広げてPerlやPHPやRubyみたいになってもどうかなぁ 今くらいがちょうど良いの鴨試練
>>575 でも、ruby界隈のあの盛り上がりは羨ましい
盛り上がりすぎると3.0へ行けなくなるおかん
python。jp(笑)で育つといつまでも井の中の蛙で3.0にいけないってことですよね、わかります
579 :
デフォルトの名無しさん :2008/12/10(水) 17:05:06
流行らないのを使ってるのが不満なら 流行ってると思う奴を使えばいい
Rubyistは熱い、元気。しかし他言語を蔑んでる人が多い印象。 Pythonistaは冷静、まったりしてる。そして他の言語もちゃんと評価してる印象。 だから俺はPythonが好き。
MLでいじめられてpython.jpに恨み持ってて日本語の扱いがどうこうって 一人しか思いつかない(wwwWwwwWWwwWwWwww
pyてょnがすきなのとpyてょん。jpが好きなのは別問題です
またruby厨が荒らしてるのか
永久凍土
つまりイジメがあるのは事実ということですねわかります
586みたいな奴がいるから日本でPythonが流行らないんだろJK...orz....
べつにはやらなくてもいいんだからね
流行らないと対応鯖が増えなくて困るかも
勝手に疎外感を感じてしまう人をボクチムと呼ぶそうだ。
所詮phpに負けてる言語
対応しててもインストールされてるのが 2.3 だったりする orz
PHPとは土俵が違うので Pythonとはぶっちゃけ比較の対象ですらないのが実態です
2.3 -> 2.5 に置き換えたら yum が動かなくなった orz
595 :
デフォルトの名無しさん :2008/12/11(木) 10:26:38
Python 3.0 では print(an_instance_of_HogeHoge) とした場合 class HogeHoge の __str__ が 自動的に呼ばれることはないのでしょうか?
__repr__が自動的に呼ばれるのではないのかな?
>>581 >MLでいじめられて
何年前の話だよ(w
いい加減忘れればいいのになー
2008年現在webに溶け込んでる言語 php>>perl>>超えられない壁>ruby>>>python google検索ヒット数 php>>>>>>>>>>超えられない壁>>>ruby>perl>python 何やっても使えねえな(笑)
モジックソさん生きてたんだ
彼はお花畑に暮らしているんですね。
必死wwwwwwwwwwwwwwwwwwwwwwwww
>>601 モジックソという人がいじめられた人なのか?
馬鹿なの?
いつになったらruby厨がいなくなるのか
毎日ブログ書く暇人っているんだな。
PHPを使って煽ってるのはあれか?Rubyの人か?
毎日息吸ってる暇人っているんだな。
ぐぐって検索してるときに糞ページがいっぱい出てくるような 無駄に埋蔵情報量の多いPerl/PHP/Rubyにくらべて 結構的確にヒットするPythonはいいよね人気なくて
それはユーザーの民度の違いなんじゃないか
Modules/xxmodule.c
620 :
デフォルトの名無しさん :2008/12/14(日) 02:51:33
popen2,popen3
subprocess推奨>外部プログラムの呼び出し ライブラリの呼び出しならctypes
今プロジェクトでしょうもないゲーム作ってるんですが、 ゲームはGUIの数当てゲーム。 簡単、普通、難しいレベル選べるようになってて、 レベルをクリックしたら、簡単用の画面をポップアップさせたいんです。 それってどうやるのか教えて欲しいです。 self.easyButton = Button(root, text = "Easy",\ fg = "black",\ bg = "white") self.easyButton.config(command = self.easyButtonAction) self.easyButton.pack() def easyButtonAction(self): ここに一体何をしたらいいんでしょうか?
Toplevel
#-*- coding: utf-8 -*- import fileinput widh=8 for line in fileinput.input(): tsv=line.split() print "+".join(["-"*(widh)]*len(tsv)) for cut in rabge(len(tsv)): tsv[cut]=tsv[cut].center(widh) print "|".join(tsv) と書いたtest.pyをコマンドプロンプトから起動したんですけどスクリプトが終了しません
インデント消えちゃった for line in fileinput.input(): tsv=line.split() print "+".join(["-"*(widh)]*len(tsv)) for cut in rabge(len(tsv)): tsv[cut]=tsv[cut].center(widh) print "|".join(tsv)
処理データの入力待ちだろ。 stdinに何か入れてみろ。
rangeがrabgeになってたりしてました 有難うございます
( ;∀;)イイハナシダナー
629 :
618 :2008/12/14(日) 21:01:55
619-621 ありがとうございました。
630 :
デフォルトの名無しさん :2008/12/14(日) 21:33:06
すみません質問です。 [hoge.py] import sys print sys.argv と書いた時に。 python hoge.py abcde としたときに、引数を取得できるのですが。 chmod 755 hoge.pyにしたあと。 ./hoge.py abcde ってコマンドを打つとなぜかなにも出力されません。 自作のコマンドをパスが通っている場所に置いて使いたいです。 よろしくお願いします。
>>630 先頭行に
#!/usr/bin/env python
とか書くといいぞ
#!/usr/bin/env python この書き方良く見るけどいつから始まったん? 有効なの? みんな違和感感じないの?
違和感感じたりWindowsしか使わないんなら別に書かなくてもいいよ
はあ?そんなこと聴いてないけど?
この業界で古株気取っても あまりいいことなんてないのに(*´・ω・)(・ω・`*)ネー
>>633 「違和感感じ」とか「はあ?そんなこと聴いてないけど?」
に違和感を覚えます。
とりあえず喰い付きのいい餌のひとつだということはわかった
python この言語、良く見るけどいつから始まったん? 有効なの? みんな違和感感じないの?
640 :
デフォルトの名無しさん :2008/12/15(月) 23:19:00
:. ::::.. ::::... ::::... ::::... ∧_∧_∧ ::::.(∀・( ´Д`) r -( ( O┰O ..::ii'⌒< < ) 冊冊〉 ::'、__,,l!しし(_)l!lJ´ '、__,l!j 「python。この言語、良く見るけどいつから始まったん・・・?」「バカヤローまだ始まってもいねーよ 」
>>641 普通にやってだめだった?
スタートメニューの中に、VC用にコンパイラやINCLUDEのパスが通った状態で
コマンドプロンプトを立ち上げるショートカットがあるだろ?
それを使ってコマンドプロンプトを立ち上げて、
>SET DISTUTILS_USE_SDK=1
としてから、試してみて。
>>642 遅くなりましたが、ありがとうございました!!
Win上でPython2.5と2.6が共存できるみたいだけど、環境変数のPathにはどう書いたらいい? 2.5と2.6を簡単に切り替えて実行できるようにしたいんだけど、python.exeは名前被ってるし…。
俺はpython26.exeという具合に名前書き換えてるな exeだけ名前変えれば大丈夫なはずだ
set python25=C:\Python25\python.exe > %python25% これじゃ、なんか問題あるんか。
647 :
デフォルトの名無しさん :2008/12/17(水) 13:00:05
print が文から関数になりました. print "abc", のようにして改行させずに表示しようと思い print("abc",) としてみたんですが,だめみたいです. print で改行なしの表示ってのはもうできないんでしょうか?
>>642 641とは別人ですが、その手順でやってなお、
The .NET Framework SDK needs to be installed before building extensions for Python.
というエラーが出ます。
助けてください。
651 :
642 :2008/12/17(水) 14:57:42
>>650 インストールしている Windows SDK のバージョン、 Visual C++ のバージョン、
Pythonのバージョン、それぞれ書いてみて。
>>651 Microsoft Platform SDK for Windows Server 2003 SP1
Microsoft Visual Studio 2005
Python2.4.3
です。
お願いします。
653 :
652 :2008/12/17(水) 16:31:44
ちなみにsetup.pyの中はこんな感じです。 # -*- coding:sjis -*- from distutils.core import setup, Extension module1 = Extension( 'test', sources = ['test.c']) setup( name = 'PACKAGE_NAME', version = '1.0', description = 'Test', ext_modules = [module1] )
>>652 全部バージョンが一世代古いのな。正直、ワカンネ。
とりあえず、VCのバージョンが違うから、 DISTUTILS_USE_SDK=1 は必要。
PlatformSDKで、スタートメニューの中に、コンパイラの設定をしたコマンドプロンプトを
起動するショートカットある?
あれば、それで起動して、あとは
>>642 と一緒のハズ。
それでダメなら、
> set MSSdk
で変数の中身を確認して
distutils.msvcconpiler読んだ方が速いぞ
656 :
652 :2008/12/17(水) 17:09:10
ソースだろ
Pythonに興味があるのですが 実際Pythonってどんなのを開発するのに 便利な言語なんでしょうか? 実例が少なく分からないため教えて欲しいです。
659 :
652 :2008/12/17(水) 17:35:20
>>658 Perlやphpが特定用途でよく使われているのに対して、Pythonは特定用途に最適化せず、
汎用言語として設計されている。
デスクトップアプリでは、アプリ自体をPythonで作ったり、アプリのプラグイン機能をPythonで
書けるようにしたり。Web、FTP、IRCサーバーといったサーバーにも使われるし、Webアプリにも
使われる。もちろん日々のスクリプティングにも使える。
PythonとC/C++とアセンブラができれば、プログラミング言語の需要のほぼすべてをカバー
できる。
wxPythonは意外と使える
IronPythonとSilverlight2で、今までJavaScriptとActionScriptの独擅場だった ブラウザ内で動くプログラムもPythonで書けるようになったね。 速度が必要な場所やシステムコールが必要な部分はC言語が必要だけど、 C言語でPython拡張モジュールを書くのもやりやすいし、本気で万能言語。 ThinkPadは管理アプリ内でPythonを使ってるし、OpenOffice.org にも Python が 入ってる。有名なFPSとかRTSにも入ってた気がする。
>>660 >>662 なるほど、PHPみたいな言語と違って色んなものが作れると
いうことなんですね。
もうひとつ質問なんですが、特定の用途で多く使われる言語は
多少なりとも特定の用途においての開発が楽だと思うんですが、
特定の用途を持たないPythonはどれにおいても開発が楽なんでしょうか。
それとも、Cで動的なwebページを作るときのように、手間がかかって
しまうのでしょうか。
Pythonを使っているみなさんに感想をお聞きしたいです。
以前は他の言語に疲れた人がPythonにやってくるとか言われてたな 他の言語に対する優位性とかもう面倒なので一々考えない Javaの方が速いとかRubyの方が楽しいとかC#の方がWinアプリ作るの楽とか正直全然うらやましくない
>>663 Cぐらい手間がかかるならPython要らない。CとPythonで役割分担して、
結合していくもの。
Webアプリだって、MVCフレームワークを使うなら、Djangoとか使えばphpと
変わらない生産性がある。(個人的には、$とか->とか書くのが面倒だったり、
IPythonでデバッグとテストが楽だったりするので、Pythonの方が良いと思ってる)
phpがWebで優れている点は、無料もしくは安価なレンタルサーバーでは
cgiかphpしか選択肢が無くてcgiよりphpの方が速いとか、既存の(X)HTMLの
一部にphpのコードを挟んで動的ページにできるといった、「自分のWebサイト
作ってみたい」レベルの初心者にやさしいところ。
もともとプログラマでWebサイト「も」作る人なら、最初から全部PythonとCで書いて
いれば、いちいち専用言語を覚える必要が無くて楽。
>>663 ドメイン特化つーとMathematicaとかMatlabとかみたいな?
まあそれはそうだろ
phpぐらいなら、phpという言語自体の機能の強みというよりは、
どこのサーバでも使えるとか利用者や情報が多いといった程度の強みしかないが、
Mathematicaが欲しいのならMathematica使っとけって話だ
もっとも汎用言語には、閉じた世界の仕様に縛られない強みと自由がある
何でもできるなら、いざ「〜ができない」で困るということは無い
もっともPythonの場合はC/C++と併用することで本当の力を発揮する言語だが
今時はドメイン特化言語(DSL)を言語上に構築するという手法も
流行だが、Pythonは構文的な柔軟性に乏しくマクロも無いので、そういうのは苦手
以前はLispの独擅場だったと思うが、最近は色々あるようだな
RubyはわりとDSL向き、と言われている
>無料もしくは安価なレンタルサーバーでは >cgiかphpしか選択肢が無くて GAE
GAEってCGIじゃなかったっけ
>>668 いや、ちがうよ。
ただ、初心者にはまだ敷居が高い。
だんじょー
671 :
デフォルトの名無しさん :2008/12/19(金) 16:10:51
初心者には違いが分からんのですよ
RFC3875に則ったインタフェースを提供してるんならCGIなんじゃないのか? GAEってRFCに合致しないところがあんの?
674 :
デフォルトの名無しさん :2008/12/19(金) 19:26:00
みんなのPython借りてきたw 俺は今年中にファルコンになる。
なんじゃそら
676 :
デフォルトの名無しさん :2008/12/19(金) 19:35:37
>>675 ブラッディ・マンディ見てないの?
今、Pythonが熱いんだよw
なんかドラマでクラックするシーンの画面に写ってるのがPythonらしい
どうせすぐ飽きちゃうくせに
クラッキングのことをハッキングと言っちゃう男の人って・・・
リストオブジェクトの値渡しってできますか? list = range(10) でリストを作ったとして、 num = list とコピーしてlistには影響を与えずnumを操作したいです。
>>682 from copy import deepcopy
リストに入れるのが文字列やら数値なら、deep じゃない copy でいい。
>>> a = range(3) >>> b = a >>> b[1] = 6 >>> b [0, 6, 2] >>> a [0, 6, 2]
>>> from copy import deepcopy, copy >>> b = copy(a) >>> b[1] = 8 >>> b [0, 8, 2] >>> a [0, 6, 2] >>> b = deepcopy(a) >>> b[1] = 7 >>> b [0, 7, 2] >>> a [0, 6, 2] >>> a = [[1,2],[3,4]] >>> b = copy(a) >>> b[1][1]=9 >>> b [[1, 2], [3, 9]] >>> a [[1, 2], [3, 9]] >>> b = deepcopy(a) >>> b[1][1]=5 >>> b [[1, 2], [3, 5]] >>> a [[1, 2], [3, 9]]
>>682 a = range(10)
b = list(a)
もしくは
b = a[:]
>>> a = [[1,2],[3,4]] >>> b = list(a) >>> b[1][1] = 5 >>> a [[1, 2], [3, 5]] >>> b = a[:] >>> b[1][1] = 6 >>> a [[1, 2], [3, 6]]
>>686 なるほど。何の変哲も無いリストならcopy()や
>>687 さんの方法でできる。
しかし、リストの中にリストを含むようなオブジェクトに関してはdeepcopy()を用いるということですね。
わかりやすい説明ありがとうございます。
Are you happy?
Yes, we am.
よろしくお願いします。 Python2.4のdistutilsモジュールのmsvccompiler.pyを書き換えたいのですが、 if self.__version >= 7: key = (r"%s\%0.1f\VC\VC_OBJECTS_PLATFORM_INFO\Win32\Directories" % (self.__root, self.__version)) else: key = (r"%s\6.0\Build System\Components\Platforms" r"\Win32 (%s)\Directories" % (self.__root, platform)) の部分のKEYは何を表しているのでしょうか? これを7.1から8.0に対応させるためにはどのように書き換えたらいいですか?
>>692 茨の道をわざわざ選んでいるという感じだな
本体が使っているVCと同じバージョンを使うのが一番楽だぞ
Python2.6だとdistutilsにmsvc9compilerというのが含まれていて、
VC8, VC9に対応している
mainfestの埋め込みもそれでやっている
Python2.6のmsvccompilerおよびmsvc9compilerをパクッてきて
修正するのが早いだろうと思うが、オススメはできない
>>693 とりあえずそれを試してみます。
ありがとうございました。
お前は俺かw distutils のコンパイラモジュールは cc, link, include パス, lib パスを探してるだけだよ やろうと思えば DDK 付属の cl でもビルドできる
17:07:22,797 と 17:16:34,715 の間が、何分何秒か知りたい。
以下のようなスクリプトを作ったが、
import datetime
a = datetime.datetime.strptime('17:07:22,797', '%H:%M:%S,%s')
b = datetime.datetime.strptime('17:16:34,715', '%H:%M:%S,%s')
c = a - b
print c
ValueError がでる。
(strptime に %s の表現は使えないので当たり前だが)
Python の strptime は、C言語の strptime() を呼んでいると思われるのですが、
http://www.pinkdragon.net/DocumentsLibrary/contents/ja/Linux_man/strptime.3.html によると、tm 構造体は、秒までの精度しか持っていないように見える。
ミリ秒まで計算させるにはどうしたらいいでしょうか?
以下のような感じ事で実行できるスクリプトを作りたいです。
$ hoge.py 17:07:22,797 17:16:34,715
9分11秒820ミリ秒
820ミリ秒?
>>> a = datetime.datetime(2008, 12, 22, 17, 16, 34, 715000) >>> b = datetime.datetime(2008, 12, 22, 17, 7, 22, 797000) >>> a - b datetime.timedelta(0, 551, 918000)
>>696 形式が決まってるんなら、正規表現でパーツを取り出せばいいだけだろう
後はdatetimeを構築すればどうとでもなる
$ hoge.py 17:07:22,797 17:16:34,715 9分11秒918ミリ秒
701 :
デフォルトの名無しさん :2008/12/22(月) 20:33:35
Pythonistaも質が下がったな
だんじょー
703 :
デフォルトの名無しさん :2008/12/22(月) 20:35:54
なんじゃそら
冗談はよせ
>>696 import time
def parse_time(s):
s1, s2 = s.split(",")
t = time.strptime(s1, "%H:%M:%S")
return (t.tm_hour * 3600 + t.tm_min * 60 + t.tm_sec) * 1000 + int(s2)
a = parse_time("17:07:22,797")
b = parse_time("17:16:34,715")
print ("%d,%d" % divmod(b - a, 1000))
Pythonからネットワーク上にあるGitのリポジトリを弄りたいんだがどうすればいいんだ?
What's the matter?
すまん、まともな返答を期待している。
インタプリタでtznameを実行しようとしても文字化けしたタプルしか出力されません 何故ですか。
set tz=
python実行前に set TZ=JST-9 してから import time time.tzname
print repr([t.decode('mbcs') for t in list(time.tzname)]).decode('unicode-escape')
今日から始めたんですがイキナリつまってしまいました。よろしくお願いします。 >>> print 'hello!' File "<stdin>", line 1 print 'hello!' ^ SyntaxError: invalid syntax 対話モードでこんなエラーが出るんですがなぜでしょうか? python3.0です。
Python3.0はPython2.x系とは仕様が変わったんだよ print文というのは無くなって、関数になっている 日本語のチュートリアルや本で勉強してるんなら 2.5系を入れなさい、要らない苦労せずに済むから
>>718 そうなんですか・・・。
本を見ながらだったので早速2.5に入れなおします。
レスありがとうございました。
ある配列の各々の数同士を掛け合わせた結果を得たいんだがいい方法ある?
reduce(lambda x, y: x*y, [1,2,3,4]) で自己解決しました。
>>720 >>> import operator
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> map(operator.mul, a, b)
[4,10,18]
>>> [x * y for x, y in zip([1,2,3], [4,5,6])] [4, 10, 18]
ずれてる・・・
例えばadd.pyってのを書いて、 import sys print sys.argv[1] + sys.argv[2] てのを動作させるとします。 これをプロンプトで呼び出して何度も実行したいのですが、 pythonではどうやるのが一般的な作法なんでしょうか。 add.pyは動作確認をしながら、途中で何度も修正するものとします。
add.py
好きなだけ呼び出せよ!
>>725 emacs用のpython-modeあるよ
C-c !で別窓にインタプリタ起動
C-c C-c でバッファ全体をインタプリタに送りつける
C-c C-! ならリージョン内
C-M-x ならclass/def
無論対話環境側の窓にうつって、プロンプトに普通にコードを打ち込んでいくことも
出来る
M-pとかでヒストリも使える
>>728 おまえのpythonは
>>> add.py
と打つと動作するのか?
いいえ、importします
reloadは3.0から無くなったんでなかったっけ 修正しつつの作業にはあんま向いてないと思うよ exec open("add.py").read() とかしたほうがいい
まじか・・・
Removed reload(). Use imp.reload().
>>734 サンクス、完全に消えたわけではないのか
736 :
デフォルトの名無しさん :2008/12/27(土) 12:51:45
簡単にreloadできなくなるとインタラクティブ環境の魅力が減るのに どうしていちいちimport impしなければならないのか
aac(mp4)ファイルのタグ情報を参照するためのライブラリを教えてください。 mp3のタグ情報を読めるライブラリは見つかったのですが、mp4の方が見つかりません(泣
みんパイ借りてきたんだけど、対応してるVerは2.4なんだね。 本スレ見てて、今pythonはじめるのなら、2.6あたりがいいのかもって思ったけど、 ネットに2.6に対応してるいいドキュメントとかないのだろうか。 2.6でも普通にみんパイを読み進めても問題ないならとりあえずそうするけど。
細かいことは気にせずにコーディングしまくるといいよ
>>739 把握しました。
気にせず書きまくることにします。
import sys reload(sys) sys.setdefaultencoding
自動化できるか考える前に、自動化できるはずだと考える
3.0でPythonは死んだのか・・・ また新しい言語を探す旅に出なくてはいけないのか・・・
つRuby
具体的にどう死んだのか教えてください
猟師さんが酒に漬けてニシキ酒にしました。
正直3.0に移行するぐらいならRubyでいいと思っている。
>>743 賢い人は自動化するべきかどうかを考える
そしてRuby 2.0の移行の時にPythonに戻るわけですね、わかります。
751 :
デフォルトの名無しさん :2008/12/28(日) 08:52:25
そしてPython 4.0の移行の時にLispで昇天するわけですね、わかります。
なぜかくだすれでPython3.0イラネとか堰を切ったように ぶっちゃける人が出てきていて驚きを隠せない俺
XPも出始めの頃はようイラン子扱いされてのぅ
何行ってんだ、こいつ。 xpは今でもいらないだろwwww
賢い人は他人から金をもらってさらに安く他人にやらせる
その姑息なやり口も通用しなくなってきてるがな
不況の今なら さらにアコギな金額で可能だよw
恐慌は人の心によって引き起こされる
またruby厨が荒らしてるのか
Rubyには今の所興味が無い
ルビーって燃やしたら消えるやつだっけ?
それダイヤじゃね?
ビール
‖ ‖ ‖ ‖ ‖ ‖ ‖ ‖ ‖ ‖ ‖
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.settimeout(10) try: r = sock.connect(('xxx.xxx.xxx', 12345) sock.send('test message') except socket.error, e: print 'Error: %s' % e これを実行すると送信されるメッセージは 「test.message」になります メッセージを「test message」にするにはどうしたらよいでしょうか?
住んでいるところの60km圏内なら下を走るね 道を知っているから、高速とほとんどかわらないし
>>766 socketよくわからんが
送られてるパケットはちゃんと「test message」だから
送信側と受信側の文字コードの処理で失敗している?
>>768 送ったパケットを見ると.になっているのでこっちの問題だと思いました
送信側のコードを変えるのはどうしたらいいのでしょうか
.pyドキュメントの文字コードを変更してみましたが変わりません
教えてください
tとmの間に入ってるのがタブで、パケットダンプのASCII表示だと . で表示されてる、 と予想してみた。
なるほど、タブか
まだですか
はい
775 :
【だん吉】 :2009/01/01(木) 00:14:46
はやくしてください
あけおめこ〜
777
CygwinはPython 2.5.2だね Ubuntu8.04LTSも2.5.2が最新だった気がする
779 :
デフォルトの名無しさん :2009/01/02(金) 22:57:06
あるオブジェクトがunicode文字列か否かを調べるにはどうしたらいいですか?
isinstance(x, unicode)
即答ありがとうございました!
やっぱりできません!エラーがでます! Python3.0です
>>782 だから環境とエラーメッセージを略すなと…
Python3.0ではstrはunicode文字列なので(他のはbytes型)
isinstance(x, str)
あとunicode文字列はu'〜'でなく'〜'だけでOK
785 :
デフォルトの名無しさん :2009/01/04(日) 01:32:23
リストをforループしている時に、ループカウンタの値を知りたいのですが、 どうやれば分かりますか?
enumerate
787 :
デフォルトの名無しさん :2009/01/04(日) 03:46:46
初めてのプログラミングですが、Pythonは初心者向きと言えるでしょうか? ゆくゆくはプログラムも作ってみたいと思ってます。
789 :
デフォルトの名無しさん :2009/01/04(日) 04:51:38
10進整数に、"1,000"等の3桁ごとのコンマを入れたいのですが、 どうしたらできますか?
import locale locale.setlocale(locale.LC_ALL, 'English_United States.1252') x = 10000000000000000 print(locale.format("%d", x, grouping=True)) 検索しただけです
>>788 Pythonだけ特別扱いされていたり
彼女の作り方まで教えてくれていたり
とても素敵なサイトですね
VIPのまとめwikiかよw
>>790 ありがとうございます
結構ややこしいですね・・
794 :
デフォルトの名無しさん :2009/01/04(日) 13:13:13
フリーのテキストエディタでお勧めは何でしょうか? windowsのテキストだと心細いので。
PyScripter
ソフトウェア板にGO
797 :
デフォルトの名無しさん :2009/01/04(日) 13:34:55
#coding: UTF-8 print "Hello", len("Hello") print u"こんにちは", len(u"こんにちは") print len(u"こんにちは".encode("UTF-8")) 3行目のprint文は、UTF-8でエンコードされてますが、それ以外(1,2行目)もUTF-8ではないんですか?
いいえ UTF-8 ではありません
unicode文字列のエンコーディングの中の人はいません
u'hogehoge'.encode('utf-8') して初めて UTF-8 になる print u'hogehoge' だけ実行したときは setdefaultencoding() のエンコで自動エンコした上で表示 この場合も表示される段階で初めてそのエンコになる これであってる?
ついでに言うと #coding: UTF-8 とか # -*- coding: utf-8 -*- は無関係
Unicode文字列とUTF-8が同じと見てしまうのはありがちな誤解だな。
803 :
デフォルトの名無しさん :2009/01/04(日) 17:23:25
あるインスタンスのクラス名を取得するにはどうしたらいいですか?
>>790 これやると日本語が駄目になりますね
すみませんでした
805 :
797 :2009/01/04(日) 17:24:15
納得しました。ありがとうございます。 あと、もうひとつ…お願いします。 pythonの環境変数PATHを登録後 プロンプトで >python でpythonが起動?しますが、 >python test.py (test.pyは実際するソースコード記載のファイルです。 などを実行するとエラーになります。 環境変数設定がおかしいのでしょうか?使い方自体が間違ってますか? ちなみに C:\Python26>python test.py の状態で行うと正常な動作が行われます。
806 :
804 :2009/01/04(日) 17:28:49
import locale locale.setlocale(locale.LC_NUMERIC, 'English_United States.1252') これで日本語も大丈夫らしいです 検索しただけですが
もしpathに登録しているならtest.pyのあるディレクトリでcmdを開いて ファイルを実行するだけで勝手にpythonが開いてくれる
>>805 どんなエラーになったかメッセージをコピペしろって
809 :
807 :2009/01/04(日) 17:33:48
いや環境変数関係なく 関連付けしていれば勝手に開いてくれるな 適当ばっかだ
810 :
797 :2009/01/04(日) 17:34:10
Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'test10' is not defined
>>806 C localeはプロセスグローバルなので、あまり変更はお勧めは出来ないな。
目的がちょろっとした文字列処理でしかないのなら、そのような関数を
書けばいいんじゃないの。
>>800 stdoutへのunicodeのprintは、sys.stdout.encodingによって変換されると
思う。
大抵のケースでは、確かにsys.getdefaultencoding()で取得できる値で
変換されるけどね。
本当はsys.getfilesystemencoding()で取れる値が一番マシに見えるんだが……。
812 :
806 :2009/01/04(日) 17:38:16
ですよね コンマが打ちたいだけですからね
813 :
デフォルトの名無しさん :2009/01/04(日) 17:39:34
そもそも環境設定pathを設定してなにになるの?
macはウィルスに強い
>>810 >NameError: name 'test10' is not defined
このtest10 ってのは自分で定義している名前だよね?
ひょっとして\python26にあるのと中身が違うのを実行してない?
816 :
810 :2009/01/04(日) 18:35:48
test10.pyはC:\Python26内にあります。
817 :
810 :2009/01/04(日) 18:36:46
逆に正しいやり方をするとどういった結果が出力されますか? >python から先を教えて下さい。
line1にtest10という未定義の名前があるだけだろ
>>805 実行しようとしている場所カレントディレクトリのパスに日本語が含まれてないか?
820 :
805 :2009/01/04(日) 20:04:02
c:\python26 なので日本語はないですね
test10.pyの一行目を削除しろ 今すぐに
>>820 >python test.py ←c:\python26
C:\Python26>python test.py ←c:\python26
という意味?
823 :
デフォルトの名無しさん :2009/01/04(日) 20:49:17
c:\python26\test.py です。
824 :
デフォルトの名無しさん :2009/01/04(日) 23:03:04
>>python test.py (test.pyは実際するソースコード記載のファイルです。 >などを実行するとエラーになります。 >C:\Python26>python test.py >の状態で行うと正常な動作が行われます。 同じものを同じ場所で実行したのに結果が違うのか?
環境変数が正しく設定されてないに一票
えーと C:\Python26\test.pyを C:\Python26でpython test.pyとして起動すれば実行できる 他のディレクトリで同じコマンドラインをタイプしても実行できないと 言っているのだろうか? あたりまえだ
空行のあたりで吹いた
828 :
826 :2009/01/04(日) 23:59:19
まああんまりなのでいくつかのやり方を教える。 1) test.pyのフルパスをpythonに教えてやる、つまり python c:\python26\test.py のようにすれば常に実行できる。が、面倒くさいだろう。 2) 拡張子pyがpython.exeに関連付けされており、環境変数PATHEXTに拡張子pyが 含まれており、test.pyがPATHの通ったところに置かれているならば、単に test.py で実行できる。 3) cygwinのシェルからならば、スクリプトの先頭行に#!/usr/bin/env pythonのような 呪文を書いてやれば2)と同様にして実行できる。勿論この場合はcygwinの pythonになるし、PATHの通った場所にスクリプトを置いておかなければならないのは 同じ。これはUnix系のOSで一般的な方法。
意味がよくわかりません。
C:\Python26>python Python 2.6.1 (略) Type "help", "copyright", "credits" or "license" for more information. >>> test10.py Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'test10' is not defined >>> っていう話なのかと思った
>>810 のエラー内容はPythonの対話モード中で
>>> test10.py
と打ったみたいだが
832 :
デフォルトの名無しさん :2009/01/05(月) 02:43:20
utf-8でpythonのコードを書く時、BOMは付けた方がいいですか? 付けない方がいいですか?
何のためにBOMがあると思ってるんだ
付けないほうがいいって聞いた。どこソースかは忘れた
まあutf-8はバイトオーダーを示す必要がないからbomは不要のはずだけど。
sshでリモート操作することも考慮して、vimとemacsだと、どっちがいいんでしょうか? 現在の経験値的には、vimは見習いレベル、emacsは超初心者レベルです また検索機能が強力なのは、どっちなんでしょうか? 2chを見る限りだとemacsメイン・ときどきvim派が多いですよね
自分で試せばいいじゃん sshでリモートとかおれわからんし
みなさん、おはおうございます。 Pythonの日本語環境設定がしやすいインストーラーという奴を インストールしまして、いざ日本語環境を設定しようとしましたところ エラーが出て挫折しました。 python setup.py install ^ なんかpに間違いがあるようなのですが、 なんのことやらさっぱりわからないのです。
>>838 です。
すみません。
エラーが出たpはpythonのpではなくsetupのpです。
GUIのほうだとsetupが間違いと出ます。
>Pythonの日本語環境設定がしやすいインストーラーという奴 こんなもの入れなくてもいい
2.6.1 がお勧め。 2.6は3.0と違って2.5の上位互換になってるから、2.5のドキュメントはほとんどそのまま使える。 Python 3.0 の新機能のいくつかも2.6から使える。
BOM付けた場合、影響受けるとしたらwebアプリ? でもPythonの場合ってヘッダすらprintで出力するんだよな
>>842 なんで2.6なんて勧める。
2.5.2が一番最強だろ。パフォーマンス的にも。
845 :
838 :2009/01/05(月) 09:55:41
>>841 >>842 >>843 さんありがとうございました。解決しました。
MS-DOSプロントで実行し終了するには
import sys
sys.exit()
と記入すればよいことがわかりました。
しかしMS-DOSでいうところのclsに当たるコマンドがわかりません。
それから日本語を出力することは出来るのですが
入力することが出来ません。
GUIだと入力もできます。
>>844 バグフィックスされた 2.5.4 があるのに 2.5.2 を薦めるほうがどうかと思うが?
5%程度の性能差をとるか、新機能とPython3.0への予習をとるかの問題。
import os; os.system('cls') >それから日本語を出力することは出来るのですが >入力することが出来ません。 WindowsだとAlt+漢字キーとかじゃないの
>>847 そんなことはわかってます。
ただ僕は、
pythonでのコマンドが知りたいので
そういったことはやりたくないです。
>WindowsだとAlt+漢字キーとかじゃないの
知ってます。日本語入力は問題ないです。
何か問題ありますか
>>846 2.5.4がリリースされているのは、知っているけど
Cygwin、Ubuntu8.04LTSも単純なインストールだと2.5.2なんだけど
2.5.4に上げちゃっていいの?
最新版を追っかけたくなくて、上位互換率の高い安定版を入れたい人は、
何を入れたらいいのでしょうか?
2.5.4を入れるなら、2.6.xを入れたい感じだが
850 :
838 :2009/01/05(月) 10:53:59
>>849 Linuxや何かでパッケージマネージャで管理してるのはわざわざソースから
新しいのを入れんでいいだろ
2.5.4はあくまでバグフィックスリリースであって、外部仕様もABIも互換、
違いはバグが直ってるかどうかだけだから、PCだけ2.5.4にして
端末間でバージョン合わなくなっちゃってもいいの?みたいな心配してるんなら
無用と思われ
まー俺は2.6に移行中だから、2.5.4入れてないけどね
ぶっちゃけ面倒くさい
2.5.3がすぐポシャって、放置してて正解だと思ったわw
日本語ドキュメントだけでも2.6の使用は問題ない? print()の方が好みだから2.6使いたいけどそれ以外は違いがよくわからん。
ABI(wwwWwwWWwwwWwwww
>>852 基本的には2.6は上位互換だからな
一部の機能はDeprecationWarning食らうけど、使えんわけではない
特に大きな問題はないんじゃないか
>>853 ABIという単語がなんか面白かったか
同じpython25.dllを使っていて、バイナリインタフェースが同じだから
外部ライブラリや何かもリビルドなしでそのまま同じものが使えるという意味だよ
>>854 俺は853じゃないし、揚げ足取りも好きではないけど、一応突っ込み。
普通ABIというと、引数の渡し方、戻り値の戻し方、スタックフレームの構築と開放の
タイミング、保存されるレジスタと保存されないレジスタみたいな事を言う。
Python/C API を略すなら、ABIよりAPIの方が適切だと思う。
>>855 Wikipediaには
ABIはApplication Programming Interface(API)とは異なる。
APIはソースコードとライブラリ間のインターフェイスを定義したものであり、
同じAPIをサポートしたシステム間では同じソースコードをコンパイルして利用できる。
一方、ABIはオブジェクトコードレベルのインターフェイスであり、互換ABIを
サポートするシステム間では変更無しで同じ実行ファイルを動作させることができる。
と書いてある。
オブジェクトコードレベルでリンク互換であることを言いたいわけで、
「リンク互換」のほうが適切かもしれんが、ABI互換でも別によいような。
857 :
デフォルトの名無しさん :2009/01/05(月) 13:30:08
pythonでは、受け取った時にunicode化、外に出す時にプレーン文字列化するのが セオリーのようですが、携帯の絵文字は、その過程で壊れたりしないのでしょうか? 絵文字という異質なものを、unicodeが正常に扱えるのか、心配なのですが
>>857 扱い方によっては壊れるし、壊さないで例外出すことも可能
unicode にしたい binary (たとえば utf-8) 文字列 hoge に対して
fuga = hoge.decode('utf-8', 'strict')
fuga = hoge.decode('utf-8', 'ignore')
fuga = hoge.decode('utf-8', 'replace')
ファイルをr+で開いて読み込んだ後、 一旦中身をクリアしてから書き込むにはどうすればいいでしょうか。 普通にseek(0)したあとwriteすると新しいデータが元より小さいときにその差分が残ってしまうんですが…
truncate()
864 :
デフォルトの名無しさん :2009/01/05(月) 17:36:58
truncate
すれ違いかも知れないけど教えてください。 特定文字列が存在していれば抽出して、存在しなければ抽出しないにはどうすればよいでしょうか。 たとえば "abcdefghi" からは "abc", "def" をキャプチャ "abcghi" からは "abcghi" をキャプチャ するにはどのような正規表現で実現できるのか。。。 "(.*)(def)?"→"\1 \2"でいけるかと思ったけど無理でした
ちょっとその説明だけだと意図がわからん defが含まれていなければ文字列全体を返す defが含まれていれば、それより前の文字列と、def自身を返す ようにしたいのか?
867 :
865 :2009/01/06(火) 00:05:27
>866 >defが含まれていなければ文字列全体を返す >defが含まれていれば、それより前の文字列と、def自身を返す まったくもってそのとおりです。 存在していないときに「unmatched group」ってエラーになってしまうんです。
>"(.*)(def)?"→"\1 \2"でいけるかと思ったけど いけるわけないじゃん
def f(x): m = re.search('(.*?)(?=def)', x) return (m.group(1), 'def') if m else (x,) f('abcdefghi') -> ('abc', 'def') f('abcghi') -> ('abcghi') こんなもんでいいんじゃないのか
r'(.*?)(def|$)'
871 :
865 :2009/01/06(火) 00:40:37
>869 ありがとうございます!! 思ったより複雑な式が必要だったんですね。。。 まだまだ修行が足りんです。
872 :
デフォルトの名無しさん :2009/01/06(火) 04:40:43
同時に読み込まれている別々のモジュール(モジュールA,B)の中で、 同じモジュール(モジュールC)をimportしている時、 モジュールC用のメモリ領域は共用されるのでしょうか?
はい
そうですか。安心しました。 ありがとうございました。
>>> a = (1, 2) >>> b = (10, 20) >>> for i, j in (a, b): ... print i, j ... 1 2 10 20 となるところを、aとbの中身はそのままで、 1 10 2 20 のように出力させたいのですが、どのようにやると簡単でしょうか。
for i, j in zip(a, b): print i, j
>>876 ほぉ、そんなものが。
ありがとうございます。
>>872 メモリ共用っつーか、単純に2度目以降のimportはスルーされる
例えばimport thisを2度やっても、zen of pythonが表示されるのは最初だけ
まあ違いが分かるのは、thisみたいにモジュールのトップレベルに
直接実行文が記述されているケースぐらいだけどな
zipは他人が使ってるのを時間かけるとなんとか理解できるが 自分で使える引き出しにはならない。しかも便利そう。腐れ脳ファック
ジッパー(チャック、ファスナー)を連想しろYO
, '´  ̄ ̄ ` 、 i r-ー-┬-‐、i | |,,_ _,{| N| "゚'` {"゚`lリ ト.i ,__''_ ! /i/ l\ ー .イ|、 ,.、-  ̄/ | l  ̄ / | |` ┬-、 / ヽ. / ト-` 、ノ- | l l ヽ. / ∨ l |! | `> | i / |`二^> l. | | <__,| | _| |.|-< \ i / ,イ____!/ \ .| {.| ` - 、 ,.---ァ^! | | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l __{ ___|└―ー/  ̄´ |ヽ |___ノ____________| }/ -= ヽ__ - 'ヽ -‐ ,r'゙ l | __f゙// ̄ ̄ _ -' |_____ ,. -  ̄ \____| | | -  ̄ / | _ | ̄ ̄ ̄ ̄ / \  ̄| ___`\ __ / _l - ̄ l___ / , / ヽi___.|  ̄ ̄ ̄ | _ 二 =〒  ̄ } ̄ / l | ! ̄ ̄| _______l -ヾ ̄ l/ l| |___|
882 :
デフォルトの名無しさん :2009/01/07(水) 15:00:45
クラスメソッドに類似した考え方で, モジュールメソッドというのはアリですか?
アリというより軍隊アリだと思うよこの場合。
884 :
デフォルトの名無しさん :2009/01/07(水) 15:51:17
デザインパターンのテンプレートメソッドを書く場合 java等ではprotectedにしたりしますが、 Pythonは全部publicなので、それがテンプレートメソッドと分かりにくいですよね phpではprivate,protectedなメンバは_をプリフィックスにする慣習がありますが pythonでそういった、publicと非publicをわかりやすくする慣習はありますか?
つ PEP8 の命名規則
PHP厨ってRuby厨以上にウザいよな。
888 :
デフォルトの名無しさん :2009/01/07(水) 19:43:28
数日前から勉強し始めました。 どの教材を見ても、コマンドラインに表示するだけって印象が強いです。 実際ブラウザの作り方なんかはどの本にも載ってませんでした。 Cとかもそうなのでしょうか? VBとかは見た感じでは、ボタンがどうのって書いてありました。 pythonでもボタンの位置などのプログラムも可能でしょうか?
>>888 プログラミング云々前の知識を身につけるべき
890 :
デフォルトの名無しさん :2009/01/07(水) 19:55:36
>>889 具体的には?
一応シスアド、CCNAあたりは持ってます。
なんという上昇思考、将来は間違いなくハッカー
893 :
デフォルトの名無しさん :2009/01/07(水) 21:16:58
まさに初心者スレだな。 エスパー衆、おつ
>>888 >pythonでもボタンの位置などのプログラムも可能でしょうか?
可能です。
>>879 同じ使用例を見て、何度も目からうろこが落ちる(だけな)んですねw
わかります
zipってiteratorなの?
897 :
デフォルトの名無しさん :2009/01/08(木) 12:00:41
3からそうなるようなならないような
VBのボタンの位置www
そんなこともできないなんて、 VB > Pythonだね。
Pythonでネットワークプログラミングしたいのですが参考になるサイト等教えてください。 英語でも構いません。
>>900 とりあえず、日本の公式→本家だな
話は、それからだ
904 :
デフォルトの名無しさん :2009/01/08(木) 18:02:19
感謝する
905 :
デフォルトの名無しさん :2009/01/08(木) 20:59:58
感謝する
顔射する
twisted
APressもオライリーみたいに日本法人作って翻訳してほしい
909 :
デフォルトの名無しさん :2009/01/09(金) 21:32:56
今日から始めたんですが、返すとはどういう意味です?? あと、ファイルオブジェクトはどういうものですか??
>>909 プログラムを作るとき、繰り返し実行される部分を関数やメソッドといった
「呼び出せるもの」の形で作ることがよくある。Python では関数やメソッドは
普通 def 文で作る。以下、話を関数に限定する(メソッドについても同じことが
言える)。
関数を呼び出すとき、呼び出し側は関数に入力データを渡して、関数から
出力データを受け取る。このことを関数の立場から言い換えると、関数は
呼び出し側から入力データを受け取って、呼び出し側に出力データを返す、と
言える。つまり「返す」とは関数が呼び出し側に出力データを受け渡すことだ。
Python では関数から出力データを返すには return 文を使う。
関数に渡す入力データを引数(ひきすう)、関数が返す出力データを戻り値
(もどりち)とも言う。return 文は戻り値を返すための文というわけだ。
Python ではデータのことをオブジェクトと呼ぶことが多い。オブジェクトは
オブジェクト指向プログラミングというプログラミングの方法論の核となる
考え方だ。オブジェクトは一般に、データとそれを操作するメソッドから成る。
Python で扱えるデータは何でもオブジェクトだ。isinstance() という関数を
使うとオブジェクトかどうかを調べられる。例えば 123 という数値データや
"abc" という文字データは
>>> isinstance(123, object)
True
>>> isinstance("abc", object)
True
のように isinstance() 関数が True を返すのでオブジェクトだと分かる。
ファイルオブジェクトはファイル(テキストファイルとか MP3 ファイルのたぐい) を読み書きためのオブジェクトだ。Python では普通 open() 関数で作る。 >>> f = open("test.txt", "w") # f はファイルオブジェクト >>> isinstance(f, object) True ファイルオブジェクトにはファイルを読み書きするためのメソッドが付いている。 上の例に沿って言えば f.read() や f.close() がファイルオブジェクトのメソッド の例だ。それぞれファイルを読むメソッド、開いたファイルを閉じるメソッドだ。 どんなメソッドがあるかはマニュアルに載っている。 ・・・とまあ、あまり前提知識に頼らないように説明するとこのように長くなる。 なので、最初のうちは分からないことは保留してとりあえず先に進むのがいいよ。 入門書を読んでいるのであれば、一通り読み通すと前の方で疑問に思ったことが 解決できることも多いし。がんばってね。
>>912 横からだけど、逆に言えば、メソッドのないものはオブジェクトとは言わないってこと?
どこを逆に言ったのか気になるところである
>オブジェクトは一般に、データとそれを操作するメソッドから成る。 ってとこ
「一般に」って書いてあるじゃん ていうかPythonでメソッドのないオブジェクトなんて作れたっけか
独自のメソッドを定義していないという意味でならば
オブジェクトじゃないデータってあるの isinstance(hoge, object) が False になるもの
919 :
デフォルトの名無しさん :2009/01/10(土) 14:00:41
>>911 ありがとうございました。
わかりやすかったです。
920 :
デフォルトの名無しさん :2009/01/10(土) 22:20:35
関数を定義する際に、printではなくreturnを使うことによって 戻り値を返すということどういうことでしょうか?? printでは戻り値を返すとは言わないのはなぜですか??
921 :
デフォルトの名無しさん :2009/01/10(土) 22:33:35
日本語でどうぞ
print文は画面に表示してるだけだから 例えば def bai(x): print 2*x y=bai(10) だと画面に20と表示されるけどyには何も入っていないだろ def bai(x): return 2*x y=bai(10) これだとyに20が入るのは分かるよね? てか関数って概念分かる?
923 :
911 :2009/01/10(土) 22:51:11
>>920 いい質問だ。「戻り値を返す」という言葉はプログラミングに関して使う、一種の
専門用語なんだよ。この用語は普通、関数(またはメソッド)からその呼び出し側に
出力データを渡すという意味にのみ使われる。return 文はプログラム内(関数または
メソッドとその呼び出し側との間)でデータを授受するために使う。
これに対して、print は画面やファイルなどプログラムの外にデータを送り出すのに
使うところが違う。つまり、print を使うのは人間のユーザや別のプログラムに
データを渡したいときだ。このデータ授受を指して「戻り値を返す」とは普通言わない。
これは理屈じゃなくて習慣の問題だ。外国語の勉強と同じで、習って慣れるしかない。
printは出力した文字数が戻値
read-eval-print loop(REPL)を実行している対話環境だけでやってると 区別つかんかもな >>> 1+1 2 >>> print 1+1 2
python3.xだとNoneが返るんじゃなかったっけ
print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])
Print object(s) to the stream file, separated by sep and followed by end.
sep, end and file, if present, must be given as keyword arguments.
All non-keyword arguments are converted to strings like str() does
and written to the stream, separated by sep and followed by end.
Both sep and end must be strings; they can also be None,
which means to use the default values.
If no object is given, print() will just write end.
The file argument must be an object with a write(string) method;
if it is not present or None, sys.stdout will be used.
ttp://docs.python.org/3.0/library/functions.html#print
書いてないなw
> python Python 3.0 (r30:67507, Dec 3 2008, 20:14:27) [MSC v.1500 32 bit (Intel)] on win 32 Type "help", "copyright", "credits" or "license" for more information. >>> type(print('hoge')) hoge <class 'NoneType'> Firefox3.0.5でインストーラpython-3.0.msiを落とそうとすると 「このゾーンのセキュリティ設定に従ってこのダウンロードはブロックされました」 とか怒られるね。なんなんだろ。
Firefox3.0.1でインストーラpython-3.0.msiを落とそうとすると何も出ない 良かった良かった
931 :
929 :2009/01/11(日) 11:58:00
Python 2.5.2なんだけど
>>> u = u"はにほへといろは"
>>> u
u'\u306f\u306b\u307b\u3078\u3068\u3044\u308d\u306f'
とならないで
>>> u = u"はにほへといろは"
>>> u
u'\x82\xcd\x82\xc9\x82\xd9\x82\xd6\x82\xc6\x82\xa2\x82\xeb\x82\xcd'
こうなる・・・
cygwin、ややこしなあ
割り切って、Ubuntuでプログラミングしようかな
15.2 Cygwin の Python と日本語
ttp://www.okisoft.co.jp/esc/cygwin-15a.html#f4
>>932 それ、そのページに書いてあるようにalias切ってやればいいはずだぜ
まあ、そうは言ってもcygwinがオススメなわけじゃないがな
934 :
デフォルトの名無しさん :2009/01/11(日) 21:39:30
>>923 ありがとうございました。理解できました。
>>922 return文だとyに入るのはわかりますが、関数の概念はわかりません。
関数の概念ってなんですか??
あとなぜreturnだと関数に代入できるのですか??
プログラム内だからですか??
皆さんお返答願いします。
しね
>>934 数学の授業で関数って習わなかったかい?
例えばy=bai(x)だと引数xに何らかの処理baiを行ってその結果をyに代入してるよな
def bai(x):
return 2*x
これのreturnはまさにその結果を外側に渡す命令なわけ
これがprintだと画面に2*xを表示してるだけで外側には結果を返してない
というかまずは数学の勉強をした方がいいぞ
>>934 プログラムは、コンピュータに対する命令(文)の集まりだ
プログラムを書いていると、決まりきった、同じような命令の集まり=手順が
必要になることがある
毎回同じことを書くのはあほくさいので、その手順に名前をつけ、
「××作業をやれ」と、名前を示すだけでその作業をやらせられるようにする
それを、サブルーチンと呼ぶ
サブルーチンの中で10個の作業を行うとして
毎回10個の作業を記述するかわりに、「××作業をやれ」の一言で済むのだから楽だ
作業は、ちょっとだけ内容が違うこともある
例えば「足し算」という作業を考える
足し算の方法は決まっているわけだが、実際に足す数は色々だ
そして、結果も色々だ
1 + 1なら2だし、1 + 2なら3だ
このような場合、「作業の方法」だけを定義して、実際に足す数(=入力)
を後で個別に与えられると便利だ
Pythonのような言語では、そのようなことも可能になっている 足し算の定義を「関数」と呼び、足し算に与える数(=入力)を引数と呼ぶ 足し算の結果を「返り値」と呼ぶ 関数では、当たられた入力を元に、いくつかの計算を決まった手順で 行い、どうにかして結果を導き出す 結果を返す(教える)ために用いられるのが、return文だ 答えはこれだ、と言っているわけだ 関数に常にreturn文が必要なわけではない ××作業をやれ、というだけで、その結果を教えてもらう必要が無いのなら、 そのようなものは要らない しかし、作業結果の報告が聞きたいならば、return文が必要だ せっかく足し算をさせたのに、足した結果が分からないのでは意味が無いからな
print文を使うと、print文に与えた式の値を印字できる def add(x, y): print x + y という関数を定義して、 add(1, 1) のように呼び出すと、 2 が印字される だから、画面の目の前に座っている人間には、1+1は2なのだな、と分かる が、print文は、return文と違って、何も返さない だから、1+1の結果をプログラムで続けて利用したい場合には、役に立たない 関数addは、「人間には」情報を与えるが、それを呼びだした「プログラムには」 何の情報も与えないからだ
質問者は気にしなくていいが def foo(): print 1 は None を返すぞ ここらへん void context を許さない C# なんかのほうが教育的かもしれない
>>933 ですよね
cygwin + Python + emacs21.4がオススメじゃない理由は、どんなのがありますか?
むしろ、オススメだよという理由があるなら、そういうのも教えてほしいです
わかる方、お願いします
っ VMware + Linux Cygwinを使う明確な理由があるならともかく そうでないならUnix環境の劣化コピーに過ぎないと思う。 Ubuntuに慣れてるならそれを使ったほうがいい。
Ubuntuこそ神のOSだし、Ubuntu以外のOSは Ubuntuからパッケージ管理などをパクった糞OS
Pythonのバージョン wxWidgetsのバージョン wxPythonのバージョン 使ってるOS
Windows Vista これが原因じゃないのかな
>>949 64bitではなく32bitです・・・
951 :
デフォルトの名無しさん :2009/01/12(月) 15:42:00
MySQLdbがインストールされてないレンタルサーバー環境でMySQLに接続したいのですが 同等のPurePythonのライブラリってないですか? 自宅でコンパイルしたのをアップしてみようと試したんですが MySQLのパスがインスコ時に自動設定されるみたいで、 そのままアップしても結局エラーになっちゃう・・・(パスが違うので_mysqlをimportできない)
952 :
デフォルトの名無しさん :2009/01/12(月) 16:03:07
ループカウンタってなんですか??
953 :
デフォルトの名無しさん :2009/01/12(月) 16:46:36
pythonでメールを送信するプログラムは出来ますか?
>>951 どうせ同等のPurePythonのライブラリをインストールする方法に悩むだろ同じこと
MySQLdbをインストールしろ
956 :
デフォルトの名無しさん :2009/01/12(月) 16:58:13
ビット幅を表現できる(2進とか16進とかの)表現でないとダメなんじゃね?
>>954 つまりファイル編集でパスを設定しなおせるってことなんでしょうか。
>>956 のページから落としてるので、
そこのフォーラムなども見たりしてるんですが、なんとも・・・
959 :
951 :2009/01/12(月) 17:42:21
958 = 951
すみません回答まだですか
962 :
941 :2009/01/13(火) 02:12:05
>>942 ,944
レスをもらって、一日考えてみたけど
もう少し、Cygwin路線でがんばってみたいと思います
でも、Linux環境併用で行きたいと思います
そして、自分の求める解を探してみます
レス、ありがとうございました
963 :
デフォルトの名無しさん :2009/01/13(火) 03:40:35
おれは、2.5.2を使っているけど、Python 2.5.4 (December 23, 2008) も出ているらしいじゃん 2月になると、大学は春休みだし、次々スレが立つまでに簡単な案内テンプレをつくっていいかもね
line=[[0,1,2],[3,4,5],[,6,7,8]] をテキストに 012 345 678 って書き込んで それをまた読み込んで、それをまた line=[[0,1,2],[3,4,5],[,6,7,8]] って読み込みたいんですけど何かいい方法はないでしょうか?
>>968 pickle ってモジュールがあるから調べれ
つpickle
yaml json
eval
973 :
デフォルトの名無しさん :2009/01/15(木) 12:04:41
文字に対応する数字をASCII文字に変換することって ありますか??
こういうこと? print chr(88)
975 :
デフォルトの名無しさん :2009/01/15(木) 15:07:56
>>974 エンコードについて知りたかったんです。
皆さん教えてください。
976 :
デフォルトの名無しさん :2009/01/15(木) 17:57:27
ベンチマークを、datetime.datetime.now()の差で測っているのですが、 マイクロ秒が必ず1000単位=0.1秒きざみで、ちょっと大きすぎます せめて0.01秒単位にしたいのですが、どうしたらいいですか?
と思ったら1000マイクロ秒=0.01秒でしたね すみません
978 :
デフォルトの名無しさん :2009/01/15(木) 18:01:53
pythonを一から勉強したいのですがおすすめのサイトってございませんか?
python.org
せめてミリ秒で考えようぜ…
982 :
デフォルトの名無しさん :2009/01/15(木) 20:06:01
Python3.0の日本語ドキュメントはまだありませんよね
まだ2.6の翻訳が始まったばかりだから ないね
984 :
デフォルトの名無しさん :2009/01/15(木) 22:04:17
パッケージ配下のすべてのpyファイルをimportするにはどうしたらいいですか? import hoge.* と書いてみたらエラーでした
hogeがディレクトリだとしたら、 hogeディテクトリの中に__init__.pyってファイルを作ってあげる。 中身は空でいい。 で、hogeまでパスが通ってること前提で from hoge import * とする。 パッケージについてphpやらなんやらのrequireのような ファイルをインクルードして‥という考えはPythonではない。 ファイルごとにスコープ切ってるようにしてるために そんな感じでモジュールを使う様にしてる
from hoge import * でいけるのかわからないな。 検証して書き込むべきじゃないかも。
987 :
デフォルトの名無しさん :2009/01/15(木) 23:03:02
すみません。馬鹿はひっこんでいてくれませんか?
988 :
デフォルトの名無しさん :2009/01/15(木) 23:05:44
ちなみにその方法だと__init__.pyがimportされることぐらいしってますから。 だれか答えお願いしますm(_ _)m
989 :
デフォルトの名無しさん :2009/01/15(木) 23:07:58
やっぱりわかりました。 __init__.pyにimport なにがし とかくようにして、 from フォルダ import なにがし とすればいいんですね? ありがとうございました。m(_ _)m
991 :
デフォルトの名無しさん :2009/01/16(金) 05:56:09
クラスメソッドで受け取る第一引数って どう使えばいいのですか? staticメソッドとの違いがいまいちわかりません
>>991 class A:
@classmethod
def f(cls):
print cls.fruit
class B(A): fruit = "apple"
class C(A): fruit = "banana"
B.f() # prints "apple"
C.f() # prints "banana"
def initPlugins(): """ Initialize the installed plugins """ plugins_root = os.path.join(os.path.dirname(__file__), 'plugins') if os.path.exists(plugins_root): plugins = os.listdir(plugins_root) for plugin in plugins: if not re.match('^__|^\.', plugin): try: exec('from plugins import %s' % plugin) except ImportError: logging.error('Unable to import %s' % (plugin)) except SyntaxError: logging.error('Unable to import name %s' % (plugin))
5
6
7
998 :
デフォルトの名無しさん :2009/01/16(金) 12:25:11
8
9
1000 でうめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。