Sé cómo enumerar todos los subdirectorios y archivos en un árbol de directorios. Pero estoy buscando la manera de listar todos los archivos recién creados, modificados y (si es posible) archivos eliminados en todos los directorios en un árbol de directorios comenzando desde el directorio raíz.Código de Python para encontrar todos los archivos recién creados, modificados y eliminados en todos los directorios/subdirectorios desde/directory
Respuesta
Usted puede encontrar todos los archivos creados o modificados en la última media hora mirando el "mtime" de cada archivo:
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))
Para generar una lista de archivos eliminados, usted también tiene que tener una lista de archivos hace 30 minutos.
Una alternativa más robusta es utilizar un sistema de control de revisión como git
. Hacer una confirmación de todos los archivos en el directorio es como hacer una instantánea. Luego, el comando
git status -s
mostrará una lista de todos los archivos que han cambiado desde la última confirmación. Esto mostrará una lista de los archivos que también se han eliminado.
Al ejecutar el código anterior, aparece el siguiente error: Traza (última llamada más reciente): Archivo "tsck.py", línea 13, ¿en? imprimir ('{p} modificado {m}'. Formato (p = ruta, m = mtime)) AttributeError: el objeto 'str' no tiene ningún atributo 'formato' – nsh
Hay tan lento, podemos encontrar otra manera, activar el sistema para registrar los archivos que se crearon recientemente, y luego analizar los archivos de registro. o mejor manera es agregar un desencadenador para la nueva entrada de registro. ¡Puede ayudar! – pylover
@nsh: 'str.format' se introdujo en Python2.6. Para una versión anterior, puede usar el formato de cadena '% s'-style. Editaré mi publicación para mostrar lo que quiero decir. – unutbu
Tome un vistazo a "hombre a encontrar"
crear un archivo temporal para comparar
ejemplo:
find/-type f -newerB tempFile
alguna parte del hombre encontrar
-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")
Lo construí para buscar en un directorio y seleccionar los archivos modificados en el último período de tiempo y luego reemplazar el texto en esos archivos. Este guión no estaba por ahí y tuve que reconstruirlo a partir de la respuesta anterior, así que pensé que alguien más podría venir a buscarlo. – Powerboy2
Por favor edite su respuesta con esta información. Además, una respuesta completa debe tener unas líneas que describan lo que hace. Lea el siguiente artículo: [¿Cómo escribo una buena respuesta?] (Http://stackoverflow.com/help/how-to-answer) – Mariano
- 1. Git ¿agregar todos los archivos modificados, eliminados y sin seguimiento?
- 2. Desescalonar todos los archivos eliminados en Git
- 3. Ver todos los archivos modificados en TFS
- 4. UnauthorizedAccessException en archivos recién creados
- 5. ¿Cómo exportar todos los archivos modificados/agregados de Git?
- 6. MongoMapper: encontrar todos los documentos creados en una fecha específica
- 7. ¿Cómo enumerar todos los archivos modificados en un volumen oculto?
- 8. CVS: enumera todos los archivos modificados entre etiquetas (o fechas)
- 9. Cómo olvidar todos los archivos eliminados con Mercurial
- 10. ¿Cómo eliminar todos los archivos eliminados del repositorio?
- 11. maravilloso (Archivo IO): encontrar todos los archivos y devolver todos los ficheros - la forma maravillosa
- 12. Lista GIT de archivos nuevos/modificados/eliminados
- 13. git: muestra todos los archivos modificados entre dos commits
- 14. Eliminar todos los archivos creados por el usuario especificado
- 15. ¿Establecer permisos predeterminados para los archivos y subdirectorios recién creados en un directorio de Linux?
- 16. Lista de todos los archivos modificados por un usuario particular en subversión
- 17. git: lista de todos los archivos modificados incluidos los de los submódulos
- 18. SVN: ¿Cómo exportar los archivos modificados con todos los mensajes de registro a una lista?
- 19. ¿Desea borrar todos los elementos en caché creados por WebView?
- 20. ¿Cómo comprometer solo archivos modificados (y no nuevos o eliminados)?
- 21. ¿Cómo habilitar el modo flyspell en emacs para todos los archivos y todos los modos principales?
- 22. ¿Configura Django para encontrar todos los doctests en todos los módulos?
- 23. Lista de todos los archivos modificados en los últimos 5 minutos, excluyendo directorios .svn
- 24. IntelliJ: Visualización de diferencias de todos los archivos modificados entre local y git commit/branch
- 25. ¿Cómo encontrar todos los archivos con cierta extensión en Android?
- 26. Git ignora los archivos eliminados
- 27. python - encontrar char en cadena - ¿puedo obtener todos los índices?
- 28. Listar los archivos en un directorio y todos los subdirectorios
- 29. Buscar todos los archivos CSV en un directorio usando Python
- 30. ¿Cómo encontrar todos los módulos secundarios en Python?
Especifique qué se acaba de crear es para usted. En la última hora? ¿El ultimo dia? ¿Desde un año? Si sabe cómo crear un árbol de directorios, ¿por qué no usa 'os.lstat' para acceder a las propiedades del archivo? – hochl
Dentro de la última hora ... – nsh
, luego use 'st = os.lstat (filepath)' y el campo 'st.st_mtime' y compruebe si la diferencia a la hora actual es inferior a 1800, eso es todo. – hochl