くだすれPython(超初心者用) その2at TECH
くだすれPython(超初心者用) その2 - 暇つぶし2ch159:デフォルトの名無しさん
08/09/09 10:19:00
>>158
詳しく

160:デフォルトの名無しさん
08/09/09 10:42:59
自己解決しました

161:デフォルトの名無しさん
08/09/09 13:22:27
入門書嫁

162:デフォルトの名無しさん
08/09/12 23:34:57
import urllib
print urllib.urlopen("http:example.com").info()

info()って一部のヘッダー情報しか出力しないよね?
httpステータス(200とか)をurllibで取得することってできますか?

163:デフォルトの名無しさん
08/09/13 00:06:51
HTTPでinfo()にHTTPステータスが含まれないのはそういう仕様なんだろう。
urllib2か直接httplibをつかうしかないと思う。

164:デフォルトの名無しさん
08/09/13 07:58:24
>>163
なるほど。了解です。

165:デフォルトの名無しさん
08/09/15 00:48:05
>>164
urllib2.urlopenの返してくるオブジェクトには、なぜかcodeってプロパティがあって
そこに200とかそのものずばり入ってる

166:デフォルトの名無しさん
08/09/15 11:00:51
Python3.0に向けて皆さんが勉強していることってなんですか?
ソースビルドして動きを確かめるぐらい?

167:デフォルトの名無しさん
08/09/15 12:00:59
ML,PEP,NEWS.txt

168:デフォルトの名無しさん
08/09/15 13:49:16
Rubyに乗り換える準備をしている

169:デフォルトの名無しさん
08/09/15 13:50:45
>>166
本家にあるマニュアルを眺める

170:デフォルトの名無しさん
08/09/15 13:51:27
>>168
参考までに理由を教えて

171:162
08/09/15 20:07:56
>>165
まじっすかww自分urllibの方のコード必死に潜ってましたww

クラスURLOpenerのhttp_openメソッドでhttpステータスが入った変数errcodeが
if文の分岐に使われてるのを見つけたんですが、
どうやってアクセスするのが良いか悩んでたとこだったんです。。

助かります。ありがとうございました。



172:デフォルトの名無しさん
08/09/17 14:18:43
def f( *arg ):
  print arg

p = None
f(p)

f()のargを空タプルにしたい場合、
変数pへはどんな値を代入すればいいでしょう??

ちなみに、上の場合は
(None,)
となってしまいます。。

173:デフォルトの名無しさん
08/09/17 14:29:52
引数無しで f()

174:デフォルトの名無しさん
08/09/17 14:36:01
p = ()
f(*p)

175:デフォルトの名無しさん
08/09/17 14:37:30
f(*p)
と書くべきじゃないの

176:シベリアよりのお手紙
08/09/21 08:14:33
今、windows xpでpython3000を勉強しています。

ハードディスクにあるファイルを、更新日の新しいものだけUSBメモリにコピーするという
スクリプトを書いたのですが、大きなファイルをコピーするとファイルの断片化がひどいです。
Explorerのコピーのように一旦連続した領域を確保してからそこにコピーというような処理は
書けないでしょうか?

ついでの質問ですが、比較関数を指定したlistのsortはどうやるんですか?
# Rubyでいうとこの、ary.sort{|a,b| a <=> b } みたいなやつです。
動作効率向上のために機能を削ったとかいうのは、メーリングリストで見かけましたが
全く方法がないと言うことはないと思うのですが。

177:デフォルトの名無しさん
08/09/21 09:01:19
後半については

L = ['one', 'two', 'three', 'four']
L.sort(cmp = lambda a, b: len(a) - len(b)) # 文字数で昇順ソート

