Ecco uno script Python3 che fa VMS come il versioning automatico dei file usando un timestamp aggiunto al nome del file originale quando salvato.
Ho inserito un sacco di commenti nello script ed eseguito una mezza dozzina di tali script sulla mia macchina Ubuntu con solo le directory che sono diverse in ogni diversa versione dello script in modo che io simultaneamente verifichi più directory. Nessuna vera penalità per le prestazioni delle macchine.
! / usr / bin / env python3
print ("VERSIONE DEI FILE DI PROGETTO INIZIATA") print ("version_creation.py") # inserire tutto questo codice nello script con questo nome print ("esegui come .. 'python3 version_creation.py' dalla riga di comando") print ("ctrl ' c 'per interrompere ") print (" ") print (" Per eseguire il programma in background in basso alla riga di comando e quindi chiudere la finestra. ") print (" nohup python3 version_creation.py ") print (" .... to ferma processo vai menu / amministrazione / monitor di sistema ... e uccidi python3 ") print (" ") print (" Salva sempre i file nella directory 'ProjectFiles' e i file della versione ") print (" verranno creati anche in quella directory . ") print (" ") print (" ") print (" ") print (" ")
import shutil import os tempo di importazione
--- imposta l'intervallo di tempo per verificare la presenza di nuovi file (in secondi) di seguito
- questo intervallo dovrebbe essere inferiore a quello visualizzato dai nuovi file!
t = 10
--- imposta la directory di origine (dr1) e la directory di destinazione (dr2)
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
import glob import os
dr1 = "/ home / michael / ProjectFiles" # entrambi gli originali e le versioni verranno salvati in questa directory
dr2 = "/ home / michael / ProjectFileVersions"
mentre vero:
if os.listdir(dr1) == []:
stampa ("Vuoto")
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]
stampa ("2 nome originale =", nome originale)
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)
Condividere
il seguito è stato inserito in precedenza e funziona, ma mi piace molto meglio lo script python sopra ...... (sto usando python per circa 3 ore)
#!/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