今天分享乙個很有用的小**~
就是關於檔案的備份
import os #匯入os模組
ori_file_name = r'e:\python\mayday.***' #輸入檔案路徑
if os.path.isfile(ori_file_name): #判斷該路徑的是否是檔案
#擷取檔名,重組檔名
seek_num = ori_file_name.rfind('.')
new_file_name =ori_file_name[:seek_num]+'_copy'+ori_file_name[seek_num:]
#開啟原始檔
old_file = open(ori_file_name,'rb')
#讀取檔案資訊
old_file_content = old_file.read()
#建立新檔案
new_file = open(new_file_name,'wb')
#將原始檔案資訊寫入
new_file.write(old_file_content)
#關閉檔案
old_file.close()
new_file.close()
else:
print('沒有該檔案')
好,這個**就滿足一般檔案的copy了,
但是,如果遇到大檔案,在讀取檔案資訊的時候記憶體扛不住得話應該怎麼辦
emmmmm.....那肯定再買一條64g的記憶體啊!!!!
開個玩笑。我們下面對**進行改良,可達到省下乙個記憶體條的錢的效果
import os # 匯入os模組
ori_file_name = r'd:\大檔案.rmvb' # 輸入檔案路徑
if os.path.isfile(ori_file_name): # 判斷該路徑的是否是檔案
# 擷取檔名,重組檔名
seek_num = ori_file_name.rfind('.')
new_file_name = ori_file_name[:seek_num] + '_copy' + ori_file_name[seek_num:]
# 開啟原始檔
old_file = open(ori_file_name, 'rb')
# 建立新檔案
new_file = open(new_file_name, 'ab')
# 讀取檔案資訊,這部會在後面解釋
# for i in old_file:
# if not i:
# break
new_file.write(i)
new_file.write(old_file.read())
# 關閉檔案
old_file.close()
new_file.close()
else:
print('沒有該檔案')
關於那個for迴圈,
最早的時候,我想的是用 for i in old_file.readlines(),後來發現,依然崩潰了,因為在使用readlines讀取檔案時,系統會吧該檔案整個檔案轉換成乙個列表,而這個列表會占用記憶體,所以雖然能剩去寫入時的記憶體,但是依然會浪費大部分資源。
後來我試試了如下**: print(isinstance(old_file,iterable)) ==>true 即old_file是可以迭代的,那麼,old_file的物件是原始檔,且這裡沒有對他在進行分解,所以在迭代old_file的時候不會占用空間,所以這樣就只會在寫入時候占用記憶體了以達到拷貝的效果。
以上是本人的見解,不知道是否有不對的地方,還希望有看到的大神幫忙指出~~
python 備份檔案指令碼
usr bin env python filename backup ver1.pyimport os import time source r d python test r d python test1 target dir d python test2 remember to change t...
vim備份檔案
vim 一般來說vim不會備份檔案,你可以執行 cp usr share vim vim64 vimrc example.vim vimrc 將vimrc example.vim拷貝到當前使用者的主目錄並改名為.vimrc,該檔案裡面如下 就開啟了vim的備份功能 if has vms setnob...
python 掃瞄備份檔案以及原始碼洩露
靈感來自於某個小哥在群裡閒聊的時候,談及自己一起提交過乙個知名 分站的原始碼洩露,並且收益不菲,我當時一愣,沒想到原始碼洩露這個漏洞還能賺不少積分,於是研究一番後,決定寫乙個專門掃瞄 重點敏感資訊洩漏的軟體,這個軟體的功能包括這三點。掃瞄備份檔案 掃瞄svn git原始碼洩漏 掃瞄webinfo頁面...