大抵の場合はkey指定で間に合うと思うけどね
(上の例の場合、L.sort(key = len)

178:デフォルトの名無しさん
08/09/21 09:25:32
>>176
ファイルを扱う側からすれば領域が連続するかしないかなんてどうでもいい話だから
どうしてもやりたいならボリュームを直接開いてファイルシステムを直接いじることになるんじゃないの?
explorer云々が本当ならどんなことしてるかスパイツール使って調べてみればいい

179:デフォルトの名無しさん
08/09/21 09:41:09
常套手段として前半は
低レベルI/Oでファイルサイズ分lseek()して空write()かな。
モダンなOS・FSならこれでヒントになるとおもう。
py3kで実現できるかは試してないから不明。

180:デフォルトの名無しさん
08/09/21 22:40:40
xyzzyってエディタではTabによる空白を空ける事が出来ないんですが
解決方法もしくは他にオススメのエディタがあったら教えていただけませんか

181:デフォルトの名無しさん
08/09/21 22:49:54
C-q TAB

182:デフォルトの名無しさん
08/09/21 23:11:52
有難うございます!

183:デフォルトの名無しさん
08/09/22 07:16:22
mod_python + publisher handler はじめて使った。
こんなに簡単に書けてしまっていいのだろうか…


184:デフォルトの名無しさん
08/09/22 23:07:38
Pythonの問題集っぽいのが欲しいです
一度学習した事のチェックがしたいんです

185:デフォルトの名無しさん
08/09/22 23:17:11
なにを求めてるんだか知らんけどな
URLリンク(www.pythonchallenge.com)
URLリンク(projecteuler.net)
URLリンク(ja.doukaku.org)

186:デフォルトの名無しさん
08/09/22 23:27:22
他言語の宿題スレの問題をPythonでやるとか

187:デフォルトの名無しさん
08/09/23 01:51:04
>>185
うおあありがとう

>>186
なるほど

188:176
08/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を使ったコードがあったんですけど動かないのはうちだけ?


189:デフォルトの名無しさん
08/09/23 09:37:08
if id == 1: ... とかいうコードを書いてひどい目にあった
おまいらも気をつけろよ

というか組み込み関数だけでも色分けしてくれるエディタを使うべきか

190:189
08/09/23 09:58:03
import __builtin__; print '\n'.join(dir(__builtin__)) で自己解決

191:デフォルトの名無しさん
08/09/23 10:03:43
>188
Python3000ではcmpパラメータは撤去されたらしい。すまんかった。

URLリンク(www.python.org)
>list.sort() and builtin.sorted() methods: eliminate cmp parameter

192:デフォルトの名無しさん
08/09/23 12:37:43
>>188
Windows上ではfile.truncateでファイルサイズ増やせる
後はctypesでCopyFileW,SHFileOperationWあたりを使ってみるとか

193:デフォルトの名無しさん
08/09/24 21:40:39
URLリンク(www.python.jp)
ここのpycgi.cgiの中にtest.cgiって書いてあるけどこれらは同じじゃないと
動きませんよね?

194:デフォルトの名無しさん
08/09/24 22:18:25
そうだね。
8年前の記事なんて誰も読まないから気付かなかったんだろう。

195:193
08/09/24 23:45:58
>>194 やっぱりそうなんですね。1日悩みましたが解決して先へ進めそうです。
もし中の人がいたら修正お願いします、私みたいな初心者がつまずかないために。

196:デフォルトの名無しさん
08/09/27 11:25:25
Python で作ったデーモンっぽいツールに
(と言ってもログ監視とかその程度だけど)
ちょっとしたウェブインターフェイスを付けたいと思っています。
こういう目的で使える HTTP を扱うモジュールってありますか?

URLリンク(www.athana.org)
なんかは単体のウェブサーバだし・・

197:デフォルトの名無しさん
08/09/27 12:14:53
>>196
URLリンク(www.python.jp)

198:デフォルトの名無しさん
08/09/27 19:32:50
PyHP

199:デフォルトの名無しさん
08/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
のいずれが正規形なのでしょうか?



200:デフォルトの名無しさん
08/09/28 22:15:10
スレ違いのような気もするが、Wikipediaによると次の理由があったのらしい。
the original URL syntax とやらの出典がないので真偽は不明。
URLリンク(en.wikipedia.org)
> 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.

201:デフォルトの名無しさん
08/09/28 22:23:13
RFC1738を見る限りでは使えそうなんだがな

202:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/28 22:59:54
あ、いや、そういうことが言いたいんじゃなかった。

ドキュメントには「urllib.pathname2url() は urllib.quote()
処理された結果が返る」って書いてあるのに「|」が
urllib.quote() 処理されてないじゃん、ってことが言いたかった。
バグじゃねぇ?って思ったんだけど、仕様なのかね。

204:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/09/28 23:20:04
urllib のコードを読んでみた。
なんのことはない、urllib.quote() は RFC3986 ではなく
RFC2396 の reserved をエンコードしているだけ。
ただし "/" は引数 safe のデフォルト値なので除く。
で、そのreservedは何かというと

RFC2396 reserved = ;/?@&=+$,
RFC3986 reserved = :/?@&=+$,#[]!'()*;


206:デフォルトの名無しさん
08/09/29 00:09:14
URLリンク(www8.uploader.jp)

207:デフォルトの名無しさん
08/09/29 11:39:14
組込み関数property()と
メソッド__getattr__()、__setattr__()、__delattr__()って

どっちか一方があれば事足りるような気もするんですが、
何が違うんでしょう??






208:デフォルトの名無しさん
08/09/29 12:24:32
>>207
__???attr__ は動的なプロパティに使えて柔軟。
propertyは用途が制限されている変わりに、単純にクラスにプロパティを追加したいだけなら楽に書ける。

209:207
08/09/29 13:04:42
なるほどぉ~。そういう亊ですね。
ありがとうございます。

210:デフォルトの名無しさん
08/09/30 03:45:11
winでscapy使ってる人います?
キャプチャしたパケットをpdf表示するのにTeXが必要なんだけど
MiKTeXだと上手くいくけど
pLaTeX2eだとdvi出力でタイムアウトしてしまいます。

ちょっとソースみてみたところ、PyXのtext.texrunnerでexpextのパターン指定がないせいで
TeXプロンプトが表示される前に入力を流し込んでるっぽい。

expextにどんなパターンを渡すかってとこで、なんだかわからずお手上げです。

まぁMiKTeX使えばいいんですけど
せっかくTeXなんていう巨大なシステム入れるなら
日本語も使えるようにしたいっす。

211:デフォルトの名無しさん
08/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()


グローバル変数って何なの?意味ないの?

212:デフォルトの名無しさん
08/10/01 15:34:38
def func1():
    x = 10
def func2():
    global x
    x = 20
x = 0
func1()
print "x =", x
func2()
print "x =", x

213:デフォルトの名無しさん
08/10/01 15:48:34
>>211
Pythonのglobal文は、global変数を定義するときじゃなくて
それを使うとき(正確には、global変数に代入するとき)に使うもんだぞ

global bってのは「bというグローバル変数を定義します」
じゃなくて
「このローカルスコープでbというグローバル変数に代入したいです」
という意味だ

なにもなしでローカルスコープで
b = 1
とか書いたら、単にローカルにbという変数が作られてしまうからな
Pythonでは

214:デフォルトの名無しさん
08/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


215:デフォルトの名無しさん
08/10/02 22:11:25
>>214
普通に動かせばデフォルトでアクセスログがstderrに吐かれるみたい
あとハンドラにaddress_stringなるメンバもあるから使えるんじゃないかと

216:デフォルトの名無しさん
08/10/03 00:01:56
py2exe は VC7.1 でコンパイルされているようですが、
たとえば boost.python を使って VC9 でビルドした
DLL を使うような Python アプリケーションでも
py2exe が使えるものなのでしょうか?

異なるバージョンのランタイムを使うDLLが混在
していても問題ないものなのでしょうか?

boost.python をつかった Python アプリを
Linux から Windows に移植しようとしています。

217:デフォルトの名無しさん
08/10/03 01:31:22
configparser と optparse って、
こう、なんか、その、うまく連携してくれないものでしょうか?

218:デフォルトの名無しさん
08/10/03 04:53:11
>>216
FILE*に触ってなければ異なるコンパイラでも動くはず
msvc7とmingw gccでは大丈夫だった

219:デフォルトの名無しさん
08/10/03 09:59:05
GoogleのAndroidのアプリをPythonで作れませんよね?

220:デフォルトの名無しさん
08/10/03 14:15:17
モジュールがあればなんでも出来る

221:デフォルトの名無しさん
08/10/03 15:04:13
2.6 ririisu

222:デフォルトの名無しさん
08/10/03 16:12:16
ktkr?

223:デフォルトの名無しさん
08/10/03 17:02:56
CGIでクエリ文字列を参照したいんですが
環境変数「QUERY_STRING」にはどうやってアクセスすればいいんでしょ??

test.cgi?a=1&b2
の場合は
a=1&b2
を取得したいです。



224:デフォルトの名無しさん
08/10/03 17:06:19
>>223

import cgi
data = cgi.FieldStorage()
a = data.getfirst('a','')

225:デフォルトの名無しさん
08/10/03 17:07:34
環境変数はos.environ

226:デフォルトの名無しさん
08/10/03 17:09:38
WebProg板には、こんなスレッドもあるのだ
スレリンク(php板)

227:223
08/10/04 16:42:07
>>224-226
ありがとうございます!助かりました!

>WebProg板には、こんなスレッドもあるのだ
>スレリンク(php板)
まさかこんなスレがあるとはw



228:デフォルトの名無しさん
08/10/05 02:45:07
デバッグってどうやってます?
emacsに慣れちゃってるんで,Meadowのgud-modeで
pdbを動かしたいんだけど,新規バッファに何も表示されず
"q"で終了するとした時に,今まで溜まってたのが表示される・・・
WinPdbは使いにくいんだよなぁ・・・


229:デフォルトの名無しさん
08/10/05 03:19:59
PyScripter

230:デフォルトの名無しさん
08/10/05 04:00:09
すいませんlinuxなんです

231:デフォルトの名無しさん
08/10/05 07:34:41
eclipse + pyDevじゃだめ?

232:デフォルトの名無しさん
08/10/05 11:17:13
すいませんlinuxなんです

233:デフォルトの名無しさん
08/10/05 11:41:00
emacsじゃだめ?

234:デフォルトの名無しさん
08/10/05 11:47:01
>>232
linuxでeclipse動くだろw

235:デフォルトの名無しさん
08/10/05 12:03:50
すいませんlinuxなんです

236:デフォルトの名無しさん
08/10/05 12:07:55
あやしい部分で print すればいいよ。

237:デフォルトの名無しさん
08/10/05 12:20:29
すいませんlinuxなんです

238:デフォルトの名無しさん
08/10/05 12:35:28
すいませんほんとうはrubyなんです

239:228
08/10/05 13:25:39
皆さんアドバイスありがとうございます!

>>229
これはすごいIDEですね!
こんなものがフリーで使えるとは・・・Python恐るべし!!
もう少し頑張ってみて,どうしようもなかったら乗り換えを検討します.

>>230
VMware上で試したんですけど,linuxのemacsだと問題ないんですよね~

>>231
結構,定番っぽいですね

>>236
それならWinPDBの方がいいかなぁ

ちょっとググってみたら,NTEmacsで
同じ現象に陥っている人を発見!
URLリンク(mail.python.org)
でも,特に情報なし・・・

バックグラウンドでpdbが動いていることは確かで
新規バッファに表示されないだけなので
もう少し調べてみようと思います.

240:228
08/10/05 13:33:09
>>238
スレチですが,rubyも本家で配布しているelispでは
Meadowでrubydbが使えません.

ドライブ文字を含むパスを通すように,rubydb3x.elを修正する必要があります.

Meadowは少数派なのかなぁ・・・



241:デフォルトの名無しさん
08/10/05 14:18:08
python 2.6 がリリースされていますが、 Psyco 1.6 は動作しますでしょうか?
本家にあるWindows用は2.5向けしかないようです。

242:デフォルトの名無しさん
08/10/05 14:22:06
>>241
一般にCで実装されていてコンパイルが必要なライブラリのバイナリ配布物は
メジャーバージョンが違えば*全て*使えない

ソースからコンパイルすれば使える*可能性*はあるが、公式にサポートが
表明されていないなら、全て自己責任の世界

243:241
08/10/05 14:54:41
>>242
ありがとうございます。
これから使ってみようと考えている初心者なんで、素直に2.6用のがでてくるのを待ちたいと思います。

244:デフォルトの名無しさん
08/10/05 17:37:40
使ってみてエラー吐くか試すぐらいしてもいいんじゃね
でもpsycoで高速化される場面は限られるよ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch