文件

目標(biāo)

  • 文件操作的作用
  • 文件的基本操作
    • 打開(kāi)
    • 讀寫(xiě)
    • 關(guān)閉
  • 文件備份
  • 文件和文件夾的操作

一. 文件操作的作用

思考:什么是文件?

思考:文件操作包含什么?

答:打開(kāi)、關(guān)閉、讀、寫(xiě)、復(fù)制....

思考:文件操作的的作用是什么?

答:讀取內(nèi)容、寫(xiě)入內(nèi)容、備份內(nèi)容......

總結(jié):文件操作的作用就是==把一些內(nèi)容(數(shù)據(jù))存儲(chǔ)存放起來(lái),可以讓程序下一次執(zhí)行的時(shí)候直接使用,而不必重新制作一份,省時(shí)省力==。

二. 文件的基本操作

2.1 文件操作步驟

  1. 打開(kāi)文件
  2. 讀寫(xiě)等操作
  3. 關(guān)閉文件

注意:可以只打開(kāi)和關(guān)閉文件,不進(jìn)行任何讀寫(xiě)操作。

2.1.1 打開(kāi)

在python,使用open函數(shù),可以打開(kāi)一個(gè)已經(jīng)存在的文件,或者創(chuàng)建一個(gè)新文件,語(yǔ)法如下:

open(name, mode)

name:是要打開(kāi)的目標(biāo)文件名的字符串(可以包含文件所在的具體路徑)。

mode:設(shè)置打開(kāi)文件的模式(訪(fǎng)問(wèn)模式):只讀、寫(xiě)入、追加等。

2.1.1.1 打開(kāi)文件模式

模式 描述
r 以只讀方式打開(kāi)文件。文件的指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
rb 以二進(jìn)制格式打開(kāi)一個(gè)文件用于只讀。文件指針將會(huì)放在文件的開(kāi)頭。這是默認(rèn)模式。
r+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
rb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。文件指針將會(huì)放在文件的開(kāi)頭。
w 打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
wb 以二進(jìn)制格式打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
w+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
wb+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則打開(kāi)文件,并從開(kāi)頭開(kāi)始編輯,即原有內(nèi)容會(huì)被刪除。如果該文件不存在,創(chuàng)建新文件。
a 打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
ab 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
a+ 打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。文件打開(kāi)時(shí)會(huì)是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。
ab+ 以二進(jìn)制格式打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在,創(chuàng)建新文件用于讀寫(xiě)。

2.1.1.2 快速體驗(yàn)

f = open('test.txt', 'w')

注意:此時(shí)的fopen函數(shù)的文件對(duì)象。

2.1.2 文件對(duì)象方法

2.1.2.1 寫(xiě)
  • 語(yǔ)法
對(duì)象對(duì)象.write('內(nèi)容')
  • 體驗(yàn)
# 1. 打開(kāi)文件
f = open('test.txt', 'w')

# 2.文件寫(xiě)入
f.write('hello world')

# 3. 關(guān)閉文件
f.close()

注意:

  1. wa模式:如果文件不存在則創(chuàng)建該文件;如果文件存在,w模式先清空再寫(xiě)入,a模式直接末尾追加。
  2. r模式:如果文件不存在則報(bào)錯(cuò)。
2.1.2.2 讀
  • read()
文件對(duì)象.read(num)

num表示要從文件中讀取的數(shù)據(jù)的長(zhǎng)度(單位是字節(jié)),如果沒(méi)有傳入num,那么就表示讀取文件中所有的數(shù)據(jù)。

  • readlines()

readlines可以按照行的方式把整個(gè)文件中的內(nèi)容進(jìn)行一次性讀取,并且返回的是一個(gè)列表,其中每一行的數(shù)據(jù)為一個(gè)元素。

f = open('test.txt')
content = f.readlines()

# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)

# 關(guān)閉文件
f.close()
  • readline()

readline()一次讀取一行內(nèi)容。

f = open('test.txt')

content = f.readline()
print(f'第一行:{content}')

content = f.readline()
print(f'第二行:{content}')

# 關(guān)閉文件
f.close()
2.1.2.3 seek()

作用:用來(lái)移動(dòng)文件指針。

語(yǔ)法如下:

文件對(duì)象.seek(偏移量, 起始位置)

起始位置:

  • 0:文件開(kāi)頭
  • 1:當(dāng)前位置
  • 2:文件結(jié)尾

2.1.3 關(guān)閉

文件對(duì)象.close()

三. 文件備份

需求:用戶(hù)輸入當(dāng)前目錄下任意文件名,程序完成對(duì)該文件的備份功能(備份文件名為xx[備份]后綴,例如:test[備份].txt)。

3.1 步驟

  1. 接收用戶(hù)輸入的文件名
  2. 規(guī)劃備份文件名
  3. 備份文件寫(xiě)入數(shù)據(jù)

3.2 代碼實(shí)現(xiàn)

  1. 接收用戶(hù)輸入目標(biāo)文件名
old_name = input('請(qǐng)輸入您要備份的文件名:')
  1. 規(guī)劃備份文件名

    2.1 提取目標(biāo)文件后綴

    2.2 組織備份的文件名,xx[備份]后綴

