0

私はsubprocessこのようなコードを持っています:

final_list = subprocess.Popen(['ls', destination], stdout=subprocess.PIPE).communicate()[0].splitlines()

これにより、ディレクトリがリストとして返されます。

['genelaytics', '__init__.py', '__init__.pyc', 'settings.py', 'wsgi.pyc']

次に、各ファイルのサイズを計算し、サイズやその他の属性とともに、ファイルを個々の要素としてデータベースに挿入します。forループを使ってみました:

for list in final_list:     
        st = os.stat(list)
        size = st.st_size 
        b = File(file_name=list, source=test_url, start_date=start_date, end_date=end_date, size=size)
        b.save()

上記のコードを実行しているときにこのエラーが発生します:

Traceback:
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/decorators.py" in _wrapped_view
  20.                 return view_func(request, *args, **kwargs)
File "/home/zurelsoft/workspace/genelaytics/fileupload/views.py" in sync
  94.         st = os.stat(list)

Exception Type: OSError at /sync/
Exception Value: [Errno 2] No such file or directory: '__init__.py'
4

2 に答える 2

1

'__init__.py'フルパス(つまり)ではなく、'/module/__init__.py'ファイル名(つまり)だけを渡しますos.stat()

私はそのようなことをすることを提案します:

>>> folder = '/Python27/Doc'
>>> files = os.listdir(folder)
>>> for filename in files:
    fullname = os.path.join(folder, filename)
    print fullname, os.path.getsize(fullname)


/Python27/Doc\python27.chm 5754439
于 2013-01-04T06:40:02.910 に答える
0

統計を作成する前に、ファイル名の前にベースディレクトリの場所(os.dirname(__file__)...(おそらく))を追加する必要があります...

于 2013-01-04T06:36:51.867 に答える