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

■ このスレッドは過去ログ倉庫に格納されています
2008/02/21(木) 10:24:06
Pythonが嫌いな人のためのスレッドです。

■関連スレ
Rubyについて(アンチ専用) Part002
http://pc11.2ch.net/test/read.cgi/tech/1200210768/
196デフォルトの名無しさん
垢版 |
2008/06/07(土) 03:08:10
#!/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 で終わる
ディレクトリが含まれていると中断されてしまいます。
たぶん日本語の問題だろうと思って
2008/06/07(土) 03:10:24
#!/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 嫌いになりそうです。><
2008/06/07(土) 03:16:16
後から貼った方が何か変なので直しておきます。

#!/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])
2008/06/07(土) 03:22:05
>>197
× rootroot.decode('cp932')
○ root.decode('cp932')
2008/06/07(土) 03:24:12
>>198
エラーにならん。
traceback張れ。
2008/06/07(土) 03:50:59
検索パス中に日本語が入っていて
hoge.py c:/ > fuga.csv
で保存しようとするとエラーになります。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況