[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2ch.scのread.cgiへ]
Update time : 03/09 11:26 / Filesize : 351 KB / Number-of Response : 854
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonについて(アンチ専用)



1 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 10:24:06 .net]
Pythonが嫌いな人のためのスレッドです。

■関連スレ
Rubyについて(アンチ専用) Part002
pc11.2ch.net/test/read.cgi/tech/1200210768/

108 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:04:28 .net]
商業ベースに乗らないマイナースクリプト言語の問題はリファレンスがクズということだな

109 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:06:19 .net]
そうだな、言語リファレンスが存在しないRubyはクズ言語と言っていいよな。

110 名前:99 mailto:sage [2008/02/27(水) 19:36:40 .net]
パイソニスタの私がいうのもなんですが、
Pythonは屑言語の1つだと思います。
N88 BASICより使えない駄目言語。

111 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:43:37 .net]
>>110
それはない

112 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:44:22 .net]
パイソンにはLINE文もPAINT文もDATA文もないので
ミンメイが描けません!!
こんな屑言語を作った人は死ねばいいと思います!

113 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:49:27 .net]
>>112
import turtle

114 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 20:12:10 .net]
coreblog.org/ats/turtle-python-standard-module

115 名前:99 mailto:sage [2008/02/27(水) 20:46:24 .net]
Pythonにgotoがない時点で終わってると思います。
また安易にErrorキャッチに頼りやすい。
何が
try
except
だ。楽すぎて死ねるわ。
しかも最初からpdbなんていうデバッガもどきがついてるし

116 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:33:19 .net]
goto for Python
ttp://entrian.com/goto/



117 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:23:25 .net]
PLAY文が無い限りBASICには勝てない

118 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:26:54 .net]
PyAudio

The following only summarizes information from the PyAudio Web page.

PyAudio provides Python bindings for the PortAudio audio I/O library. The current version of PyAudio is V0.1.0, which is alpha quality.

Multi-platform
    Package is compilable for MS-Windows, Apple Mac OS X, Linux and cygwin.
Real-time sound acquisition
    Unknown
Support for 16KHz sampling rate and >8-bit sound
    Unknown.
Sound file processing
    Unknown.
Efficiency
    Unknown.
Pitch existence and frequency
    Unknown.
Formants and their bandwidths
    Unknown.
FFT with pre-emphasis and Hamming window
    Unknown.
Power
    Unknown.



119 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:27:49 .net]
PyMedia.py

The documentation is very sketchy.

Multi-platform
    Package is compilable for MS-Windows, Linux and cygwin.
Real-time sound acquisition
    Unknown
Support for 16KHz sampling rate and >8-bit sound
    Probably depends upon sound card.
Sound file processing
    Yes.
Efficiency
    Unknown.
Pitch existence and frequency
    Use another package for this.
Formants and their bandwidths
    Use another package for this.
FFT with pre-emphasis and Hamming window
    Use another package for this.
Power
    Use another package for this.



120 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:28:12 .net]
MCI.py (from Arik Baratz) together with ctypes.py

Multi-platform
    ctypes.py is supported by all 32-bit MS Windows (95/98/NT/2000/XP), All BSD Platforms (FreeBSD/NetBSD/OpenBSD/Apple Mac OS X), All POSIX (Linux/BSD/UNIX-like OSes), WinCE.
    MCI.py was designed to communicate with MS-Windows winmm.dll.
Real-time sound acquisition
    Unknown.
Support for 16KHz sampling rate and >8-bit sound
    Unknown.
Sound file processing
    Seems to be able to record to a file.
Efficiency
    Commands are sent as strings.
Pitch existence and frequency
    Use another package for this.
Formants and their bandwidths
    Use another package for this.
FFT with pre-emphasis and Hamming window
    Use another package for this.
Power
    Use another package for this.



121 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:28:45 .net]
ossaudiodev

Multi-platform
    Not enough. Implemented in Linux and FreeBSD. Available for a wide range of open-source and commercial Unices. But apparently not for MS-Windows.
