這是我以前寫過的一個清除備份檔案的小程式,本來想用批處理來做,但批處理的文法又複雜有怪異,最終還是拿python寫了一個 因為我們的遊戲每隔一小時就會自動產生一個備份,這個程式的作用是跳過最新的7*24個備份,刪除其他的時間更長的。 #表示注釋
# -*- coding: cp936 -*-
import os #os是python內建的一個擴充庫,用來進行跟系統相關的操作
skipNum = 24 * 7 #保留檔案夾的數目(小時 * 天)
print '\n*************清除時間超過 ' + str(skipNum /24) + ' 天的自動備份檔案**************\n\n'
backupDir = os.path.abspath(__file__) + '\\..\\..' + '\\servedatabase_autobackup' for dir in os.listdir(backupDir): #os.listdir(xxx)函數返回的是一個檔案清單 if dir[-4:] == '.map': mapDir = backupDir + '\\' + dir print '正在清除備份目錄:' + os.path.abspath(mapDir) subDirs = os.listdir(mapDir) #擷取檔案清單 subDirs.reverse() #逆序 i = 0 for subDir in subDirs: i+=1 if i > skipNum: print '正在清除備份: ' + subDir os.system('rmdir ' + mapDir + '\\' + subDir + ' /s/q') #相當於執行控制台命令 |
因為十一假期期間伺服器程式沒有人負責看管,我們的伺服器程式出錯誤的會產生錯誤報表對話方塊,這個python的作用就是定時尋找這個錯誤對話方塊,並且關掉,然後重新啟動服務端。
# -*- coding: cp936 -*-
import win32api
import win32gui
import time
import os
print "監控進程運行中....."
#工作路徑
workDir = "D:/work/xxxxxxxxx/"
#要進行監控的程式
winList = []
winList.append(["xxx-xxxx伺服器","xxx_R.bat"])
winList.append(["yyy-yyyy伺服器","yyy_R.bat"])
winList.append(["zzz-zzzz伺服器","zzz_R.bat"])
while(1):
#尋找"錯誤報表"視窗,並關掉
w = win32gui.FindWindow(0,"錯誤報表")
while(w != 0):
win32api.SendMessage(w,16)
w = win32gui.FindWindow(0,"錯誤報表")
time.sleep(2)
#尋找"python錯誤"視窗,並關掉
w = win32gui.FindWindow(0,"python.exe")
while(w != 0):
win32api.SendMessage(w,16)
w = win32gui.FindWindow(0,"python.exe")
time.sleep(2)
#檢查進程是否存在,如果不存在則啟動進程
for wl in winList:
s = win32gui.FindWindow(0,wl[0])
if s == 0:
print str(time.localtime()) + " 啟動 " + wl[1]
#寫日誌
file_object = open(workDir + 'runLog.txt', 'w+')
file_object.write(str(time.localtime()) + " 啟動 " + wl[1])
file_object.close( )
#啟動
win32api.ShellExecute(0, "" , workDir + wl[1] , "" , workDir , True )
time.sleep(5) #每啟動一個後的等待時間
time.sleep(600)#每一輪迴圈等待時間
這個是用來寫簡單的2d遊戲的一個擴充庫 http://www.pygame.org/news.html
前幾天剛看了看,裡面有很多小例子可以看