다음은 저장할 때 원래 파일 이름에 추가 된 타임 스탬프를 사용하여 자동 파일 버전 관리와 같은 VMS를 수행하는 Python3 스크립트입니다.
스크립트에 많은 주석을 넣고 우분투 컴퓨터에서 스크립트 수십 개를 실행하여 스크립트의 각 버전마다 다른 디렉토리 만 사용하여 여러 디렉토리의 버전을 동시에 관리합니다. 기계 성능에 실질적인 불이익이 없습니다.
! / usr / bin / env python3
print ( "PROJECT FILES VERSIONING STARTED") print ( "version_creation.py") #이 코드를이 이름의 스크립트에 넣습니다 print ( "run as .. '명령 행에서'python3 version_creation.py '") print ( "ctrl' c 'to stop ") print (" ") print ("아래 배경 유형의 프로그램을 명령 행으로 실행 한 다음 창을 닫으려면 ""print ( "nohup python3 version_creation.py") print ( ".... to 프로세스 중지 메뉴 / 관리 / 시스템 모니터로 이동하고 python3을 종료하십시오. ") print (" ") print ("항상 파일을 'ProjectFiles'디렉토리에 저장하고 버전 파일 ") print ("도 해당 디렉토리에 생성됩니다. " . ") 인쇄 (" ") 인쇄 (" ") 인쇄 (" ") 인쇄 (" ")
수입 셔틀 수입 OS 수입 시간
--- 아래에서 새 파일을 확인하는 시간 간격을 초 단위로 설정하십시오.
-이 간격은 새 파일이 나타나는 간격보다 작아야합니다!
t = 10
--- 소스 디렉토리 (dr1)와 대상 디렉토리 (dr2)를 설정합니다
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
수 입구 수입 수입 OS
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)
인쇄 ( "1 Latest_file_path =", latest_file_path)
originalname = latest_file_path.split('/')[-1]
인쇄 ( "2 원본 이름 =", 원본 이름)
filecreation = (os.path.getmtime(latest_file_path))
인쇄 ( "filecreation =", filecreation)
now = time.time()
fivesec_ago = now - 5 # Number of seconds
인쇄 ( "fivesec_ago =", fivesec_ago)
timedif = fivesec_ago - filecreation #time between file creation
인쇄 ( "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)
공유
아래는 이전에 넣고 작동했지만 위의 파이썬 스크립트가 훨씬 좋습니다 ... (파이썬을 약 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