นี่คือสคริปต์ Python3 ที่ใช้ VMS เช่นการกำหนดเวอร์ชันไฟล์อัตโนมัติโดยใช้การประทับเวลาต่อท้ายชื่อไฟล์ต้นฉบับเมื่อบันทึก
ฉันใส่ความเห็นลงในสคริปต์และรันสคริปต์ครึ่งโหลบนเครื่องอูบุนตูของฉันโดยมีเฉพาะไดเรกทอรีที่แตกต่างกันในสคริปต์แต่ละเวอร์ชันที่แตกต่างกันดังนั้นฉันจึงวางเวอร์ชันไดเรกทอรีหลายตัวพร้อมกัน ไม่มีโทษจริงกับประสิทธิภาพของเครื่องจักร
! / usr / bin / env python3
พิมพ์ ("PROJECT FILES VERSIONING STARTED") พิมพ์ ("version_creation.py") # แทนที่รหัสนี้ทั้งหมดลงในสคริปต์ของชื่อนี้ print ("run as .. .. 'python3 version_creation.py' จากบรรทัดคำสั่ง") พิมพ์ ("ctrl ' c 'เพื่อหยุด ") พิมพ์ (" ") พิมพ์ (" เพื่อเรียกใช้โปรแกรมในประเภทพื้นหลังด้านล่างไปยังบรรทัดคำสั่งแล้วปิดหน้าต่าง ") พิมพ์ (" nohup python3 version_creation.py ") พิมพ์ (" .... ถึง หยุดกระบวนการไปที่เมนู / การบริหาร / การตรวจสอบระบบ ... และฆ่า python3 ") พิมพ์ (" ") พิมพ์ (" บันทึกไฟล์ไปยังไดเรกทอรี 'ProjectFiles' เสมอและไฟล์รุ่น ") พิมพ์ (" จะถูกสร้างในไดเรกทอรีนั้นด้วย . ") พิมพ์ (" ") พิมพ์ (" ") พิมพ์ (" ") พิมพ์ (" ")
เวลาการนำเข้าระบบการนำเข้า
--- ตั้งช่วงเวลาเพื่อตรวจสอบไฟล์ใหม่ (เป็นวินาที) ด้านล่าง
- ช่วงเวลานี้ควรเล็กกว่าไฟล์ใหม่ที่ปรากฏขึ้น!
t = 10
--- ตั้งค่าไดเรกทอรีต้นทาง (dr1) และไดเรกทอรีเป้าหมาย (dr2)
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
ระบบการนำเข้าแบบ glob
dr1 = "/ home / michael / ProjectFiles" #both ต้นฉบับและรุ่นจะถูกบันทึกไว้ในไดเรกทอรีนี้
dr2 = "/ home / michael / ProjectFileVersions"
ในขณะที่ 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)
พิมพ์ ("1 Latest_file_path =", latest_file_path)
originalname = latest_file_path.split('/')[-1]
พิมพ์ ("2 originalname =", ชื่อเดิม)
filecreation = (os.path.getmtime(latest_file_path))
พิมพ์ ("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)
หุ้น
ข้างล่างนี้ถูกวางไว้ก่อนหน้านี้และใช้งานได้ แต่ฉันชอบสคริปต์ไพ ธ อนด้านบนดีกว่ามาก ...... (ใช้ 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