2015-11-13 44 views
0

我有一個過程,可以掃描磁帶庫並查找已過期的介質,因此可以在將磁帶發送到非現場保管庫之前將其刪除並重新使用。 (我們有一些7天的策略,絕不會使其不在現場)。這個過程大約需要20分鐘才能運行,所以我不希望它在加載/刷新頁面時按需運行。相反,我設置了一個django-cron作業(我知道我可以在Linux cron中完成這項工作,但希望項目儘可能獨立)來運行掃描,並在/ tmp中創建一個文件。我已經驗證了這一點 - 從今天上午執行的文件存在於/ tmp中。我遇到的問題是,現在我想在我的網頁上顯示這些過期(暫存)介質的列表,但腳本說它找不到該文件。當創建的文件,我用的是絕對路徑「/tmp/scratch.2015-11-13.out」(例如),但這裏是我在瀏覽器中出現錯誤:Django:沒有這樣的文件或目錄

IOError at/
[Errno 2] No such file or directory: '/tmp/corpscratch.2015-11-13.out' 

我的假設是這是一個「網絡根」問題,但我無法弄清楚。我嘗試將該文件複製到在django中配置的/ static /和/ media /目錄中,甚至在django根目錄和項目根目錄中,但似乎沒有任何效果。當它說'找不到/ tmp/file,它真的在哪裏看?

def sample(): 
    """ Just testing """ 
    today = datetime.date.today() #format 2015-11-31 
    inputfile = "/tmp/corpscratch.%s.out" % str(today) 
    with open(inputfile) as fh:   # This is the line reporting the error 
     lines = [line.strip('\n') for line in fh] 
    print(lines) 

print語句用於在外殼的測試(工作,我可以補充),但瀏覽器提供了一個錯誤。 和文件確實存在:

$ ls /tmp/corpscratch.2015-11-13.out 
/tmp/corpscratch.2015-11-13.out 

感謝。

編輯:被誤認爲是不能在python shell中工作的。正在考慮以前的問題。

回答

0

我結束了在其他地方找到這樣的:

today = datetime.date.today() #format 2015-11-31 
inputfilename = "tmp/corpscratch.%s.out" % str(today) 
inputfile = os.path.join(settings.PROJECT_ROOT, inputfilename) 

,用含有如下settings.py:

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__)) 

完全解決了我的問題。

0

使用這個代替:

today = datetime.datetime.today().date() 
inputfile = "/tmp/corpscratch.%s.out" % str(today) 

或者:

today = datetime.datetime.today().strftime('%Y-%m-%d') 
inputfile = "/tmp/corpscratch.%s.out" % today # No need to use str() 

看到區別:

>>> str(datetime.datetime.today().date()) 
'2015-11-13' 

>>> str(datetime.datetime.today()) 
'2015-11-13 15:56:19.578569' 
+0

這不能解決我的問題。我使用的是datetime.date,而不是datetime.datetime,所以生成的字符串匹配。 (2015年11月13日)。 –

相關問題