So come elencare tutte le sottodirectory e i file in una struttura di directory. Ma sto cercando il modo di elencare tutti i file appena creati, i file modificati e (se possibile) cancellati in tutte le directory in un albero di directory a partire dalla directory root.Codice Python per trovare tutti i file appena creati, modificati ed eliminati in tutte le directory/sottodirectory a partire dalla directory/
risposta
Si potrebbe trovare tutti i file creati o modificati negli ultimi mezz'ora, cercando al "mtime" di ogni file:
import os
import datetime as dt
now = dt.datetime.now()
ago = now-dt.timedelta(minutes=30)
for root, dirs,files in os.walk('.'):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print('%s modified %s'%(path, mtime))
per generare un elenco di file cancellati, devi anche avere a avere un elenco di file 30 minuti fa.
Una più robusta alternativa è quella di utilizzare un sistema di controllo di revisione come git
. Fare un commit di tutti i file nella directory è come fare uno snapshot. Quindi il comando
git status -s
elencherebbe tutti i file che sono stati modificati dall'ultimo commit. Questo elencherà anche i file che sono stati cancellati.
L'esecuzione del codice sopra riportato dà il seguente errore: Traceback (ultima chiamata ultima): File "tsck.py", riga 13, in? print ('{p} modificato {m}'. Format (p = path, m = mtime)) AttributeError: l'oggetto 'str' non ha attributo 'format' – nsh
C'è così lento, possiamo trovare un altro modo, attivare il sistema per registrare i file appena creati e quindi analizzare i file di registro. o il modo migliore è quello di aggiungere un trigger per la nuova voce di registro. Aiuto! – pylover
@nsh: 'str.format' è stato introdotto in Python2.6. Per la versione precedente, è possibile utilizzare la formattazione della stringa in stile '% s'. Modificherò il mio post per mostrare cosa intendo. – unutbu
Date un'occhiata a "uomo trova"
creare un file temporaneo per confrontare
esempio:
find/-type f -newerB tempFile
qualche parte dell'uomo trovare
-newerXY reference
Compares the timestamp of the current file with reference. The reference argument is normally the name of a file (and one
of its timestamps is used for the comparison) but it may also be a string describing an absolute time. X and Y are place‐
holders for other letters, and these letters select which time belonging to how reference is used for the comparison.
a The access time of the file reference
B The birth time of the file reference
c The inode status change time of reference
m The modification time of the file reference
t reference is interpreted directly as a time
from tempfile import mkstemp
import shutil
import os
import datetime as dt
import sys
# gets the time frame we are going to look back and builds a placeholder list to passover the info from our mtime to slay
now=dt.datetime.now()
ago=now-dt.timedelta(minutes=480)
passover=[]
# the '.' is the directory we want to look in leave it to '.' if you want to search the directory the file currently resides in
for root,dirs,files in os.walk('.'):
for fname in files:
path=os.path.join(root,fname)
st=os.stat(path)
mtime=dt.datetime.fromtimestamp(st.st_mtime)
if mtime>ago:
passover.append(path)
def slay(file_path, pattern, subst):
#Create temp file
fh, abs_path = mkstemp()
with open(abs_path,'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
new_file.write(line.replace(pattern, subst))
old_file.close()
#Remove original file
os.remove(file_path)
#Move new file
try:
shutil.move(abs_path, file_path)
except WindowsError:
pass
#we pass the passover list to the slay command in a for loop in order to do muiltple replaces in those files.
for i in passover:
slay(i,"String1","String2")
L'ho creato per cercare in una directory e selezionare i file modificati nell'ultimo lasso di tempo e quindi sostituire il testo in quei file. Questo copione non era in agguato e dovevo metterlo insieme dalla risposta sopra, quindi ho pensato che qualcun altro potesse venire a cercarlo. – Powerboy2
Modifica la tua risposta con queste informazioni. Inoltre, una risposta completa dovrebbe contenere alcune righe che descrivono ciò che fa. Si prega di leggere il seguente articolo: [Come scrivere una buona risposta?] (Http://stackoverflow.com/help/how-to-answer) – Mariano
- 1. Python: lettura di tutti i file in tutte le directory
- 2. Non autorizzatoAccessException sui file appena creati
- 3. git: elenca solo i file modificati per tutte le armature
- 4. Impostazione delle autorizzazioni predefinite per i file e le sottodirectory appena creati in una directory in Linux?
- 5. Come eliminare tutti i file che sono stati recentemente creati in una directory in linux?
- 6. Trova tutti i file CSV in una directory usando Python
- 7. Modifica della directory in cui vengono creati i file .pyc
- 8. scorrere tutti i file Word in Directory
- 9. Come modificare tutte le occorrenze di una parola in tutti i file in una directory
- 10. Rilevamento file appena creati se Java in tempo reale
- 11. Elenca tutti i file modificati negli ultimi 5 minuti, escluse le directory .svn
- 12. Egit mostra tutti i file come modificati
- 13. Come elencare tutti i file modificati in un volume shadow?
- 14. codice PHP per attraversare un file HTML per trovare tutte le immagini in là?
- 15. elenco di tutti i file dalla directory FTP in linea a un controllo ListView C#
- 16. trovare ed eliminare i file txt in bash
- 17. Configura tutti i file modificati su Github in Netbeans
- 18. Come posso distinguere un file dalla directory in Python?
- 19. Come aprire tutti i file modificati con git?
- 20. Eliminazione di tutti i file in una directory con Python
- 21. esportare i file modificati usando tnn tortoise in un'altra directory
- 22. Come trovare tutti i file nella directory corrente con nomi di file che corrispondono a un determinato pattern in python?
- 23. lista PHP tutti i file nella directory
- 24. JQuery: Inserimento in elementi appena creati
- 25. Rimuovere tutti i file in una directory
- 26. Rimuovere tutti i file eliminati, nel prossimo commit con Mercurial
- 27. L'autorizzazione non viene mantenuta per i file appena creati mentre si utilizza vagabondo
- 28. Come rimuovere tutti i file dalla directory senza rimuovere la directory in Node.js
- 29. Linux tutti i file della cartella modificati ieri
- 30. Elimina tutti i file in una directory
Si prega di specificare ciò che appena creato è per voi. Entro l'ultima ora? L'ultimo giorno? Da un anno? Se sai come costruire un albero di directory, perché non usi semplicemente 'os.lstat' per accedere alle proprietà del file? – hochl
Entro l'ultima ora .... – nsh
quindi utilizzare 'st = os.lstat (percorso file)' e il campo 'st.st_mtime' e verificare se la differenza rispetto all'ora corrente è inferiore a 1800 - il gioco è fatto. – hochl