Real-time sound acquisition
    Blocking reads, by default. Probably can set to non-blocking.
Support for 16KHz sampling rate and >8-bit sound
    Seems to depend upon the sound card.
Sound file processing
    Use another package for this.
Efficiency
    Direct I/O access.
Pitch existence and frequency
    Use another package for this.
Formants and their bandwidths
    Use another package for this.
FFT with pre-emphasis and Hamming window
    Use another package for this.
Power
    Use another package for this.



122 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:29:15 .net]
Snack

Multi-platform
    The same scripts are usable on Windows 95/98/NT/2K/XP, Linux, Macintosh, Sun Solaris, HP-UX, FreeBSD, NetBSD, and SGI IRIX.
Real-time sound acquisition
    Yes.
Support for 16KHz sampling rate and >8-bit sound
    Yes.
Sound file processing
    Yes.
Efficiency
    Inefficient - data is converted into string by the Tcl part of the package and then converted back into data by the Python part.
Pitch existence and frequency
    Yes. Each 10mSec, using the ESPS method (the ADMF method is available, too).
Formants and their bandwidths
    www.speech.kth.se/snack/man/snack2.2/tcl-man.html#sound - see the formant subcommand.
FFT with pre-emphasis and Hamming window
    See above link - the powerSpectrum subcommand.
Power
    See above link - the power subcommand.



123 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:31:57 .net]
wiki.python.org/moin/PythonInMusic

124 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:50:00 .net]
は?

125 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:53:29 .net]
PUT文がないとゲーム作れないじゃん。
馬鹿言語かよ>PYTHON

126 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:37:52 .net]
Pythonにはブレースが採用されないから
いつまでたっても糞言語。



127 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:51:38 .net]
ブレースなんてえーだらー

128 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 09:54:41 .net]
我ながら全くどうでもいい書き込みだ

129 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 15:33:58 .net]
乳thon

130 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 07:01:07 .net]
news24.2ch.net/test/read.cgi/news5plus/1204187397/

131 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:40:26 .net]
UTF-8で保存されているファイルをEUCに変換したくて次のような症状が出ています
元ファイルに含まれている「」という文字のところで止まってしまうようです
(この文字がなければ正常に変換出来ました)

最初はこちらを試しました
  ifp = open(src, 'rb')
  ofp = codecs.getwriter('euc-jp')(open(dst, 'wb+'))
  ofp.write(ifp.read().decode('utf-8'))

UnicodeEncodeError: 'euc_jp' codec can't encode character u'\u9ad9' in position
163: illegal multibyte sequence

その後こちらも試しましたが却って訳が分からなくなりました
  ifp = codecs.getreader('utf-8')(open(src, 'rb'))
  ofp = codecs.getwriter('euc-jp')(open(dst, 'wb+'))
  ofp.write(ifp.read().decode('utf-8'))

UnicodeEncodeError: 'ascii' codec can't encode character u'\u9ad9' in position 1
63: ordinal not in range(128)

どう書けば正しく変換出来るのでしょうか?

132 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 04:44:51 .net]
  ifp = codecs.getreader('utf-8')(open(src, 'rb'))
  ofp = codecs.getwriter('euc-jp')(open(dst, 'wb+'))
  ofp.write(ifp.read().encode('euc-jp'))

これもだめでした

133 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 05:02:42 .net]
>>131
あきらめろ

hoge = u''
print hoge.encode('euc-jp')


UnicodeEncodeError: 'euc_jp' codec can't encode character u'\u9ad9' in position 0: illegal multibyte sequence


134 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 07:29:25 .net]
Pythonではしごだかをどう扱うよって話だね
どういう対処法があるのかwktk

135 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 07:39:48 .net]
python固有の問題でもないと思うが、
hoge.encode('euc-jp', 'replace')でもしとけば

136 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 09:54:38 .net]
>>131
UTF-8では表せるけどEUC-JPでは表せない文字というのが山ほどあって
はしごだかはそのひとつ。完全には変換できないです。

