2013-07-02 21 views
1

我有一個python腳本,我想每5分鐘運行一次以檢查服務器上的新文件。我知道我可以用cron-job來做到這一點。但在我的python腳本的目錄中,我有一個名爲'logs'的文件夾。有沒有一種方法可以輸出我的python腳本返回的每一次(每次至少返回20到30行)到文本文件中,每5分鐘到達日誌文件夾。我希望能夠通過搜索文件來查看每次運行的輸出。所以根據我的計算,我應該每天獲得大約288個日誌文件。使用cron-job將python輸出到文本文件

另一個疑問是,我的腳本顯示一些活的東西(如下載進度條),那麼會有一個問題呢?

謝謝!

回答

2

如果你想讓你的標準輸出轉到文件,你可以像this那樣做。

import sys 
sys.stdout = open('file.txt', 'w') 

當你的Python腳本打印出的東西就會去file.txt,而不是標準輸出的方式。

這是複製粘貼示例。

import sys 
sys.stdout = open("file.txt", 'w') 

for n in xrange(100): 
    print n 

#I bet you can guess what you're going to see in file.txt 

這將在一個文本文件打印0-99名爲file.txt什麼都不會顯示在控制檯上。

+0

所以我只需要使用第二行一次?以及在哪裏,在開始還是結束?它會打印腳本打印的所有行嗎?謝謝 –

+0

在打印任何東西之前,先將第二行放在最前面。 – John

2

如果你不想修改腳本本身,您可以將輸出重定向到一個時間戳的文件:

./your/script.py > "your-log-file-"`date +"%Y-%m-%d-%H-%M-%S"`".log" 

這會格式的輸出文件:

your-log-file-2013-07-01-20-22-45.log

+0

我可以在cron-job上使用它嗎?我知道你可以把'>'指定日誌的位置,但是我可以使用txt文檔中使用的那些通配符嗎?感謝 –

+0

>和>>(後者是append)是將命令的標準輸出重定向到文件的標準方式。 Crontab簡單地生成一個新的shell並執行指定的命令,因此如果該命令重定向stdout或stderr,它將被執行,就好像它是一個普通的shell一樣。 [示例在這裏。](http://stackoverflow.com/a/24957849/2568279) –

相關問題