Aquí hay una secuencia de comandos de Python3 que hace VMS como el versionado automático de archivos usando una marca de tiempo añadida al nombre del archivo original cuando se guarda.
Puse un montón de comentarios en el script y ejecuté media docena de dichos scripts en mi máquina ubuntu con solo los directorios diferentes en cada versión diferente del script para que esté versionando simultáneamente varios directorios. No hay pena real para el rendimiento de las máquinas.
! / usr / bin / env python3
print ("VERSIÓN DE ARCHIVOS DE PROYECTO INICIADA") print ("version_creation.py") # coloca todo este código en el script de este nombre print ("ejecuta como ... 'python3 version_creation.py' desde la línea de comandos") print ("ctrl ' c 'para detener ") print (" ") print (" Para ejecutar el programa en segundo plano, escriba debajo de la línea de comando y luego cierre la ventana. ") print (" nohup python3 version_creation.py ") print (" .... to detenga el proceso vaya al menú / administración / monitor del sistema ... y elimine python3 ") print (" ") print (" Siempre guarde los archivos en el directorio 'ProjectFiles' y los archivos de versión ") print (" también se crearán en ese directorio . ") print (" ") print (" ") print (" ") print (" ")
import shutil import os tiempo de importación
--- establece el intervalo de tiempo para buscar nuevos archivos (en segundos) a continuación
- ¡este intervalo debe ser menor que el intervalo que aparecen los archivos nuevos!
t = 10
--- establece el directorio de origen (dr1) y el directorio de destino (dr2)
dr1 = "/ ruta / a / directorio_origen"
dr2 = "/ ruta / a / target_directory"
import glob import os
dr1 = "/ home / michael / ProjectFiles" # ambos originales y versiones se guardarán en este directorio
dr2 = "/ home / michael / ProjectFileVersions"
mientras cierto:
if os.listdir(dr1) == []:
print ("Vacío")
n = 100
else:
list_of_files = glob.glob(dr1+'/*') # * means all if need specific format then *.csv
latest_file_path = max(list_of_files, key=os.path.getctime)
print ("1 Latest_file_path =", latest_file_path)
originalname = latest_file_path.split('/')[-1]
print ("2 originalname =", originalname)
filecreation = (os.path.getmtime(latest_file_path))
print ("filecreation =", filecreation)
now = time.time()
fivesec_ago = now - 5 # Number of seconds
print ("fivesec_ago =", fivesec_ago)
timedif = fivesec_ago - filecreation #time between file creation
print ("timedif =", timedif)
if timedif <= 5: #if file created less than 5 seconds ago
nameroot = originalname.split(".")[-0]
print ("3 nameroot= ", nameroot)
extension = os.path.splitext(originalname)[1][1:]
print ("4 extension = ", extension)
curdatetime = time.strftime('%Y%m%d-%H%M%S')
print ("5 curdatetime = ", curdatetime)
newassembledname = (nameroot + "_" + curdatetime + "." + extension)
print ("6 newassembledname = ", newassembledname)
source = dr1+"/"+originalname
print ("7 source = ", source)
target = dr1+"/"+newassembledname
print ("8 target = ", target)
shutil.copy(source, target)
time.sleep(t)
compartir
el siguiente se colocó antes y funciona, pero me gusta el script de python anterior mucho mejor ... (he estado usando python durante aproximadamente 3 horas)
#!/usr/bin/env python3
print ("PROJECT FILES VERSIONING STARTED")
print ("projectfileversioning.py")
print ("run as.. 'python3 projectfileversioning.py' from command line")
print ("ctrl 'c' to stop")
print (" ")
print ("To run program in background type below to command line and then close the window. ")
print ("nohup python3 projectfileversioning.py")
print ("....to stop process go menu/administration/system monitor... and kill python")
print (" ")
print ("Always save files to the 'ProjectFiles' directory and the file ")
print (" will be redirected to the ProjectFileVersions where")
print (" time stamped versions will also be created.")
print (" ")
print ("If you like you may then copy/move the versioned and original file from 'ProjectFileVersions' to ")
print ("any other directory you like.")
import shutil
import os
import time
#--- set the time interval to check for new files (in seconds) below
#- this interval should be smaller than the interval new files appear!
t = 10
#--- set the source directory (dr1) and target directory (dr2)
#dr1 = "/path/to/source_directory"
#dr2 = "/path/to/target_directory"
import glob
import os
dr1 = "/home/michael/ProjectFiles"
dr2 = "/home/michael/ProjectFileVersions"
while True:
if os.listdir(dr1) == []:
n = 100
else:
list_of_files = glob.glob(dr1+'/*') # * means all if need specific format then *.csv
latest_file_path = max(list_of_files, key=os.path.getctime)
print ("1 Latest_file_path = ", latest_file_path)
originalname = latest_file_path.split('/')[-1]
print ("2 originalname = ", originalname)
nameroot = originalname.split(".")[-0]
print ("3 nameroot= ", nameroot)
extension = os.path.splitext(originalname)[1][1:]
print ("4 extension = ", extension)
curdatetime = time.strftime('%Y%m%d-%H%M%S')
print ("5 curdatetime = ", curdatetime)
newassembledname = (nameroot + "_" + curdatetime + "." + extension)
print ("6 newassembledname = ", newassembledname)
source = dr1+"/"+originalname
print ("7 source = ", source)
target = dr2+"/"+originalname
print ("8 target = ", target)
shutil.copy(source, target)
source = dr1+"/"+originalname
print ("9 source = ", source)
target = dr2+"/"+newassembledname
print ("10 target = ", target)
shutil.move(source, target)
time.sleep(t)
#share