Dưới đây là tập lệnh Python3 thực hiện VMS như phiên bản tệp tự động bằng cách sử dụng dấu thời gian được gắn vào tên tệp gốc khi được lưu.
Tôi đã đưa một loạt các bình luận vào tập lệnh và chạy một nửa tá các tập lệnh như vậy trên máy ubfox của tôi với chỉ các thư mục khác nhau trong mỗi phiên bản khác nhau của tập lệnh để tôi đồng thời phiên bản nhiều thư mục. Không có hình phạt thực sự cho hiệu suất máy.
! / usr / bin / env python3
print ("DỰ ÁN PHIÊN BẢN PHIÊN BẢN BẮT ĐẦU") print ("version_creation.py") # đặt tất cả mã này vào tập lệnh của tên in này ("chạy dưới dạng .. 'python3 version_creation.py' từ dòng lệnh") print ("ctrl ' c 'to stop ") print (" ") print (" Để chạy chương trình ở loại nền bên dưới dòng lệnh và sau đó đóng cửa sổ. ") print (" nohup python3 version_creation.py ") print (" .... to dừng quá trình đi menu / quản trị / giám sát hệ thống ... và in python3 ") print (" ") print (" Luôn lưu tệp vào thư mục 'ProjectFiles' và tệp phiên bản ") print (" cũng sẽ được tạo trong thư mục đó . ") in (" ") in (" ") in (" ") in (" ")
nhập khẩu đóng cửa nhập khẩu os thời gian nhập khẩu
--- đặt khoảng thời gian để kiểm tra các tệp mới (tính bằng giây) bên dưới
- khoảng thời gian này phải nhỏ hơn khoảng thời gian các tệp mới xuất hiện!
t = 10
--- đặt thư mục nguồn (dr1) và thư mục đích (dr2)
dr1 = "/ đường dẫn / đến / source_directory"
dr2 = "/ đường dẫn / đến / target_directory"
nhập khẩu toàn cầu os nhập khẩu
dr1 = "/ home / michael / ProjectFiles" #both bản gốc và phiên bản sẽ được lưu vào thư mục này
dr2 = "/ nhà / michael / ProjectFileVersions"
trong khi Đúng:
if os.listdir(dr1) == []:
in ("Trống")
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)
in ("1 Recent_file_path =", mới nhất_file_path)
originalname = latest_file_path.split('/')[-1]
in ("2 gốcname =", tên gốc)
filecreation = (os.path.getmtime(latest_file_path))
in ("filecreation =", filecreation)
now = time.time()
fivesec_ago = now - 5 # Number of seconds
in ("fivesec_ago =", fivesec_ago)
timedif = fivesec_ago - filecreation #time between file creation
in ("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)
chia sẻ
bên dưới đã được đưa vào sớm hơn và hoạt động nhưng tôi thích kịch bản python ở trên tốt hơn nhiều ...... (đã sử dụng python trong khoảng 3 giờ)
#!/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