欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

用python實現文件備份

 更新時間:2022年01月29日 08:34:37   作者:繁華似錦Fighting  
大家好,本篇文章主要講的是用python實現文件備份,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下

1、需求

用戶輸入當前目錄下任意文件名,程序完成對該文件的備份功能。

備份文件名為xx[備份]后綴,例如:test[備份].txt。

2、步驟

接收用戶輸入的文件名。規(guī)劃備份文件名。備份文件寫入數據。

3、代碼實現

(1)接收用戶輸入目標文件名

old_name = input('請輸入您要備份的文件名:')

(2)規(guī)劃備份文件名

2.1 提取目標文件后綴。
2.2 組織備份的文件名,xx[備份]后綴。

# 2.1 提取文件后綴點的下標
index = old_name.rfind('.')

# 2.2 組織新文件名 舊文件名 + [備份] + 后綴
new_name = old_name[:index] + '[備份]' + old_name[index:]

(3)備份文件寫入數據

3.1 打開源文件 和 備份文件。
3.2 將源文件數據寫入備份文件。
3.3 關閉文件。

# 3.1 打開文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

# 3.2 將源文件數據寫入備份文件
# 如果不確定目標文件大小,循環(huán)讀取寫入,
# 當讀取出來的數據沒有了終止循環(huán)
while True:
    # 每次在原文件中讀取的內容
    con = old_f.read(1024)
    # 表示讀取完成了
    if len(con) == 0:
        # 終止讀取
        break

    # 新文件寫入讀取的數據
    new_f.write(con)

# 3.3 關閉文件
old_f.close()
new_f.close()

(4)思考

如果用戶輸入.txt,這是一個無效文件,程序如何更改才能限制只有有效的文件名才能備份?

答:添加條件判斷即可。

# 有文件名,才能提取后綴
# 這里無法取得后綴,拼接的時候沒有后綴的變量
# 就會報錯
if index > 0:
    postfix = old_name[index:]

(5)完整編碼

1)傳統(tǒng)實現

# 1. 用戶輸入目標文件  如:sound.txt.mp3
old_name = input('請輸入您要備份的文件名:')

# 2. 規(guī)劃備份文件的名字
# 2.1 提取后綴 --
# 找到名字中的最右側的點才是后綴的點
# 在右側查找rfind()方法
# 獲取文件全名中后綴.的位置
index = old_name.rfind('.')


# 4. 思考:有效文件才備份 .txt
if index > 0:
    # 提取后綴,這里提取不到,后面拼接新文件名字的時候就會報錯
    postfix = old_name[index:]

# 2.2 組織新名字 = 原名字 + [備份] + 后綴
# 原名字就是字符串中的一部分子串 -- 切片[開始:結束:步長]
# new_name = old_name[:index] + '[備份]' + old_name[index:]
new_name = old_name[:index] + '[備份]' + postfix


# 3. 備份文件寫入數據(數據和原文件一樣)
# 3.1 打開 原文件 和 備份文件
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

# 3.2 原文件讀取,備份文件寫入
# 如果不確定目標文件大小,循環(huán)讀取寫入,當讀取出來的數據沒有了終止循環(huán)
while True:
    # 每次在原文件中讀取的內容
    con = old_f.read(1024)
    # 表示讀取完成了
    if len(con) == 0:
        # 終止讀取
        break

    # 新文件寫入讀取的數據
    new_f.write(con)

# 3.3 關閉文件
old_f.close()
new_f.close()

2)實際工作實現

# 1. 用戶輸入目標文件  如:sound.txt.mp3
old_name = input('請輸入您要備份的文件名:')

# 獲取文件全名中后綴.的位置
index = old_name.rfind('.')

# 4.有效文件才備份 .txt
if index > 0:
    postfix = old_name[index:]

# 3.開始備份文件
# 打開原文件
with open(old_name , 'rb') as file_obj:
    # 組織新名字 = 原名字 + [備份] + 后綴
    new_name = old_name[:index] + '[備份]' + postfix

    # 創(chuàng)建并打開新文件
    with open(new_name, 'wb') as new_obj:
        # 定義每次讀取的大小
        chunk = 1024 * 100

        while True:
            # 從已有的對象中讀取數據
            content = file_obj.read(chunk)

            # 內容讀取完畢,終止循環(huán)
            if not content:
                break

            # 將讀取到的數據寫入到新對象中
            new_obj.write(content)

