# 1.txt,1.py 1.mp3 1.avi
# 允許使用者輸入任何一個檔案 -- 備份
# 打開源檔案, 打開備份檔案 -- 源檔案執行讀取,備份檔案執行寫入 -- 關閉兩個檔案
import os
# 得到這個路徑下的所有檔案
file_list = os.listdir('./')
print(file_list)
file_name = input('請輸入要備份的檔案名:')
if file_name in file_list:
# sound.mp3 == sound_backup.mp3 -- 把點前面的名字加上backup -- finx('aa')
# str1 = 'sound.mp3' -- aa.bb.mp3
# print(str1.find('.')) rfind('.')
# str2 = 'sound.aa.mp3' # str2[:8] + back_up + str2[8:]
# print(str2.rfind('.'))
index = file_name.rfind('.')
# print(index)
# 拼一個新的名字
new_name = file_name[:index] + "_backup" + file_name[index:]
# print(new_name)
# 打開檔案
src_f = open(file_name, 'rb') # 音頻檔案,是以要二進制模式打開
new_f = open(new_name, 'ab')
# 源檔案讀取資料,新的檔案寫入資料
# src_f.read() -- read是一次性讀取所有,如果檔案太大,會出問題,循環讀取循環寫入
# 當沒有資料了就不再循環執行讀寫 -- 資料長度為0 len() == 0
while True:
# 找一個變量儲存每次讀取的資料
data = src_f.read(1024 * 1024)
print(data)
if len(data) == 0:
break
new_f.write(data)
# 關閉兩個檔案 -- 先關閉備份出來的 再關閉源檔案
new_f.close()
src_f.close()
else:
print('檔案不存在')