2010-07-27 6 views
8

Also im Moment versuche ich zu löschen Dateien im Verzeichnis, die 1 Minute alt sind, werde ich diesen Wert ändern, sobald ich das Skript arbeiten.
Der folgende Code gibt den Fehler: AttributeError: 'str' object has no attribute 'mtime'Python: Löschen von Dateien eines bestimmten Alters

import time 
import os 
#from path import path 

seven_days_ago = time.time() - 60 
folder = '/home/rv/Desktop/test' 

for somefile in os.listdir(folder): 
    if int(somefile.mtime) < seven_days_ago: 
     somefile.remove() 

Antwort

11
import time 
import os 

one_minute_ago = time.time() - 60 
folder = '/home/rv/Desktop/test' 
os.chdir(folder) 
for somefile in os.listdir('.'): 
    st=os.stat(somefile) 
    mtime=st.st_mtime 
    if mtime < one_minute_ago: 
     print('remove %s'%somefile) 
     # os.unlink(somefile) # uncomment only if you are sure 
+6

'os.path.getmtime (somefile)' ist kürzer und arbeitet auch anstelle von 'os.stat (somefile) .st_mtime'. –

6

Das ist, weil somefile ein String ist, ein relativer Dateiname. Sie müssen den vollständigen Pfad (dh den absoluten Pfad) der Datei erstellen, den Sie mit der Funktion os.path.join erstellen können, und den Wert an die os.stat übergeben. Der Rückgabewert hat das Attribut st_mtime, das Ihren gewünschten Wert enthält Wert als ganze Zahl.

Verwandte Themen