Voici un script Python3 qui utilise VMS comme le versionnage automatique des fichiers en utilisant un horodatage ajouté au nom du fichier d'origine lors de l'enregistrement.
J'ai mis un tas de commentaires dans le script et exécuté une demi-douzaine de tels scripts sur ma machine ubuntu, seuls les répertoires étant différents dans chaque version différente du script, de sorte que je versionne simultanément plusieurs répertoires. Aucune réelle pénalité sur les performances des machines.
! / usr / bin / env python3
print ("PROJECT FILES VERSIONING STARTED") print ("version_creation.py") #placer tout ce code dans le script de ce nom print ("run as .. 'python3 version_creation.py' from line command") print ("ctrl ' c 'pour arrêter ") print (" ") print (" Pour exécuter le programme en arrière-plan, tapez ci-dessous sur la ligne de commande, puis fermez la fenêtre. ") print (" nohup python3 version_creation.py ") print (" .... to arrêter le processus aller menu / administration / moniteur système ... et tuer python3 ") print (" ") print (" Toujours enregistrer les fichiers dans le répertoire 'ProjectFiles' et les fichiers de version ") print (" sera également créé dans ce répertoire . ") imprimer (" ") imprimer (" ") imprimer (" ") imprimer (" ")
importation shutil import os os import time
--- définissez l'intervalle de temps pour vérifier les nouveaux fichiers (en secondes) ci-dessous
- cet intervalle doit être plus petit que l'intervalle où les nouveaux fichiers apparaissent!
t = 10
--- définir le répertoire source (dr1) et le répertoire cible (dr2)
dr1 = "/ chemin / vers / répertoire_source"
dr2 = "/ chemin / vers / répertoire_cible"
import glob import os
dr1 = "/ home / michael / ProjectFiles" #les deux originaux et versions seront enregistrés dans ce répertoire
dr2 = "/ home / michael / ProjectFileVersions"
tandis que True:
if os.listdir(dr1) == []:
imprimer ("Vide")
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)
partager
le ci-dessous a été mis en place plus tôt et fonctionne mais j'aime beaucoup mieux le script python ci-dessus ...... (utilise python depuis environ 3 heures)
#!/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