2015-11-12 68 views
1

我想在當前目錄中查找在x分鐘數量內更改的所有文件。 x將是用戶在運行腳本時給出的命令行參數。從命令行參數轉換時間

我有問題的命令行參數轉換成秒相應的號碼:

這裏是我有

import os,sys,time 

var = int(sys.argv[1]) 
past = time.time() - var * 60 

result = [] 
dir = os.getcwd() 

for p, ds, fs in os.walk(dir): 
    for fn in fs: 
     filepath = os.path.join(p, fn)  
     status = os.stat(filepath).st_mtime 
     if os.path.getmtime(filepath) >= past: 
      result.append(filepath) 
      print result 

這似乎是工作確定,但我不明白怎麼工作時間。如果用戶輸入5分鐘,那麼我乘以5 * 60,得到300 - 然後再比較狀態並報告回來。

這是正確的嗎?

+0

代碼風格建議:查看'if __name__ =='main''成語,並在'argparse'查看命令行解析。您還可以將最終代碼發佈到codereview.stackexchange.com以獲得更好的反饋。 – jcollado

回答

1

關於I don't understand how time works,請參考相關文檔:

  • time.time():返回以秒爲單位的時間,因爲曆元作爲一個浮點數。
  • os.path.getmtime():返回值是一個給出曆元以來秒數的數字(請參閱時間模塊)。

那麼,什麼程序做的是從當前時間中。減去秒秒的金額,然後檢查是否有。那是(os.path.getmtime(filepath) >= past)後修改的文件。

0

這是正確的,time.time()會給你一個Unix時間戳,這意味着自1月1多少秒的流逝1970年
那裏你可以採取time.time() - <seconds>

但要這樣做,您需要將minutes乘以60 seconds並將其從time.time()中減去。所有這些你已經完成了。

1447328031 == 2015-11-12 12:34 從中減去5 * 60,你有五分鐘過去。

另一種方法是使用strptime,它可以讀取人類可讀的時間並將其轉換爲您可以使用的時間戳。

from time import strptime 

past_struct = strptime("2015-11-12 12:24:00", "%Y-%m-%d %H:%M:%S") 
past = mktime(past_struct) 

哪個會給你選擇做python myscript.py "2015-11-12 12:24:00"