2009-06-08 34 views
0

これは特に、このラインである:私はWindowsError取得(3、「システムは指定されたパスを見つけることができません」)

filesys = os.listdir(settings.CAPTCHA_ROOT) 

読み取りまたはディレクトリへの書き込みしようとしたときにそれが起こります。

Windowsでのみこれを行う理由は何ですか?

編集---------------------------------------

def __clean_captchas(self, offset=3600): 
     """docstring for __clean_captchas""" 
     filesys = os.listdir(settings.CAPTCHA_ROOT) 
     offset = datetime.datetime.now() - datetime.timedelta(seconds=offset) 
     for file in filesys: 
      d = datetime.datetime.fromtimestamp(os.stat(settings.CAPTCHA_ROOT+file).st_ctime) ... 
      if d < offset: 
       os.remove(settings.CAPTCHA_ROOT+file) 
+0

クラッシュする前にログにsettings.CAPTCHA_ROOTを印刷してみましたか?おそらく最高の洞察を提供するでしょう。 – workmad3

+0

これを試してみる必要がありますが、もし私がnoobだと私を許しても、私はログに記録する方法がわかりません。上記の – Rasiel

+0

は、エラーをcuasesする機能です.. +ファイルをCAPTCHA_ROOTに追加するとエラーになります – Rasiel

答えて

1

設定値.CAPTCHA_ROOTが正しくありません。 ポータブルパスの場合は、スラッシュとバックスラッシュを避けて、代わりにos.path.join関数を使用してください。

import os 
PROJECT_PATH = os.path.abspath(os.path.dirname(__file__)) 
CAPTHA_ROOT = os.path.join(PROJECT_PATH,'some','sub','folders') 
+0

ありがとう! 1行にジャンプして、次の行にエラーを表示します。 filesys: d = datetime.datetime.fromtimestamp(os.stat(settings.CAPTCHA_ROOT + file).st_ctime)... d <オフセット: os.remove(settings.CAPTCHA_ROOT + file) – Rasiel

+0

したがって、settings.CAPTCHA_ROOT +ファイルの代わりにos.path.join(settings.CAPTCH_ROOT、file)を使用してみてください。 設定の値を印刷すると便利です.CAPTCH_ROOT。後ろにスラッシュがありますか? –

+0

これは素晴らしいです。 os.remove()を試してみると「アクセスが拒否されました」というメッセージが表示され、権限を変更するためのウィンドウが表示されません。これを理解する必要があります..しかし、すべての助けに感謝 – Rasiel

0

ディレクトリを定数文字列として指定し、フォワードスラッシュの代わりにバックスラッシュを使用してパスを書き込む場合は、生の文字列を使用する必要があります。例:

CAPTCHA_ROOT = r'D:\captcha' 
+0

私はこれを試して、まだ動作しませんでした – Rasiel