Oto skrypt Python3, który wykonuje VMS, takie jak automatyczne wersjonowanie plików przy użyciu znacznika czasu dołączanego do oryginalnej nazwy pliku podczas zapisywania.
Umieściłem w skrypcie sporo komentarzy i uruchomiłem pół tuzina takich skryptów na mojej maszynie ubuntu, przy czym tylko katalogi są różne w każdej innej wersji skryptu, dzięki czemu jednocześnie wersjonuję wiele katalogów. Brak realnej kary dla wydajności maszyn.
! / usr / bin / env python3
print („ROZPOCZĘCIE WERSJI PLIKÓW PROJEKTOWYCH”) print („version_creation.py”) # umieść cały ten kod w skrypcie o tej nazwie print („uruchom jako .. 'python3 version_creation.py' z wiersza poleceń”) print („ctrl” c ', aby zatrzymać ”) print („ ”) print („ Aby uruchomić program w tle poniżej, do wiersza poleceń, a następnie zamknąć okno. ”) print („ nohup python3 version_creation.py ”) print („ .... to zatrzymaj proces przejdź do menu / administracja / monitor systemu ... i zabij python3 ”) drukuj („ ”) drukuj („ Zawsze zapisuj pliki w katalogu „ProjectFiles” i pliki wersji ”) drukuj (” również zostaną utworzone w tym katalogu . ”) print („ ”) print („ ”) print („ ”) print („ ”)
import shutil import os czas importu
--- ustaw przedział czasu, aby sprawdzić nowe pliki (w sekundach) poniżej
- interwał ten powinien być mniejszy niż interwał pojawiania się nowych plików!
t = 10
--- ustaw katalog źródłowy (dr1) i katalog docelowy (dr2)
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
import glob import os
dr1 = "/ home / michael / ProjectFiles" # oba oryginały i wersje zostaną zapisane w tym katalogu
dr2 = "/ home / michael / ProjectFileVersions"
podczas gdy prawda:
if os.listdir(dr1) == []:
drukuj („Pusty”)
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 Ścieżka_pliku_ najnowszych =”, ścieżka_pliku_ najnowszych)
originalname = latest_file_path.split('/')[-1]
print („2 originalname =”, originalname)
filecreation = (os.path.getmtime(latest_file_path))
print („filecreation =”, tworzenie plików)
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)
dzielić
poniższe zostało wstawione wcześniej i działa, ale podoba mi się powyższy skrypt Pythona znacznie lepiej ...... (używam Pythona przez około 3 godziny)
#!/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