読み書きしているファイルが実は HTML や XML だとしたら
xmlcharrefreplace エラーハンドラが便利かも。

>>> import codecs
>>> ifp = codecs.open("input.txt", "r", encoding="utf-8")
>>> ofp = codecs.open("output.txt", "w", encoding="euc-jp", errors="xmlcharrefreplace")
>>> ofp.write(ifp.read())
>>> ifp.close()
>>> ofp.close()



137 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:07:09 .net]
>>136
ビンゴです
ありがとうございました

しかし「〜」はEUCにもあるのに「~」になってしまう副作用が出ますね・・・

138 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:12:14 .net]
EUCにコードが無い訳じゃないんだよなぁ
fuga = '\xa1\xc1, \xfc\xe2, \xf9\xf5'


139 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:15:53 .net]
>>137 の2つ目の「〜」は「~」でした
読みにくくてすみません


140 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:27:28 .net]
「〜」は統一されていない
ttp://ichi.mo-blog.jp/tedious/2007/05/
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/12432


141 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:29:50 .net]
ttp://ja.wikipedia.org/wiki/%E6%B3%A2%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5

ここの「UNICODEに関する問題」を見ると泣けてくる

142 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 16:42:34 .net]
これみて自分で変換するしかないでしょうね
www.ajisai.sakura.ne.jp/~dindi/chrc/ref/wincode2.txt


143 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 20:21:19 .net]
>>142
いただいた

144 名前:136 mailto:sage [2008/03/02(日) 03:39:09 .net]
>>137
「〜」はEUC-JPとUTF-8を相互変換するときのテーブルがOS/言語ごとに違うために
変換できなかったり違うグリフで表示されたりします。

俺はよく使う文字について以下のようなコードでWindows用にそろえてます。

    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 = unicode(...).translate(unification)

136の例では ifp.read().translate(...) とすればよいと思われ。


145 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 04:15:41 .net]
ごめ、訂正。Windows用にそろえてるんじゃなくて、PythonのEUC-JP/Shift_JIS/ISO-2022-JPコデックが
受け付けるコード値に置換してる、というのが正しいです。

ついでに説明しとくと144のunification(辞書)は、キーはWindowsで日本語入力したときに使われるコード値、
各キーの値はPythonの日本語コデックが受け付けるコード値です。

この8個の文字にOS/言語ごとの変換テーブルの違いが集中しているので、
144の置換をしておくと UTF-8 → EUC-JP/Shift_JIS/ISO-2022-JP 変換時のエラーがだいぶ減るはず。

146 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 06:08:12 .net]
蟻が十匹



147 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 09:37:37 .net]
ありがとうございました

ひょっとして梶●さんですか?


148 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 14:14:00 .net]
hoge = {'a': 4, 'c': 2, 'b': 9}

for k,v in hoge.items():
  print k,v

for k,v in hoge.iteritems():
  print k,v

なにがちがうんでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 14:17:54 .net]
ここは質問スレではないんだが

150 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 14:29:07 .net]
>>> hoge = {'a': 4, 'c': 2, 'b': 9}
>>> type(hoge)
<type 'dict'>
>>> type(hoge.items())
<type 'list'>
>>> type(hoge.iteritems())
<type 'dictionary-itemiterator'>

