Pythonのお勉強 Part2 ..
451:デフォルトの名無しさん
07/12/24 07:58:05
ln -s hoge.py hoge.rb
で一発ジャマイカ
452:419
07/12/24 09:39:25
>>427, 428, 431
レスありがとうございます。
32bit目まで使う必要があるプログラムです。
ビット演算した結果は、fctrl.ioctl()の第二引数に与えます。
0x80000000L => 0x7fffffff
というような変換さえできればいいんですが、
普通2.5だとどうやって32bitの演算をCのように行うんでしょうか。
>>431
>intが16bits幅のCコンパイラでビルドされたpythonがあるかも知れないぞ
自分の環境でデバイスの操作を考えているので、
他環境では動かなくても大丈夫です(動けばなお良い)
ただし、現在2.3で運用しているんですが、
将来的に2.5で動かそうと改造を考えており、
そのためにLの扱いで躓いています。
453:デフォルトの名無しさん
07/12/24 11:18:23
2<<30がどう使われてるかがわからない。30は変数?即値?
変数だとすると、2<<28,2<<29まではビットはひとつしか立ってないが、
2<<30==0x7fffffffということは、最上位ビットの関係でいきなりビットが
反転するがそれでいいの?即値ならそれこそ0x7fffffffを直接使うところだと思ふ。
454:デフォルトの名無しさん
07/12/24 11:35:43
def c_like(n):
if n & (1 << 31):
n = (1 << 31) - (n % (1 << 31)) - 1
return int(n)
print hex(c_like(0x80000000L))
455:デフォルトの名無しさん
07/12/24 11:36:08
def c_like(n):
if n & (1 << 31):
n = (1 << 31) - (n % (1 << 31)) - 1
return int(n)
print hex(c_like(0x80000000L))
456:デフォルトの名無しさん
07/12/24 11:38:47
>>452
コードに問題がある。書き直せ。
457:デフォルトの名無しさん
07/12/24 12:12:37
たしかに、
>2.3だと
>2 << 30が-2147483648なんだけど、
この動作に本質的に依存したコードってなんか危ない気がする・・・
458:419
07/12/24 12:18:33
>>453-456
元は
URLリンク(pyv4l.sourceforge.net)
なんですが、これをちょこちょこ自分で書き直したものです。
LinuxのCのheaderをそのまんま移植したものなので、
ベタ書きで書き直すとメンテが大変になるので避けたいところ。
こっから落とせます。
URLリンク(internap.dl.sourceforge.net)
Python 2.3だと、
>>> import video4linux
>>> help(video4linux)
(snip)
VIDIOCGAUDIO = -2144963056
2.5だと、
VIDIOCGAUDIO = 2150004240L
となります。
>>454-455
それだと、0x7fffffffを取り出せますが、
long longじゃなくてlong intにしたいんです。
2147483647ではなく-2147483648にしたい。
459:デフォルトの名無しさん
07/12/24 12:59:33
>long longじゃなくてlong intにしたいんです。
これでわかった。
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> (-2147483648) & (1 << 31) == (1 << 31)
True
def c_like(n):
if (1 << 31) <= n < (1 << 32):
n = -n
return int(n)
print c_like(0x80000000L)
460:デフォルトの名無しさん
07/12/24 13:31:00
>>449
rubyのどこが気に入らなかったんですか?
pythonはじめたばかりですが
組み込みオブジェクトにメソッド追加したりできるところとか
rubyも魅力的だと思うんですが
461:デフォルトの名無しさん
07/12/24 13:34:18
また君か
462:デフォルトの名無しさん
07/12/24 13:46:01
またって?
rubyに関する質問したのは初めてですよ
463:デフォルトの名無しさん
07/12/24 13:48:26
また(空気の読めないRuby厨)君か
464:デフォルトの名無しさん
07/12/24 14:18:42
>>463
いくらなんでも無理ありすぎw
465:デフォルトの名無しさん
07/12/24 14:45:44
他の言語はじめたばかりじゃわからないだろうから
わかるまで黙ってると良いと思います
466:デフォルトの名無しさん
07/12/24 16:03:41
この板なんでID無いの?
467:デフォルトの名無しさん
07/12/24 16:35:20
技術系の板なので、誰がレスしたかよりもレスの中身を重視しているから
468:デフォルトの名無しさん
07/12/24 17:16:31
Vとか機種依存文字がページに含まれてると
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 176-177: illegal multibyte sequence
となって上手くいきません。
import urllib
uconn = urllib.urlopen('URLリンク(pc11.2ch.net)')
for e in uconn.readlines():
e = unicode(e, 'sjis')
elem = e.rstrip(u'\r\n').split(u'<>')
print ''.join(elem)
一度ローカルに保存してテキストエディタなどでutf-8に変換する以外で
この問題を回避する方法はあるでしょうか?
469:デフォルトの名無しさん
07/12/24 17:19:46
>>275
ddでこけました
UnicodeDecodeError: 'shift_jis' codec can't decode bytes in position 169-170: illegal multibyte sequence
470:デフォルトの名無しさん
07/12/24 17:26:19
Windowsなら'shift_jis'の代わりに'cp932'を使う。とか?
471:デフォルトの名無しさん
07/12/24 17:26:43
>>468
sjisをcp932でいけるんじゃね
472:468
07/12/24 17:39:02
事故解決
新キャラクタセット cp932 / eucjpms
URLリンク(www.mysql-partners-jp.biz)
PHPからMySQL4.1とか5.0とか5.1とかに接続すると文字化けする : ::yossy.blog::
URLリンク(yossy.iimp.jp)
PHPで「(はしごたか)」「ア(たつさき)」が文字化ける(2) : ::yossy.blog::
URLリンク(yossy.iimp.jp)
sjis != cp932
cp932 == sjis + NEC 特殊文字 + NEC選定IBM特殊文字 + IBM特殊文字
なんですね。
というかweb上のサービスはいい加減UTF-8に統一しようよ…
473:デフォルトの名無しさん
07/12/24 18:23:47
>436
python ワンライナー で具具レバ… 超人に会えるでしょう
474:デフォルトの名無しさん
07/12/25 01:29:30
>>468
e = unicode(e, 'sjis', 'replace')
e = unicode(e, 'sjis', 'ignore')
475:デフォルトの名無しさん
07/12/25 02:38:16
>>474
逃げちゃだめだろw
476:デフォルトの名無しさん
07/12/25 03:11:09
拡張子をpywにして
os.system('dir > d.txt')
を実行すると一瞬だけ
DOS窓が立ち上がるんですが
これを出さずに実行する事は可能でしょうか?
477:デフォルトの名無しさん
07/12/25 03:22:05
>>472
ユニコードは漢字文化圏を尊重せずに文字数切り詰めて"統合"したりするから
統一しようにもできないわけで。
コンピュータ中心に世の中回ってる訳じゃないからね
478:デフォルトの名無しさん
07/12/25 04:02:27
>>476
パイプ
479:468
07/12/25 04:17:49
>>474-475 >>477
dくす
URLリンク(diary.atzm.org)
何でreplaceやらignoreなんてオプション指定があるんかなと不思議に思って
調べてみたら、フィルタリングするような用途で便利なんですね。
というかクロスプラットフォームを意識するとsjis+replaceで書いた
ほうが汎用性がありそうでした > unicode(elem, 'sjis', 'replace')
d
480:デフォルトの名無しさん
07/12/25 05:46:02
Python2.5.1のインストーラー版を使っていますがC拡張モジュールをコンパイルするにはVS2003がないと駄目ですか?
VS2008かMingwでコンパイルしたいんですが。
481:デフォルトの名無しさん
07/12/25 06:11:21
The Art of UNIX Programmingに
スピードが必要な時には、PythonはCのプログラムに変換できる
というようなことが書かれていたのですが
どうやればいいですか?
482:デフォルトの名無しさん
07/12/25 06:13:01
FILE* とかやりとりするとダメなんだっけ
オレはDDKに入ってるmsvc8相当でコンパイルしてるけど
483:デフォルトの名無しさん
07/12/25 11:26:55
>>476
import subprocess
subprocess.call("dir > d.txt", shell=True)
484:デフォルトの名無しさん
07/12/25 11:28:45
>>480
漏れはVC6でCOM利用モジュール作って使ってるけど、問題なく使えてる。
485:デフォルトの名無しさん
07/12/25 13:04:47
ところで公式で配布されてるのは何でコンパイルしてるん?
[MSC v.1310 32 bit (Intel)]
1310言われても分からない
486:デフォルトの名無しさん
07/12/25 13:11:14
>>485
VC6 Ver12.00
VC2002 Ver13.00
VC2003 Ver13.10 *これ
VC2005 Ver14.00
VC2008 Ver15.00
487:デフォルトの名無しさん
07/12/25 13:47:31
>>480
MinGW (gcc 3.2.3) で拡張モジュールのコンパイルできてるよ。
488:デフォルトの名無しさん
07/12/25 17:22:32
>>478
>>483
無事に解決する事が出来ました。
ありがとうございました。
489:デフォルトの名無しさん
07/12/25 22:10:44
>>480
URLリンク(python.matrix.jp)
490:デフォルトの名無しさん
07/12/26 01:42:49
Python 使える無料スペースってどこかに無い?
491:デフォルトの名無しさん
07/12/26 01:46:48
xrea
492:デフォルトの名無しさん
07/12/26 01:56:59
seq0 = seq1
seq0[:] = seq[:]
seq0 = [i for i in seq1]
seq0=[]; for i in seq1: seq0.append(i)
ってどれも同じ処理してる?
493:デフォルトの名無しさん
07/12/26 02:17:26
処理は見たまんまでちがうし結果も異なる。
seq0 = seq1は同一オブジェクトを指すことになるが
他はリストを再構築してるので異なるオブジェクト(コピー)になる。
494:デフォルトの名無しさん
07/12/26 04:41:10
seq0[:] = seq[:]
495:デフォルトの名無しさん
07/12/26 06:49:25
seq0 = seq1
浅いコピー
seq0[:] = seq[:]
普通のコピーになってるが、seq0が初期化されてる必要がある。
seq0 = [i for i in seq1]
普通のコピー
seq0=[]
for i in seq1: seq0.append(i)
普通のコピー
496:419
07/12/26 08:48:24
最終的に、演算子を自分で定義しました。
レス下さった方々、ありがとうございました。
class int32(int):
def __int2long(self, n):
if n >= 0:
return long(n)
else:
return long(0xffffffff - n - 1)
def __long2int(self, n):
if n & 0x80000000: # negative
return int(-2**31 + (n & 0x7fffffff))
else: # positive
return int(n & 0x7fffffff)
def __and__(self, y):
return self.__long2int(self.__int2long(self) & self.__int2long(y))
def __or__(self, y):
return self.__long2int(self.__int2long(self) | self.__int2long(y))
def __lshift__(self, y):
n = self.__int2long(self) << y
return int32(self.__long2int(n))
def __rshift__(self, y):
n = self.__int2long(self) >> y
return int32(self.__long2int(n))
497:デフォルトの名無しさん
07/12/26 08:52:16
>>490
オマエのパソコン
498:デフォルトの名無しさん
07/12/26 10:52:27
>>496
>>> from ctypes import c_int as int32
>>> 2 << 30
2147483648L
>>> int32(2 << 30).value
-2147483648
499:419
07/12/26 11:18:35
>>498
ああ、そんなのがあるんですか。
ありがとうございます。知りませんでした。
ただ、2.3でも2.5でも動くようにしたいので、
2.3が消え去るまでは>>496の方法でやろうと思います。
500:デフォルトの名無しさん
07/12/26 16:00:50
2.3が消え去るまでって・・・
オレなんか未だに 1.5.2 で動くコードを書かされてる。
つまり消えない。
501:468
07/12/26 16:53:04
そういえば最近読んだironpythonの本にも>>474と
encodeとdecodeの書式で取り扱うみたいに書いて
あったな…物忘れが激しすぎな罠d
>>500
ちょっと関連するかもしれないのだけど
PyrexとCythonのコードdiff取って読んでみたら
なんとなくだけどCython微妙
三項演算子、切捨て除算、#ifdef、+=、とか対応してる
けど、なんかコードが助長になってると思う。
error_goto_if_null() とか module.py_result() とか
isingmodel: pyising.pyx@4ecf71b2c0b0
URLリンク(hg.sharesource.org)
Cに変換する用途なんだからそんなの別にいいじゃんとか
言われると、その通りだとは思うけどさ
というかPyrexのドキュメントがわかりにくすぎるのが
いけないと思うんだ。わかりやすく書こうよ... orz
502:デフォルトの名無しさん
07/12/26 16:58:29
ごめん#IfdefはPyrexでも対応してるな
503:デフォルトの名無しさん
07/12/26 20:27:19
>>501
わかりにくすぎる
504:デフォルトの名無しさん
07/12/27 02:07:45
質問です
コードを読むときのエディタは
何を使ってますか?
505:デフォルトの名無しさん
07/12/27 02:20:06
ファイル単位で読むときはVim
プロジェクト単位で読むときはEclipseかな。
われながらつまんない回答だとおもう。
506:デフォルトの名無しさん
07/12/27 08:12:03
自分用ライブラリってどこに配置するのがいいですか?
507:デフォルトの名無しさん
07/12/27 08:38:58
>>506
どこでもいい。$HOME/lib/pythonとか。
あとは$PYTHONPATHを設定するだけ。
508:デフォルトの名無しさん
07/12/27 09:08:54
djangoでファイルのアップロード試してみたんですが
50MBくらいまでならなんとか平気で動くんですけど
100MB近くになるとサーバー自体が重たくなって
500MBクラスのものを試すと数十分固まったあげく
最後にエラーで中断されてしまいます
python恒例のオンメモリで全部処理する罠にはまってるのでしょうか?
どなたかうまく回避しているかたがいらっしゃいましたら教えていただけないでしょうか
509:デフォルトの名無しさん
07/12/27 09:26:10
え…pythonってオンメモリで全部処理するの…?
510:デフォルトの名無しさん
07/12/27 10:08:37
実装依存の問題を言語のせいにするのはゆとり教育の弊害?
511:デフォルトの名無しさん
07/12/27 10:15:25
ヒソヒソ( ゚д゚)パイソン(゚д゚ )オンメモリ…
512:デフォルトの名無しさん
07/12/27 10:20:58
話がよく分からんのだがディスクスワップのこと?
OSの仕事だと思うんだけど
513:デフォルトの名無しさん
07/12/27 10:36:03
これはひどい
URLリンク(www.youtube.com)
514:デフォルトの名無しさん
07/12/27 11:48:07
python の source を色つきでカッコよく印刷するのって
何を使ってますか?
できれば unix 環境で使えるもの希望
515:デフォルトの名無しさん
07/12/27 14:48:57
聞いた場所が間違ってたようですので移動します
516:デフォルトの名無しさん
07/12/27 15:38:31
>>515
つEmacs
517:デフォルトの名無しさん
07/12/27 16:34:17
py2htm
とかてきとーにいってみる
518:516
07/12/27 17:16:51
アンカー間違った
>>514
つEmacs
519:デフォルトの名無しさん
07/12/27 17:22:04
>>517
あー、難しく考えてた。
htmlとcss使えばいいのか。
520:デフォルトの名無しさん
07/12/27 18:42:24
>>519
PyXR: Package c:\python24\lib\site-packages\win32\lib
URLリンク(pyxr.sourceforge.net)
とか見た目がよいかんじなのでおすすめ
[pythonpath]
usePythonpath = 0
exclude =
include = c:\Python25\Lib\xml
という具合にsetting.cfgに指定してあげてpython webserver.pyで
URLリンク(localhost:8088)にアクセスすればすぐ試せるよ
excludeとincludeの指定の仕方がワケわからんからはまると思うけど
たぶん簡単にできるかも。というか俺が知りたい…>>指定の仕方
なんかexcludeで弾いてやらないとsite-pacage下の全ファイルを
ドキュメントに変換し始めて止まらなくなったりすることが…
## pageText.pyも関係あるみたいだったので追記
if __name__ == '__main__':
pt = pageText("/pysrc", write=open("output.htm", "w").write)
pt.writeFileText("c:\\python25\\lib\\xml\\__init__.py")
#pt.writePathText("/c/python25/lib/")
#pt.writeRootText()
521:デフォルトの名無しさん
07/12/27 23:14:07
>>514
a2ps --prolog color がオヌヌメ。
522:デフォルトの名無しさん
07/12/28 05:57:41
reprって何の略ですか?
523:デフォルトの名無しさん
07/12/28 08:24:53
representation(表現)
524:デフォルトの名無しさん
07/12/28 08:42:33
ありがとうございます
525:デフォルトの名無しさん
07/12/28 09:07:44
環境変数PYTHONPATHをpythonコード内で設定しても効かないのでしょうか?
import os
os.environ['PYTHONPATH'] = パス
って感じにしてからimportしてるのですが
うまくimportできません。
コード内でモジュールサーチパスを指定するにはどうしたらいいですか?
526:デフォルトの名無しさん
07/12/28 09:32:02
sys.path
527:デフォルトの名無しさん
07/12/28 09:47:48
>>526
ありがとうございました
528:デフォルトの名無しさん
07/12/28 12:17:29
MatchObjectオブジェクトとか
RegexObjectオブジェクトとか
くどくね?
何でオブジェクト二回言うの?
529:デフォルトの名無しさん
07/12/28 12:58:47
SCSIインターフェース
530:デフォルトの名無しさん
07/12/28 13:28:40
ということは Object を略して O にすればそんなに気にならなくなるわけだな
MatchO オブジェクト
マッチョ!!
531:デフォルトの名無しさん
07/12/28 13:56:36
>>529
たしかにSCSIインターフェイスっておかしいね
532:デフォルトの名無しさん
07/12/28 14:02:12
リストの末尾への追加が
list.append('hoge')か
list += ['hoge']しかないのって冗長じゃね?
PHPなら
$list[] = 'hoge'
という書き方ができる。
PHPより冗長ってどんだけ〜
533:デフォルトの名無しさん
07/12/28 14:15:58
>>531
おかしくはない。
534:デフォルトの名無しさん
07/12/28 14:59:41
import〜と
from〜import〜の使い分けってどうやってますか?
何かコツなどあれば教えて下さい。
535:デフォルトの名無しさん
07/12/28 15:05:45
>>508
Python はリスト処理言語なんだから
そんな低レベルな用途に使っちゃ遺憾
536:デフォルトの名無しさん
07/12/28 15:19:30
ageてるのはみんな釣りなん?
537:デフォルトの名無しさん
07/12/28 15:26:50
urllib.urlopen()でwikipediaのページを取得すると、
Error: ERR_ACCESS_DENIED
というエラーになります。
どうも拒否られているみたいです。
urllib.urlopen()を使ってwikipediaを取得するにはどうしたらいいですか?
538:デフォルトの名無しさん
07/12/28 15:27:23
>>534
後で読みやすい方で書けばおk
from A import X, Y
これは、ソースの先頭を見たときに X と Y を使っていることが分かる。
import A
これだとソース本文を見たときに
A.hoge()
A.boge()
といった処理がAに依存していることが分かる。
539:537
07/12/28 15:43:49
urllibの説明に
現在のところ、以下のプロトコルだけがサポートされています: HTTP、 (バージョン 0.9 および 1.0)
と書かれていました。今時http1.0!?
これってバーチャルホストすらできないプロトコルですよね
もう古いのかと思い
urllib2にしたら、403 forbiddenになりました
googleは問題なく取得できるのですが…
pythonはwikipediaに嫌われている?
540:デフォルトの名無しさん
07/12/28 15:50:46
>pythonはwikipediaに嫌われている?
自分の力量不足をpythonのせいにしやがって。
氏ねよ屑。
User-agentを送ってないから弾かれているだけだろ。
541:デフォルトの名無しさん
07/12/28 16:19:11
>>540
確かにUAをセットしたら取得できました
ありがとうございました
542:デフォルトの名無しさん
07/12/28 16:21:34
HTTPライブラリでデフォのUser-Agentがないのもめずらしなとおもって試してみたら
デフォの"User-Agent: Python-urllib"がブラック扱いされてるようだぜ?
とりあえず>>540は便所掃除で風説の流布は勘弁してやる。
543:デフォルトの名無しさん
07/12/28 16:33:53
やっぱり嫌われてるんじゃん・・・
ブラック扱いってどんだけ〜
グイドがgoogleの従業員だからか
544:デフォルトの名無しさん
07/12/28 17:05:24
pyscripterでコード書いてるんですが
エディタ部の色が白いので目が痛いです
色をかえる方法あったら教えて下さい
545:デフォルトの名無しさん
07/12/28 17:08:48
pythonでアタックツール書いた奴がいるんじゃね?
546:デフォルトの名無しさん
07/12/28 17:11:03
uaなんていくらでも詐称可能だから
ブラックリスト入りさせることにどれだけの効果があるのか疑問
やはり嫌がらせ的なものとしか考えられない・・
547:デフォルトの名無しさん
07/12/28 17:39:29
cgiの拡張子を.spamにしたのが効いたんじゃね
548:デフォルトの名無しさん
07/12/28 18:04:49
ホワイトリスト方式なんじゃねーの?
549:デフォルトの名無しさん
07/12/28 18:15:26
pythonに限らず、libwww-perlとかもけっこう弾かれているそうな
URLリンク(www.hazama.nu)
550:デフォルトの名無しさん
07/12/28 18:21:03
>>540
wwwwww
551:デフォルトの名無しさん
07/12/28 23:23:35
Pythonでユニコード文字列という場合、文字コードのutf-8とはまったく関係ないのでしょうか?
一般的にはunicodeの実装がutf-8ですよね?
552:デフォルトの名無しさん
07/12/29 00:23:34
>>551
全く関係ないことはないが、関係ない。
unicodeは文字コード、utf-8はエンコーディング方式。
553:デフォルトの名無しさん
07/12/29 00:24:03
Googleの次はWikipediaか。
バーボン送りにしとけ。
554:デフォルトの名無しさん
07/12/29 00:28:59
from
って予約後?
555:デフォルトの名無しさん
07/12/29 00:32:24
うん
556:デフォルトの名無しさん
07/12/29 00:34:32
>>551
>Pythonでユニコード文字列という場合、文字コードのutf-8とはまったく関係ないのでしょうか?
関係ない。
Pythonでいうユニコード文字列は unicode object と
u'foo' / u'\u1234' 形式のリテラル表現あたりのこと。
>一般的には unicode の実装が utf-8 ですよね?
PerlやRubyとかのエンコーディングはね。
Pythonは UCS-2かUCS-4。
Windows, JavaはUTF-16。
(Python以外はうろ覚えだけど)
557:デフォルトの名無しさん
07/12/29 00:40:34
>>> import keyword
>>> "from" in keyword.kwlist
True
558:デフォルトの名無しさん
07/12/29 02:49:52
>>549
uaを変更することすら出来ない程低レベルなスパマーが多いから
uaのフィルタリングも一定の有効性はあるってことかな
559:デフォルトの名無しさん
07/12/29 08:57:17
>>552 >>556
ありがとうございます。
確認できて安心しました。
unicode(text, "utf-8")
utf-8の文字列をユニコード文字列に変換する
とかで混乱してましたがすっきりしました。
560:デフォルトの名無しさん
07/12/29 09:06:44
他言語だと
長い文字列を、改行を挟んで記述することがありますが
pythonだと改行が意味を持つのでうまく出来ません
$str = "hogehogehoge" .
"mogemogemoge" .
"pogepogepoge"
みたいな記述法をpythonでするにはどうしたらいいですか?
561:デフォルトの名無しさん
07/12/29 09:17:26
>>560
.の変わりに\を使う
562:デフォルトの名無しさん
07/12/29 09:25:53
>>561
oh
ありがとうございました
563:デフォルトの名無しさん
07/12/29 10:21:33
>>558
つまり >>540 は spammer を増やした訳だな
564:デフォルトの名無しさん
07/12/29 11:47:19
ドキュメンテーション文字列って、文字列だから、
中間コードにされても実際にメモリは占有するよね?
コメントの方がよくね?
565:デフォルトの名無しさん
07/12/29 12:22:35
対話環境でhelp()で見れるという利点もある。
まあメモリの占有が問題になるほど大量にドキュメントを書くこともないだろうし。
566:デフォルトの名無しさん
07/12/29 12:25:13
>>564
勝手に -OO オプションでも付けてろよ
567:デフォルトの名無しさん
07/12/29 13:35:32
PythonでCGI書いてるんですが、コンソールにログを出力する方法はないでしょうか?
今は
print "Content-type: text/html;charset=utf-8\n"
の後に出力してHTMLを返すようにしてるんですがこれだと面倒なので・・・
568:デフォルトの名無しさん
07/12/29 15:34:06
content-type:〜
書かなかったらCGIじゃないじゃん
569:デフォルトの名無しさん
07/12/29 16:25:33
デバッグで途中の変数の値とか表示させたいだけなんですが。
570:デフォルトの名無しさん
07/12/29 16:32:38
CGIなのにコンソール?
571:デフォルトの名無しさん
07/12/29 16:33:43
WinならOuptutDebugStringに出してODSモニタで見られそうなもんだが
具体的には知らん。
572:デフォルトの名無しさん
07/12/29 17:00:11
>>567
def debug_msg(msg):
open('/tmp/debug.log', 'a').write('** debug: ' + msg + '¥n')
を定義して debug_msg('var='+repr(var)) とかして使う。
そしてコンソールで
tail -f /tmp/debug.log
とすれば、デバッグメッセージが表示される。
本格的にするにはloggerかなんかを使うんだろうけど。
573:デフォルトの名無しさん
07/12/29 17:15:37
>>569
cgitbって言うの使えば、エラー起きた前後の関係ありそうな変数の中身
自動で表示してくれるよ。
import cgitb; cgitb.enable()
574:デフォルトの名無しさん
07/12/29 18:40:08
>>572
closeはいつすればよいですか?
575:デフォルトの名無しさん
07/12/29 18:44:46
>>572
flush はいつすればよいですか?
576:デフォルトの名無しさん
07/12/29 19:08:48
質問。
ファイルからバイナリデータを読み込んで
1バイト毎の数値のリストとして扱いたいんですが
文字列から数値への変更方法がわかりません。
すいませんが教えてください。
577:デフォルトの名無しさん
07/12/29 19:10:57
chr ord
578:デフォルトの名無しさん
07/12/29 19:24:48
>>577
ありがとうございます! できました!
579:デフォルトの名無しさん
07/12/29 19:37:23
>>574-575
どちらもしなくていいですよ
580:デフォルトの名無しさん
07/12/29 20:12:20
>>574-575
def debug_msg(msg):
open('/tmp/debug.log', 'a', 0).write('** debug: ' + msg + '\n').close()
581:デフォルトの名無しさん
07/12/29 20:20:13
そもそも毎回open()するのが。。。
CGIならstderrに出せばWebサーバのログに残るし
たいがい出力先もサーバの設定で変えられる。
582:デフォルトの名無しさん
07/12/29 20:25:23
Pythonで動くRubyやPerlって誰か作ってないかな。すごく欲しくなってきた。
変態っぽい環境だけど、将来需要ありそうな予感。
583:デフォルトの名無しさん
07/12/29 21:35:12
変態的という以外の利点を教えてくれ
584:デフォルトの名無しさん
07/12/29 21:46:26
execvで充分
585:デフォルトの名無しさん
07/12/29 21:57:31
>>583
Linux/Unixの各所に残っている腐れ縁のPerlのツールをPythonで
動かせれば、Perl猿人を入れなくて済む。
それとCRubyよりCPythonの方が規模というか依存が少ないので
小が大を兼ねる状態になっていい感じと思った。
これが実装できればグーグルに入社できるかもね!
586:デフォルトの名無しさん
07/12/29 22:09:21
>>582
Rubyなんて絶対に必要ないだろwww
587:デフォルトの名無しさん
07/12/30 00:35:14
Is perl interpreter that written in python perl or python ?
588:デフォルトの名無しさん
07/12/30 00:58:34
>>587
その英語ネイティブに言っても通じないわ(wwwwwwwwwwwwwwwwwww
589:デフォルトの名無しさん
07/12/30 01:16:02
ネイティブが書かない英語だが、「まるでわからん」と言い出すネイティブがいたら、
そいつは単なる馬鹿か、あるいは「レスって何ですか?」とか言っちゃうタイプだな。
590:デフォルトの名無しさん
07/12/30 01:22:30
わかりやすく2文に分けろ。
591:デフォルトの名無しさん
07/12/30 01:26:14
perl interpriterの後は
that(which) is written in Python か
writenn in Python
じゃね?
それと、Per、Pythonみたいな固有名詞は大文字から始めるんだぜ。
おまいの英語、中学生からやり直した方がよくね?
592:デフォルトの名無しさん
07/12/30 01:27:24
>>589
文法的に間違っている英語が分からないと馬鹿呼ばわりされるのか.
よい勉強になったよ.
593:デフォルトの名無しさん
07/12/30 01:28:39
なんつーか・・・ム板ってスルー力ゼロだよな・・・
594:デフォルトの名無しさん
07/12/30 01:47:30
高卒の俺が考えてみた。添削おね。
Is it Perl or Python which is a Perl interpreter written in Python?
冗長だから、Is it Perl or Pythonで一回切りたい。見出しっぽく。
Is it Perl or Python, a Perl interpreter written in Python?
みたいな書き方っていかんのだろうか。
URLリンク(jp.youtube.com)
595:デフォルトの名無しさん
07/12/30 02:03:08
インタプリタがどの言語か、ってとこから可笑しいだろ…
596:デフォルトの名無しさん
07/12/30 02:12:26
いや、そんな直訳で受け取られても…。
>>587は>>582に対する皮肉として書かれたんだろうし。
597:デフォルトの名無しさん
07/12/30 02:15:56
文法的に間違っている英文なんて直訳すらできないだろ(wwwwwwwwwwwwww
598:デフォルトの名無しさん
07/12/30 02:23:46
firefoxでURLを開くことを試しています。環境はUbuntu7.04です。
成功
os.system("firefox URLリンク(yahoo.co.jp)<)"])
subprocess.call(["firefox", "URLリンク(yahoo.co.jp)<)")
os.spawnlp(os.P_NOWAIT, "firefox", "URLリンク(yahoo.co.jp)")
なぜspawnだとうまくいかないのでしょうか。
599:デフォルトの名無しさん
07/12/30 02:25:17
>>596
だから中学生からやりなおせって(WWWWWW
600:デフォルトの名無しさん
07/12/30 03:49:15
print 'a','b'
ってやるとaとbの間に空白が入って「a b」って出力されるけど
この空白を挿入させないようにする方法ってありませんか?
601:デフォルトの名無しさん
07/12/30 03:55:36
print 'a' + 'b'
区切りで半角スペースが入るのは仕様ってどっかに書いてた。
602:デフォルトの名無しさん
07/12/30 04:15:01
>>601
トンクス。
仕様なら諦めます。
603:デフォルトの名無しさん
07/12/30 04:19:54
printうんぬんの話題を見てて思うのだが、
これって対話モード時のリターン値の"表示"の延長であって、
プログラムの"出力"用途じゃない希ガス。
604:デフォルトの名無しさん
07/12/30 04:54:00
>>598
質問からは少しずれるけど
標準ライブラリにwebbrowser.open(url)っていうのがあるよ。
2.5からはブラウザのタブにも対応してる。
605:デフォルトの名無しさん
07/12/30 07:25:37
前スレ
スレリンク(tech板)
547 :デフォルトの名無しさん:2007/11/18(日) 21:51:04
printで一文字ずつ表示させると、間にスペースであいてしまうのはなぜ?
例)
x="hoge"
for y in x:
print "%c" % ord(y),
出力:
h o g e
548 :デフォルトの名無しさん:2007/11/18(日) 21:56:38
print i, j, k, l としたときに見やすいから
549 :デフォルトの名無しさん:2007/11/18(日) 22:10:06
printは主にデバッグ用だから
くっつけたいなら、print''.join("%c" % ord(y) for y in x)
550 :デフォルトの名無しさん:2007/11/18(日) 22:15:11
sys.stdout.write()でもいいよ
606:デフォルトの名無しさん
07/12/30 13:20:54
Python3.0では
print(1,2,3) # 1 2 3
print(1,2,3,sep='') # 123
print(1,2,3,sep='|' # 1|2|3
607:デフォルトの名無しさん
07/12/30 14:34:19
)
608:デフォルトの名無しさん
07/12/30 14:37:01
python で書かれた 2ch ブラウザってありますか?
609:デフォルトの名無しさん
07/12/30 14:46:45
昔あったな
610:デフォルトの名無しさん
07/12/30 16:02:26
webprogramを書くにあたっての
python特有の強みって何ですか?
611:デフォルトの名無しさん
07/12/30 16:03:10
特にありません
612:デフォルトの名無しさん
07/12/30 16:56:29
WebアプリケーションでPHPとPythonどっちがいい?
613:デフォルトの名無しさん
07/12/30 17:16:26
PHPに決まってるだろハゲ
614:デフォルトの名無しさん
07/12/30 17:23:36
PHPはなんちゃって仕様が多すぎていややもう
615:デフォルトの名無しさん
07/12/30 17:24:11
あえて挙げるならASP
616:デフォルトの名無しさん
07/12/30 17:31:46
>>614
kwsk
617:デフォルトの名無しさん
07/12/30 20:52:49
外人のPythonの発音がどうしてもパイパンにしか聞こえません><
618:デフォルトの名無しさん
07/12/30 21:04:20
>>617
耳がわるいもしくは脳内エロ辞書が充実しすぎ。
619:デフォルトの名無しさん
07/12/30 21:13:01
>>480
VS2008だとRuntimeErrorが発生してVS2003でコンパイルしてくださいというエラーメッセージが表示される。
620:デフォルトの名無しさん
07/12/30 21:17:56
>>600どれでも好きなの使へ
print 'a''b'
print 'a' 'b'
print 'a'+'b'
print '%s%s'%('a','b')
621:デフォルトの名無しさん
07/12/30 22:07:35
Microthreadを使いたいんだけど、Stackless Pythonとgreenletだとどれぐらい速度が違うの?
たぶんStacklessのほうが速いと思っているんだけど。
622:デフォルトの名無しさん
07/12/30 22:15:48
>>612
URLリンク(q.hatena.ne.jp)
623:デフォルトの名無しさん
07/12/30 22:18:22
またruby厨かよ、もういいよ
624:デフォルトの名無しさん
07/12/31 10:02:20
pythonでmdbに接続するにはどうしたらいいのでしょうか?
win32com?
625:デフォルトの名無しさん
07/12/31 10:12:03
「pythonで」の「で」って何よって話
import win32com.client
import adodb
OpenOffice.org Scripting with Python
626:デフォルトの名無しさん
07/12/31 10:28:03
説明不足ですまんこ
pythonを使ってMSAccessを操作したいのです。
INSERTなどはどうしたらいいのでしょう?
ちなみにみなさん開発環境ってなに使ってます?
やっぱりテキストエディタ?
627:デフォルトの名無しさん
07/12/31 10:33:38
>>626
URLリンク(xwave.exblog.jp)
628:デフォルトの名無しさん
07/12/31 10:46:12
pythonからmdb操作とか需要ないのかね・・・
説明少なすぎて解りません。
実力がないだけか
629:デフォルトの名無しさん
07/12/31 10:50:58
win32comで繋ぎに行くだけであとはVBからやるのと大差ないんだが
そのwin32comの説明が少ないという罠
単にDB使いたいだけならSQLite使っちゃうしね
630:デフォルトの名無しさん
07/12/31 11:14:25
既にmdbを使用してる状況なのでSQLLiteっていう選択肢はないので・・・
詳しい説明が掲載されている場所はないですかね?
631:デフォルトの名無しさん
07/12/31 11:18:44
つか、何が分からんのか分からん。
632:デフォルトの名無しさん
07/12/31 12:07:24
URLリンク(xwave.exblog.jp)
633:デフォルトの名無しさん
07/12/31 12:22:37
cn = win32com.client.Dispatch('ADODB.Connection')
cn.Open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb')
cn.Execute(u"insert into 日本語テーブル (fileda, fieldb, 日本語フィールド) values (%d, '%s', '%s')" % (5, '6', u'七'))
rs = win32com.client.Dispatch('ADODB.Recordset')
rs.Open(u'select * from 日本語テーブル', cn, 1, 3)
while not rs.EOF:
print '%d, %d, %s, %s' % (rs.Fields('id').Value, rs.Fields('a').Value, rs.Fields('b').Value, rs.Fields(u'日本語フィールド').Value, )
rs.MoveNext()
rs.Close()
cn.Close()
634:デフォルトの名無しさん
07/12/31 12:54:31
おぉ、コード書いてもらえると解りやすか!
pythonはじめたばかりだけど、みんなどんな用途に使ってる?
635:デフォルトの名無しさん
07/12/31 13:09:58
バッチ処理に関数計算機にGUIアプリにwebアプリに…
ようするになんでも。
636:デフォルトの名無しさん
07/12/31 15:07:17
テキスト処理周りでいろいろ。
637:デフォルトの名無しさん
07/12/31 18:19:39
単調な作業とかをこなすときに、小さなツールガリガリ書いてる
638:デフォルトの名無しさん
07/12/31 19:22:50
僕たちが従事するドカタ仕事には欠かせないアイテムですね!
639:デフォルトの名無しさん
07/12/31 20:43:29
俺はドカタ仕事はJava使ってるので
Python弄ってると心が癒される
640:デフォルトの名無しさん
07/12/31 20:58:23
>>639
ドカタ乙(wwwwwww
641:デフォルトの名無しさん
07/12/31 21:29:41
>>639
会社で年越しでつか?
642:デフォルトの名無しさん
07/12/31 21:52:43
そうです
643:デフォルトの名無しさん
07/12/31 22:03:04
使い捨ての低賃金労働者が、会社で年越しか。
Pythonで憂さ晴らしでもしないと、やってられないよね。
644:デフォルトの名無しさん
07/12/31 22:12:36
職業人はマ板いってくれんか
645:デフォルトの名無しさん
07/12/31 22:14:06
そうそう。
ここはニートでPython覚えればGoogleに入れると信じて疑わないメルヘン専用のスレですよ。
646:デフォルトの名無しさん
07/12/31 23:07:05
x メルヘン
o メンヘル
647:デフォルトの名無しさん
07/12/31 23:32:03
幾スレにも渡ってメルヘンと書き続けて来た>>645乙
よいお年を
648: 【大吉】 【233円】
08/01/01 00:07:51
ことよろ
649: 【ぴょん吉】
08/01/01 00:09:32
ことしもPythonよろ
650:デフォルトの名無しさん
08/01/01 00:11:36
あけおめ
Python3000とそれに隠れがちなPython2.6に期待
651:デフォルトの名無しさん
08/01/01 00:22:47
会社で年越しでつ
ことよろ
652:デフォルトの名無しさん
08/01/01 04:45:59
Python2.99999....とかで止まらないかなぁ。
653:デフォルトの名無しさん
08/01/01 05:41:10
2.999... という循環小数は 3 と等しいんだぞ。
654:デフォルトの名無しさん
08/01/01 05:44:51
2.9.6
2.9.7
2.9.8
2.9.9
2.9.9.1
2.9.9.2
...
2.9.9.9
2.9.9.9.1
...
2.9.9.9.9
655:デフォルトの名無しさん
08/01/01 06:10:11
2.999....999...
==
3.1.0 !!!
656:デフォルトの名無しさん
08/01/01 07:31:33
おめでとうございます
657:デフォルトの名無しさん
08/01/01 09:02:20
>>655
それはない
2.6の次の2.7で2.xシリーズは終わりで、
メンテナンスリリースが2.7.1.8.2.8... という妄想ならしたことある
658:デフォルトの名無しさん
08/01/01 09:25:33
なにそのMETAFONT
659:デフォルトの名無しさん
08/01/01 13:56:21
>>652
それはRubyで期待しろwww
660:デフォルトの名無しさん
08/01/01 21:27:28
py***/&+
661:デフォルトの名無しさん
08/01/02 18:23:26
defFnRule = "([0-9][0-9])__(.*)"
ldir = os.listdir( os.getcwd() )
for fn in ldir:
chk = re.match( defFnRule, fn )
if chk != None :
matchList = re.findall( defFnRule, fn )
newName = matchList[0] + "_" + matchList[1]
print "New:>> [%s]" % newName
こんなコード書くと、
newName = matchList[0] + "_" + matchList[1]
ここで怒られるんだが…
連結できるのはstrではなくタプルだ…って意味が良く分からんのですが…。
662:デフォルトの名無しさん
08/01/02 18:48:30
>>> import re
>>> L = re.findall('(\d\d)__(.*)', '00__foo.txt')
>>> L
[('00', 'foo.txt')]
>>> L[0] + '_'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "str") to tuple
663:デフォルトの名無しさん
08/01/02 19:07:16
>>662
ありがとう。いろいろいじってて、どうも根本的に二重リスト?みたいになってるのは理解した。
n0 = matchList[0][0]
n1 = matchList[0][1]
newName = n0 + "_" + n1
print "New:>> [%s]" % newName
こんな感じで稼働するのは確認。
でも、なんで二重になったのか、よくわからん。
python、悪くない感触なんだけど…うーん。
664:デフォルトの名無しさん
08/01/02 19:10:33
newName = chk.group(1) + "_" + chk.group(2)
665:デフォルトの名無しさん
08/01/02 19:45:40
>>663
defFnRule内に複数のグループがあるから
>>> import re
>>> re.findall("(.)(.)", "123456789")
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]
666:デフォルトの名無しさん
08/01/02 20:11:31
>>663
つまりこんな感触だといいわけだなw
re_once : あるかないかだけの正規表現モジュール(新規)
re : re_onceに加えてnまで使える正規表現モジュール(既存)
ついでにfor、rangeとかも増やした方がいいな
for_once : 0(実行しない), 1(1回だけ実行)
for_n : 0(実行しない), 1(1回だけ実行), n(n回実行)
range_0() : []を返す
range_1() : [0]を返す
range_n(n) : [0,1,2...n-1]を返す
667:デフォルトの名無しさん
08/01/02 20:11:39
>>664も書いてるように
いっぺんre.match()して結果chkを得てるのに
またre.findall()するのは如何なものか。
668:デフォルトの名無しさん
08/01/02 20:16:38
>>661
ldirとかchkとか、わざわざ変数用意するの読みづらくね?
669:デフォルトの名無しさん
08/01/02 21:06:21
その前に正規表現をコンパイルしろよ
670:デフォルトの名無しさん
08/01/02 22:21:47
>>661
どこ出身だ
なんかmicrosoftのコードを思い出すんだが
671:デフォルトの名無しさん
08/01/02 22:24:30
二重になってる理由は、つまり正規表現の処理対象にListが取れるから、でいいのかなぁ
いや、>>665見ると違うなぁ…。というか、これは俺が正規表現良く分かってないのも原因かな。
>>669
ごめん。でもファイル名の一括変更やるだけの作り捨てscriptだし、ついでにお試しでpython使っただけだから。
>>668
否定しないw
>>667
言われてみればその通りだなぁ。
要は条件に合わないファイルを無視しようとして、なんとなく書いてたらああなっただけで、他意はない。
672:デフォルトの名無しさん
08/01/02 22:25:51
>>670
色々。C++、Java、PHPとか。
でも出身という話になると…N88BasicとかVBとかってあたりかも。
とりあえず、動いたんで、もう消えまする。
ありがとうございました。>皆様
673:デフォルトの名無しさん
08/01/02 22:43:24
re.match でコンパイルされてキャッシュされるからいいじゃない
674:デフォルトの名無しさん
08/01/02 23:30:38
>>673
前から気になってたんだけど、re.matchとかre.searchってコンパイルした正規表現をキャッシュしてくれるのかな?
それってどっかに書いてある?
675:デフォルトの名無しさん
08/01/02 23:41:02
ソースに書いてある。
676:デフォルトの名無しさん
08/01/02 23:42:27
re モジュール見るとキャッシュしてるね
ただ _MAXCACHE = 100 を越えるとキャッシュを全てクリアするようになってる
677:デフォルトの名無しさん
08/01/02 23:43:01
re.py:
_cache = {}
_cache_repl = {}
_pattern_type = type(sre_compile.compile("", 0))
_MAXCACHE = 100
def _compile(*key):
# internal: compile pattern
cachekey = (type(key[0]),) + key
p = _cache.get(cachekey)
if p is not None:
return p
678:デフォルトの名無しさん
08/01/03 11:01:39
keyの計算の手間ぶん損してない?
679:デフォルトの名無しさん
08/01/03 16:19:59
>>671
4. パターンにもっと力を
URLリンク(www.python.jp)
Python reモジュールで使える正規表現演算子
URLリンク(www.kt.rim.or.jp)
>>> p = re.compile('(a(b)c)d')
>>> m = p.match('abcd')
>>> m.group(0)
'abcd'
>>> m.group(1)
'abc'
>>> m.group(2)
'b'
>>> m.groups()
('abc', 'b')
グルーピングまわりで躓いてると思う。match とか search の項目は
解説してるとこ多いけど よく使う findall はあまり解説されてない罠。
findall は厳密には正規表現にはカテゴライズされないからか…
680:679
08/01/03 16:50:03
>>671
URLリンク(kazamachi.blogspot.com)
>具体的には、ElementPathはXPathを分解するのにre.filndall()メソッドを使ってリスト
>の要素としてタプルが含まれていることを期待しているのですが、IronPython 1.0.1の
>re.findall()メソッドはリストのみを返すためにエラーとなります。
ごめんたぶんグルーピング関係ないw
681:デフォルトの名無しさん
08/01/03 17:12:25
なんという不思議レス
682:679
08/01/03 18:41:20
>>> re.findall("(.)(.)", "123456789") ## [Tuple(g(0),g(1)),…]
[('1', '2'), ('3', '4'), ('5', '6'), ('7', '8')]
>>> re.findall("((.)(.))", "123456789") ## [Tuple(g(0),g(1),g(2)),…]
[('12', '1', '2'), ('34', '3', '4'), ('56', '5', '6'), ('78', '7', '8')]
>>> re.findall("(..)", "123456789") ## [g(0),…]
['12', '34', '56', '78']
やっぱグルーピング関係あるかも orz
683:デフォルトの名無しさん
08/01/03 18:43:39
>>681
俺も勉強中なんよ(爆)
スルーしる
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5394日前に更新/217 KB
担当:undef