# 2.1 提取文件后綴點(diǎn)的下標(biāo)
index = old_name.rfind('.')

# print(index)  # 后綴中.的下標(biāo)

# print(old_name[:index])  # 源文件名(無(wú)后綴)

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

# 打印新文件名(帶后綴)
# print(new_name)
  1. 備份文件寫(xiě)入數(shù)據(jù)

    3.1 打開(kāi)源文件 和 備份文件

    3.2 將源文件數(shù)據(jù)寫(xiě)入備份文件

    3.3 關(guān)閉文件

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

# 3.2 將源文件數(shù)據(jù)寫(xiě)入備份文件
while True:
    con = old_f.read(1024)
    if len(con) == 0:
        break
    new_f.write(con)

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

3.3 思考

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

答:添加條件判斷即可。

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

index = old_name.rfind('.')


if index > 0:
    postfix = old_name[index:]

new_name = old_name[:index] + '[備份]' + postfix

old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')

while True:
    con = old_f.read(1024)
    if len(con) == 0:
        break
    new_f.write(con)

old_f.close()
new_f.close()

四. 文件和文件夾的操作

在Python中文件和文件夾的操作要借助os模塊里面的相關(guān)功能,具體步驟如下:

  1. 導(dǎo)入os模塊
import os
  1. 使用os模塊相關(guān)功能
os.函數(shù)名()

4.1 文件重命名

os.rename(目標(biāo)文件名, 新文件名)

4.2 刪除文件

os.remove(目標(biāo)文件名)

4.3 創(chuàng)建文件夾

os.mkdir(文件夾名字)

4.4 刪除文件夾

os.rmdir(文件夾名字)

4.5 獲取當(dāng)前目錄

os.getcwd()

4.6 改變默認(rèn)目錄

os.chdir(目錄)

4.7 獲取目錄列表

os.listdir(目錄)

五.應(yīng)用案例

需求:批量修改文件名,既可添加指定字符串,又能刪除指定字符串。

  • 步驟
  1. 設(shè)置添加刪除字符串的的標(biāo)識(shí)
  2. 獲取指定目錄的所有文件
  3. 將原有文件名添加/刪除指定字符串,構(gòu)造新名字
  4. os.rename()重命名
  • 代碼
import os

# 設(shè)置重命名標(biāo)識(shí):如果為1則添加指定字符,flag取值為2則刪除指定字符
flag = 1

# 獲取指定目錄
dir_name = './'

# 獲取指定目錄的文件列表
file_list = os.listdir(dir_name)
# print(file_list)


# 遍歷文件列表內(nèi)的文件
for name in file_list:

    # 添加指定字符
    if flag == 1:
        new_name = 'Python-' + name
    # 刪除指定字符
    elif flag == 2:
        num = len('Python-')
        new_name = name[num:]

    # 打印新文件名,測(cè)試程序正確性
    print(new_name)
    
    # 重命名
    os.rename(dir_name+name, dir_name+new_name)

六. 總結(jié)

  • 文件操作步驟

    • 打開(kāi)
    文件對(duì)象 = open(目標(biāo)文件, 訪(fǎng)問(wèn)模式)
    
    • 操作

      文件對(duì)象.read()
      文件對(duì)象.readlines()
      文件對(duì)象.readline()
      
      • 寫(xiě)
      文件對(duì)象.write()
      
      • seek()
    • 關(guān)閉

    文件對(duì)象.close()
    
  • 主訪(fǎng)問(wèn)模式

    • w:寫(xiě),文件不存在則新建該文件
    • r:讀,文件不存在則報(bào)錯(cuò)
    • a:追加
  • 文件和文件夾操作

    • 重命名:os.rename()
    • 獲取當(dāng)前目錄:os.getcwd()
    • 獲取目錄列表:os.listdir()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、文件操作的作用 思考:文件操作包含什么? 答:打開(kāi)、關(guān)閉、讀、寫(xiě)、復(fù)制… 思考:文件操作的的作用是什么? 答:...
    蜀山客e閱讀 288評(píng)論 0 0
  • 文件操作 目標(biāo) 文件操作的作用 文件的基本操作打開(kāi)讀寫(xiě)關(guān)閉 文件備份 文件和文件夾的操作 一. 文件操作的作用 思...
    M_小七閱讀 150評(píng)論 0 2
  • 文件操作 文件操作包含:打開(kāi)、關(guān)閉、讀、寫(xiě)、復(fù)制.. 目的:讀取內(nèi)容、寫(xiě)入內(nèi)容、備份內(nèi)容 文件操作就是把一些內(nèi)容(...
    桔Bu閱讀 379評(píng)論 0 1
  • 一、列表推導(dǎo)式:用來(lái)創(chuàng)建列表 > 所謂的列表推導(dǎo)式,就是指的輕量級(jí)循環(huán)創(chuàng)建列表 格式:列表推導(dǎo)式的常見(jiàn)形式: my...
    MAVIS_42bf閱讀 716評(píng)論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽(tīng)閱讀 10,851評(píng)論 0 11

友情鏈接更多精彩內(nèi)容