學習語言最好的辦法就是實踐,這句話一點都不假!
今天完成了一個Python的小指令碼,但是其中卻遇到了一些意想不到的困難,最終通過上網搜尋資料終於將這些問題解決了,對於我這個連Python都還不是太懂的菜鳥來說,真的很不容易啊!
學到了什嗎?
- python中r的用法,r'str'表示raw string,既忽略逸出字元。因為和windows不一樣,python中認為\就是逸出字元escape sequences的標誌。
- python中提取系統時間,以及將其轉化成字串的方法。time.strftime()。
- 將list轉化成str的方法,s.join(list),其中s是list不同元素轉換成string後中間的空格符。
- 7z壓縮的方法中 如果加上-t7z 這種方法的壓縮效果更好
- 解決zip_command不能調用7z的兩種辦法:
a. 通過電腦→屬性→系統保護→進階→環境變數→系統變數 path 修改環境變數,添加7z的path
b. 直接在zip_command命令中添加7z的路徑,但是需要注意由於Program Files有空格,Python不能識別它,所以需要將zip_command改成:
zip_command = r'D:\Progra~1\7-Zip\7z' + " a %s %s" % ( target, ' '.join(source) )
造成這種原因是,dos下只支援8.3檔案名稱規格,多過的都會以~1結尾
完成的小指令碼是實現系統檔案的備份。
#!F:/document/python
# Filename: backup_ver1.py
import os
import time
##import sys
##
##os.sys.path.append(r'D:\Progra~1\7-Zip')
#1. the files and derectories to be backed up are specified in a list.
source = [r'f:\document\python\a.txt',r'f:\document\html']
#2. the backup must be stored in a main backup directory.
target_dir = r'f:\document\backup\\'
#3. the files are backed up into a zip file.
#4. the name of the zip archive is the current date and time
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
#5. put files in a zip archive
##zip_command = "rar a -r %s %s" % ( target, ' '.join(source) )
##zip_command = r'D:\Progra~1\7-Zip\7z' + " a %s %s" % ( target, ' '.join(source) )
zip_command = "7z a %s %s" % ( target, ' '.join(source) )
# run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'backup failed'