Aqui está um script Python3 que executa o VMS como controle automático de versão de arquivo usando um carimbo de data / hora anexado ao nome do arquivo original quando salvo.
Eu coloquei um monte de comentários no script e executei meia dúzia desses scripts na minha máquina ubuntu, com apenas os diretórios diferentes em cada versão diferente do script, para que eu esteja simultaneamente versionando vários diretórios. Nenhuma penalidade real para o desempenho das máquinas.
! / usr / bin / env python3
print ("VERSIONING DE ARQUIVOS DE PROJETO INICIADOS") print ("version_creation.py") # coloque todo esse código no script com esse nome print ("execute como .. 'python3 version_creation.py' na linha de comando") print ("ctrl ' c 'para parar ") print (" ") print (" Para executar o programa em segundo plano, digite abaixo a linha de comando e feche a janela. ") print (" nohup python3 version_creation.py ") print (" .... to interrompa o processo, vá ao menu / administração / monitor do sistema ... e mate python3 ") print (" ") print (" Sempre salve os arquivos no diretório 'ProjectFiles' e os arquivos de versão ") print (" também serão criados nesse diretório . ") print (" ") print (" ") print (" ") print (" ")
importação shutil importação os tempo de importação
--- defina o intervalo de tempo para procurar novos arquivos (em segundos) abaixo
- este intervalo deve ser menor que o intervalo em que novos arquivos aparecem!
t = 10
--- defina o diretório de origem (dr1) e o diretório de destino (dr2)
dr1 = "/ caminho / para / diretório_de origem"
dr2 = "/ caminho / para / diretório_de destino"
importação glob importação os
dr1 = "/ home / michael / ProjectFiles" # os dois originais e versões serão salvos neste diretório
dr2 = "/ home / michael / ProjectFileVersions"
enquanto True:
if os.listdir(dr1) == []:
print ("Vazio")
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 Último_arquivo_do_arquivo =", Último_arquivo_do_arquivo)
originalname = latest_file_path.split('/')[-1]
print ("2 nome original =", nome original)
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)
compartilhar
o abaixo foi colocado anteriormente e funciona, mas eu gosto muito mais do script python acima ...... (usando python por cerca de 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