これは、保存時に元のファイル名にタイムスタンプを追加して自動ファイルバージョン管理のようなVMSを実行するPython3スクリプトです。
スクリプトにたくさんのコメントを入れ、ubuntuマシンでこのようなスクリプトを半ダース実行しました。スクリプトのバージョンごとに異なるディレクトリのみを使用して、複数のディレクトリを同時にバージョン管理しています。マシンのパフォーマンスに実質的なペナルティはありません。
!/ usr / bin / env python3
print( "PROJECT FILES VERSIONING STARTED")print( "version_creation.py")#このすべてのコードをこの名前のスクリプトに配置print( "run as .. 'python3 version_creation.py' from command line")print( "ctrl ' c 'to stop ")print(" ")print("コマンドラインで以下のバックグラウンドでプログラムを実行し、ウィンドウを閉じます。 ")print(" nohup python3 version_creation.py ")print(" .... to停止プロセスgo menu / administration / system monitor ... and kill python3 ")print(" ")print("常に「ProjectFiles」ディレクトリにファイルを保存し、バージョンファイル ")print("もそのディレクトリに作成されます。 。 ")print(" ")print(" ")print(" ")print(" ")
import shutil import osインポート時間
---新しいファイルをチェックする時間間隔を設定します(秒単位)
-この間隔は、新しいファイルが表示される間隔よりも小さくする必要があります!
t = 10
---ソースディレクトリ(dr1)とターゲットディレクトリ(dr2)を設定します
dr1 = "/ path / to / source_directory"
dr2 = "/ path / to / target_directory"
import glob import os
dr1 = "/ home / michael / ProjectFiles"#オリジナルとバージョンの両方がこのディレクトリに保存されます
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)
print( "1 Latest_file_path ="、latest_file_path)
originalname = latest_file_path.split('/')[-1]
print( "2 originalname ="、originalname)
filecreation = (os.path.getmtime(latest_file_path))
print( "filecreation ="、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スクリプトがはるかに好きです......(約3時間Pythonを使用しています)
#!/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