Cancellare in automatico file più vecchi di x giorni

di il
5 risposte

Cancellare in automatico file più vecchi di x giorni

Ho scritto questo programma con lo scopo di cancellare in automatico tutti i file con data di ultima modifica più vecchi di giorni giorni collocati nella cartella file_dir Cosa ho sbagliato?

import os
from datetime import datetime, timedelta

file_dir = "/home/pi/" #location 
giorni = 2 #n max di giorni

giorni_pass = datetime.now() - timedelta(giorni)

for root, dirs, files in os.walk(file_dir):
    for file in files:
        filetime = datetime.fromtimestamp(os.path.getctime(file))
        if filetime > giorni_pass:
            os.remove(file)

5 Risposte

  • Re: Cancellare in automatico file più vecchi di x giorni

    CIao, che comportamento errato osservi? Ti salta fuori un errore oppure semplicemente non succede niente?

    Nota che un errore potrebbe essere dovuto al fatto che "filenames" contiene una lista di nomi di file il cui path è relativo a "file_dir", quindi per fare operazioni su quei file dovresti prima ottenere il path assoluto (o relativo, rispetto alla cartella in cui ti trovi quando esegui il programma in python)
  • Re: Cancellare in automatico file più vecchi di x giorni

    Mi viene un errore:
    
    Traceback (most recent call last):
      File "/home/pi/Programmi/auto_elim/datamod.py", line 14, in <module>
        filetime = datetime.fromtimestamp(os.path.getctime(file))
      File "/usr/lib/python3.4/genericpath.py", line 65, in getctime
        return os.stat(filename).st_ctime
    FileNotFoundError: [Errno 2] No such file or directory: 'RedSelector.png'
    
    Il file RedSelector.png è uno dei tanti file di prova dentro la location file_dir più vecchio di 2 giorni.
  • Re: Cancellare in automatico file più vecchi di x giorni

    Allora il problema è quello che dicevo nel post precedente.
    Per poterlo risolvere, devi utilizzare un path completo, che puoi ottenere tramite "os.path.join(file_dir, file)".
    Ad esempio:
    
    for file in files:
        path = os.path.join(file_dir, file)
        filetime = datetime.fromtimestamp(os.path.getctime(path))
        if filetime > giorni_pass:
            os.remove(path)
    
  • Re: Cancellare in automatico file più vecchi di x giorni

    Della ha scritto:


    Allora il problema è quello che dicevo nel post precedente.
    Per poterlo risolvere, devi utilizzare un path completo, che puoi ottenere tramite "os.path.join(file_dir, file)".
    Ad esempio:
    
    for file in files:
        path = os.path.join(file_dir, file)
        filetime = datetime.fromtimestamp(os.path.getctime(path))
        if filetime > giorni_pass:
            os.remove(path)
    
    Ho risolto così. Grazie Mille.
    Avevo fatto un errore con l'operatore logico in
    if filetime > giorni_pass:
    , dove va messo < perché sennò cancella i più recenti rispetto a quanto impostato.
  • Re: Cancellare in automatico file più vecchi di x giorni

    Giusto, non ci avevo fatto caso
Devi accedere o registrarti per scrivere nel forum
5 risposte