Вот скрипт Python3, который делает VMS как автоматическое управление версиями файлов, используя отметку времени, добавленную к исходному имени файла при сохранении.
Я добавил в сценарий кучу комментариев и запустил полдюжины таких сценариев на моей машине с Ubuntu, причем в каждой версии скрипта различались только каталоги, поэтому я одновременно создаю версии для нескольких каталогов. Нет реального штрафа в производительности машины.
! / usr / bin / env python3
print ("НАЧАТЬ ВЕРСИИ ФАЙЛОВ ПРОЕКТА") print ("version_creation.py") # поместить весь этот код в скрипт с таким именем print ("запустить как .. 'python3 version_creation.py' из командной строки") print ("ctrl ') c 'to stop ") print (" ") print (" Чтобы запустить программу в фоновом режиме ниже для командной строки, а затем закрыть окно. ") print (" nohup python3 version_creation.py ") print (" .... to остановить процесс перейти в меню / администрирование / системный монитор ... и уничтожить python3 ") print (" ") print (" Всегда сохранять файлы в каталог 'ProjectFiles' и файлы версий ") print (" также будет создан в этом каталоге . ") print (" ") print (" ") print (" ") print (" ")
импорт shutil импорт os время импорта
--- установите временной интервал для проверки новых файлов (в секундах) ниже
- этот интервал должен быть меньше интервала появления новых файлов!
т = 10
--- установить исходный каталог (dr1) и целевой каталог (dr2)
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
импорт глобус импорт ос
dr1 = "/ home / michael / ProjectFiles" # оба оригинала и версии будут сохранены в этом каталоге
dr2 = "/ home / michael / ProjectFileVersions"
пока верно:
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)
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)
доля
ниже был введен ранее и работает, но мне нравится вышеупомянутый скрипт на python намного лучше ...... (использую python около 3 часов)
#!/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