兩種方式實現的功能一樣。

4、再來一個小練習

需求:二進制文件讀?。▽崿F方式和上邊一樣)

# 讀取模式
# t 讀取文本文件(默認值)
# b 讀取二進制文件

file_name = “hello.txt”

with open(file_name , 'rb') as file_obj:
    # 讀取文本文件時,size是以字符為單位的
    # 讀取二進制文件時,size是以字節(jié)為單位
    # print(file_obj.read(100))

    # 將讀取到的內容寫出來
    # 定義一個新的文件
    new_name = 'aa.txt'

    with open(new_name , 'wb') as new_obj:

        # 定義每次讀取的大小
        chunk = 1024 * 100

        while True :
            # 從已有的對象中讀取數據
            content = file_obj.read(chunk)

            # 內容讀取完畢,終止循環(huán)
            if not content :
                break

            # 將讀取到的數據寫入到新對象中
            new_obj.write(content)

注意:純文本文件也可以使用二進制方法進行讀取操作。

總結

到此這篇關于用python實現文件備份的文章就介紹到這了,更多相關python文件備份內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 解決CentOS下ImportError: No module named '_sqlite3'的問題

    解決CentOS下ImportError: No module named &a

    這篇文章主要介紹了解決CentOS下ImportError: No module named '_sqlite3'的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • pandas?dataframe?drop函數介紹

    pandas?dataframe?drop函數介紹

    這篇文章主要介紹了pandas?dataframe?drop函數介紹,文章通圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python合并多個excel的詳細過程

    python合并多個excel的詳細過程

    合并需求很多,常見的有相同數據結構,按行進行縱向拼接,下面這篇文章主要給大家介紹了關于python合并多個excel的相關資料,需要的朋友可以參考下
    2022-10-10
  • Python根據字典值對字典進行排序的三種方法實例

    Python根據字典值對字典進行排序的三種方法實例

    Python中的字典是無序類型,沒有自己的排序方法,下面這篇文章主要給大家介紹了關于Python根據字典值對字典進行排序的三種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • pandas將DataFrame的幾列數據合并成為一列

    pandas將DataFrame的幾列數據合并成為一列

    本文主要介紹了pandas將DataFrame的幾列數據合并成為一列,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • python爬蟲爬取微博評論案例詳解

    python爬蟲爬取微博評論案例詳解

    這篇文章主要介紹了python爬蟲爬取微博評論,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • Python基于LightGBM進行時間序列預測

    Python基于LightGBM進行時間序列預測

    LightGBM是擴展機器學習系統(tǒng)。是一款基于GBDT(梯度提升決策樹)算法的分布梯度提升框架。其設計思路主要集中在減少數據對內存與計算性能的使用上,以及減少多機器并行計算時的通訊代價。本文將通過LightGBM進行時間序列預測,感興趣的可以了解一下
    2022-03-03
  • pytorch 優(yōu)化器(optim)不同參數組,不同學習率設置的操作

    pytorch 優(yōu)化器(optim)不同參數組,不同學習率設置的操作

    這篇文章主要介紹了pytorch 優(yōu)化器(optim)不同參數組,不同學習率設置的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Django錯誤:TypeError at / ''bool'' object is not callable解決

    Django錯誤:TypeError at / ''bool'' object is not callable解決

    這篇文章主要介紹了Django 錯誤:TypeError at / 'bool' object is not callable解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • python+pytest接口自動化之日志管理模塊loguru簡介

    python+pytest接口自動化之日志管理模塊loguru簡介

    python中有一個用起來非常簡便的第三方日志管理模塊--loguru,不僅可以避免logging的繁瑣配置,而且可以很簡單地避免在logging中多進程多線程記錄日志時出現的問題,甚至還可以自定義控制臺輸出的日志顏色,接下來我們來學習怎么使用loguru模塊進行日志管理
    2022-05-05

最新評論