Ось сценарій Python3, який VMS любить автоматичну версію файлів, використовуючи часову марку, додану до оригінального імені файлу при збереженні.
Я вклав купу коментарів до сценарію і запустив півтисячі таких сценаріїв на моїй машині ubuntu, причому лише різні каталоги відрізняються у кожній різній версії сценарію, так що я одночасно оновлюю декілька каталогів. Ніякого реального штрафу за продуктивність машин.
! / usr / bin / env python3
print ("ФАЙЛИ ПРОЕКТУ, НАЧАЛЕННЯ ВЕРСІОНІЗА") print ("version_creation.py") #замістіть увесь цей код у скрипті цього імені print ("запустити як .." python3 version_creation.py 'з командного рядка ") print (" ctrl " c "для зупинки") print ("") print ("Для запуску програми у фоновому режимі введіть нижче командного рядка, а потім закрийте вікно.") print ("nohup python3 version_creation.py") print (".... to зупинити процес, перейти в меню / адміністрування / монітор системи ... і вбити python3 ") друкувати (" ") друкувати (" Завжди зберігати файли у каталозі "ProjectFiles" та файли версій ") print (" також буде створено в цьому каталозі . ") друкувати (" ") друкувати (" ") друкувати (" ") друкувати (" ")
імпорт shutil імпорт os час імпорту
--- встановіть інтервал часу, щоб перевірити наявність нових файлів (у секундах) нижче
- цей інтервал повинен бути меншим за інтервал появи нових файлів!
t = 10
--- встановити вихідний каталог (dr1) та цільовий каталог (dr2)
dr1 = "/ шлях / до / source_directory"
dr2 = "/ шлях / до / target_directory"
імпорт глобальний імпорт ос
dr1 = "/ home / michael / ProjectFiles" #both оригінали та версії будуть збережені в цей каталог
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 Останній_файл_пат =", останній_файл_пут)
originalname = latest_file_path.split('/')[-1]
print ("2 originalname =", originalname)
filecreation = (os.path.getmtime(latest_file_path))
print ("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