151 名前:デフォルトの名無しさん mailto:sage [2008/03/04(火) 23:21:17 .net]
(´∀`)ノhoge = dict(enumerate(xrange(1000000)))

152 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:07:32 .net]
>>> a = {'hoge': 'fuga', 'hige': 'hage'}
>>> a
{'hige': 'hage', 'hoge': 'fuga'}
>>> b = str(a)
>>> b
"{'hige': 'hage', 'hoge': 'fuga'}"

ここで文字列 b から hash を復元して
c (= {'hoge': 'fuga', 'hige': 'hage'}) を作りたいのですが
どのように書けばよいでしょうか?

153 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:11:56 .net]
>>> eval(b)
{'hige': 'hage', 'hoge': 'fuga'}

154 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:17:50 .net]
Pythonのアンチスレは質問スレになる不思議

>>152
pickle も調べてみる価値がある、かもしれない
オブジェクトをファイルに保存/復元できるライブラリだよ

155 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 21:40:03 .net]
>>> a = {'hoge': 'fuga', 'hige': 'hage'}
>>> import pickle
>>> pickle.dumps(a)
"(dp0\nS'hige'\np1\nS'hage'\np2\nsS'hoge'\np3\nS'fuga'\np4\ns."
>>> pickle.loads("(dp0\nS'hige'\np1\nS'hage'\np2\nsS'hoge'\np3\nS'fuga'\np4\ns.")
{'hige': 'hage', 'hoge': 'fuga'}

156 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:39:38 .net]
そのまま書き出すとこんな感じ?
(dp0
S'hige'
p1
S'hage'
p2
sS'hoge'
p3
S'fuga'
p4
s.
読みやすいといえば読みやすいし
JSONやYAMLに比べると微妙なんだけど
このフォーマットって何か由来あるんですか



157 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 02:57:25 .net]
pickleは人間が編集するようなものではないでしょ
フォーマットは pickle.py, pickletools.py あたり?

158 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 03:47:04 .net]
FORTHっぽいね

159 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 04:31:54 .net]
>>153
python はこれができるからいいんだよね、
昔 perl でこれと同じ関数を2週間ぐらいかけて作ろうとしてた時に、(リファレンスやら再帰やら使って・・・)
python は両方builtin でできると知って、一気にperl 捨てたw

160 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 14:50:49 .net]
>>> a = {'hoge': 'fuga', 'hige': 'hage'}
>>> '%(hoge)s' % a
'fuga'

とか、

>>> b = {'moge': a}
>>> '%(moge)s' % b
"{'hige': 'hage', 'hoge': 'fuga'}"

とかは便利なのは分かったんですが、

>>> '%(moge[hoge])s' % b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'moge[hoge]'
>>> "%(moge['hoge'])s" % b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: "moge['hoge']"

ネストされたhashへのアクセスは出来ないんでしょうか?

161 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:42:01 .net]
出来ない

162 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 15:44:51 .net]
>>160
代わりにこの辺のTemplate使ってる
ttp://pythonpaste.org/tempita/


163 名前:デフォルトの名無しさん mailto:sage [2008/03/08(土) 16:19:36 .net]
>>161-162
ありがとうございました
おかげでなんとかなりそうです


164 名前:デフォルトの名無しさん [2008/03/15(土) 00:48:44 .net]
ほのぼのとしたアンチスレだな。

165 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 00:53:23 .net]
ともすると本スレのほうが殺伐としていて困る

166 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:39:38 .net]
pythonはとっとと、ソート演算子のオーバーライドをサポートしてくれ。



167 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 13:56:08 .net]
演算子?

168 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 14:53:55 .net]
組み込みクラスの__cmp__()を変更したいとか?
組み込みクラスはオーバーライドできない実装を受け入れて
サブクラス化するなりして問題解決した方が精神衛生上よい。

169 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:10:49 .net]
>>166
引数でラムダ式渡すのでは困る理由は何?

170 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 02:08:27 .net]
c++ やcommon lispに比べたらモジュールがいろいろ足りない
統計とか数式処理とか
今のままでも便利なんだけど歴史が浅いからね

171 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 06:59:06 .net]
>>170
scipyとか

172 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:44:01 .net]
C++は老害言語。

173 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 20:40:07 .net]
老害か。


N88Basicのことかな

174 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 04:21:42 .net]
> c++ やcommon lispに比べたらモジュールがいろいろ足りない
スクリプト言語では Perl が一番揃ってそうだな
次が Python かな

175 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:03:46 .net]
>>174
>スクリプト言語では Perl が一番揃ってそうだな

数はあるが、玉石混淆で使えるモジュールを選ぶのが大変なのがPerl。

176 名前:デフォルトの名無しさん [2008/03/29(土) 15:27:00 .net]
ほしゅ



177 名前:デフォルトの名無しさん [2008/03/30(日) 12:24:18 .net]
age

178 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 07:40:47 .net]
おまいら、py3kについてはどう思うよ?
俺はclassic style classが使えない時点で見放したが。

179 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 08:36:31 .net]
どんな書き方ができなくなって嫌だったの?

180 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 11:43:45 .net]
単純な書き換えだったら、2to3ツールって言うので自動で変換してもらえるはず

181 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 11:47:31 .net]
互換性の無いバージョンだと前からアナウンスしてるんだから、
不要なものはどんどん廃してもらわんと逆に困る。

182 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 12:11:52 .net]
後にPerl6と揶揄されるバージョンであった

183 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:15:20 .net]
Perl6と違ってちゃんと予定日が決まってるようだが。

184 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:35:13 .net]
つ4/1

185 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:43:17 .net]
そういやParrotって四月馬鹿が発端なんだよな。

186 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:02:26 .net]
AprilFoolを字面通り四月馬鹿と言うのは誤訳?



187 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 02:48:03 .net]
伝統

188 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 07:17:14 .net]
intとlongの処遇で、現行バージョンと3kの両方で動くようなソースは事実上書けない。
new style classと違って、こちらは突然のdeprecateになる。

189 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:29:03 .net]
たしかu""やexcept文の,とかも3kでは駄目だったよね

190 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 11:48:49 .net]
Cで書かれたエクステンションはもっとひどい影響を受けるよ。

191 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 23:43:05 .net]
互換性切るって言ってるんだから別ソースにしようぜ

192 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 22:22:54 .net]
Python支持者の隠れ家スレってこちらですか。

193 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 02:18:08 .net]
そうなんですのよ奥さん
なんかのらくらと、まったり批判及びフレンドリーな雑談で収まってます

194 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:11:00 .net]
表立ってPython批判する奴って少ないんだよなあ。
批判する点も、「ああ、そこ欠点ってわかってますから」というところ
ばかりだし。


Guidoのやり方が上手なんだろうね。

195 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 03:44:53 .net]
自分の読みたい本を紹介しろということをクエストっていうのか?



196 名前:デフォルトの名無しさん [2008/06/07(土) 03:08:10 .net]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os, stat
import time

def main(root):
  dirsize = {}
  for dirpath, dirnames, filenames in os.walk(root, topdown=False):
    dirsize[dirpath] = 0
    for file in filenames:
      tgt = os.path.join(dirpath, file)
      siz = os.stat(tgt)[stat.ST_SIZE]
      dirsize[dirpath] += siz
    for dir in dirnames:
      tgt = os.path.join(dirpath, dir)
      siz = dirsize[tgt]
      dirsize[dirpath] += siz
      print '"dir","%s",%d' % (tgt, siz)

  print '"total","%s",%d' % (root, dirsize[root])

if __name__ == '__main__':
  if len(sys.argv) >= 2:
    main(sys.argv[1])

これでちゃんと動いていたような気がしたのですが
検索パス中に ▽●▲表 みたいな \5C で終わる
ディレクトリが含まれていると中断されてしまいます。
たぶん日本語の問題だろうと思って



197 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:10:24 .net]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os, stat
import time

def main(root):
  dirsize = {}
  for dirpath, dirnames, filenames in os.walk(rootroot.decode('cp932'), topdown=False):
    dirsize[dirpath] = 0
    for file in filenames:
      tgt = os.path.join(dirpath, file)
      siz = os.stat(tgt)[stat.ST_SIZE]
      dirsize[dirpath] += siz
    for dir in dirnames:
      tgt = os.path.join(dirpath, dir)
      siz = dirsize[tgt]
      dirsize[dirpath] += siz
      print '"dir","%s",%d' % (tgt, siz)

  print '"total","%s",%d' % (root, dirsize[root])

if __name__ == '__main__':
  if len(sys.argv) >= 2:
    main(sys.argv[1])

のように直したら中断はされなくなったのですが、
hoge.py . > fuga.csv
で保存しようとするとエラーになります。
(上のバージョンはリダイレクトは出来ていました。)
Python の日本語の扱いが良く分かりません。
Python 嫌いになりそうです。><

198 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:16:16 .net]
後から貼った方が何か変なので直しておきます。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys, os, stat
import time

def main(root):
dirsize = {}
for dirpath, dirnames, filenames in os.walk(root.decode('cp932'), topdown=False):
dirsize[dirpath] = 0
for file in filenames:
tgt = os.path.join(dirpath, file)
siz = os.stat(tgt)[stat.ST_SIZE]
dirsize[dirpath] += siz
for dir in dirnames:
tgt = os.path.join(dirpath, dir)
siz = dirsize[tgt]
dirsize[dirpath] += siz
print u'"dir","%s",%d' % (tgt, siz)

print u'"total","%s",%d' % (root, dirsize[root])

if __name__ == '__main__':
if len(sys.argv) >= 2:
main(sys.argv[1])

199 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:22:05 .net]
>>197
× rootroot.decode('cp932')
○ root.decode('cp932')

200 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:24:12 .net]
>>198
エラーにならん。
traceback張れ。

201 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:50:59 .net]
検索パス中に日本語が入っていて
hoge.py c:/ > fuga.csv
で保存しようとするとエラーになります。


202 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 03:53:38 .net]
これとか?

python.rdy.jp/wiki.cgi?page=%C6%FC%CB%DC%B8%EC

site-packageディレクトリにsitecustomize.pyを設置して、文字コードを指定する。

sys.setdefaultencoding('cp932')


203 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 05:34:50 .net]
>>198
KeyErrorで止まるのならこれで動くんじゃないかと
decode()の呼び出しで無駄が多いから調整してね

print '"total","%s",%d' % (root.decode('cp932'), dirsize[root.decode('cp932')])

ていうかここアンチスレか

204 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 05:54:35 .net]
>>201
だからエラーの内容貼れって

205 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 07:54:49 .net]
encodeしてないだけだろ

206 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 12:21:50 .net]
>>196-201
なにこの大富豪的プログラミングw
メモリ喰いまくってるだけで全然終わらないしw




207 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:07:50 .net]
よくわからんが、os.walkをやりたいだけか?
docs.python.org/lib/os-file-dir.html

208 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 13:23:12 .net]
>>197
> Python の日本語の扱いが良く分かりません。 
> Python 嫌いになりそうです。>< 

標準出力がリダイレクトされていない場合、Python の print 文は
与えられた Unicode 文字列を自動的に cp932 等の実行環境固有のエンコーディングで
エンコードして印字するようになっている。これは Python インタプリタを
対話的に利用するときには便利な仕組みだ。「実行環境固有のエンコーディング」が
具体的に何であるかは sys.stdout.encoding を見れば分かる。

一方、標準出力がファイル等にリダイレクトされている場合、
どのエンコーディングで文字列をエンコードすべきかを決めるのは難しい問題だ。
cp932 がいいかもしれないし用途によっては utf-8 や iso-8859-1 の方がいいかも知れない。
つまり、Python の立場からは標準出力をリダイレクトする場合のエンコーディングを
これと決めることができない。このことは、標準出力をリダイレクトしているときには
sys.stdout.encoding が None になることから分かる。

この場合、print 文は sys.stdout.encoding の代わりに sys.getdefaultencoding() が返す
エンコーディングでエンコードして出力する。このエンコーディングは Python の出荷時の
設定では ascii になっているので、日本語等を含む Unicode 文字列を print しようとすると
実行時エラーになる。

結局のところ、標準出力をファイルにリダイレクトできるようにプログラムを書くには
sys.stdout.encoding による自動エンコードに頼らないようにしなければいけないということだ。
個人的には、Unicode 文字列をファイルなり標準出力なりに書き出すときは
明示的にエンコードするように心がけるべきだと考えている。暗黙の自動エンコードに
頼るとロクなことがない。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<351KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef