最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python基礎(chǔ)之文件操作

 更新時(shí)間:2021年04月15日 16:49:28   作者:Falcont  
這篇文章主要介紹了python基礎(chǔ)之文件操作,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有一定的幫助,需要的朋友可以參考下

1、打開文件

open()函數(shù)簡(jiǎn)介 :

打開文件使用open函數(shù),可以打開一個(gè)已經(jīng)存在的文件,如果沒有這個(gè)文件的話,會(huì)創(chuàng)建一個(gè)新文件

完整的語法格式為:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數(shù)說明:(一般只會(huì)用到前三個(gè))
file: 必需,文件路徑(相對(duì)或者絕對(duì)路徑)。
mode: 可選,文件打開模式
encoding: 一般使用utf8
buffering: 設(shè)置緩沖
errors: 報(bào)錯(cuò)級(jí)別
newline: 區(qū)分換行符
closefd: 傳入的file參數(shù)類型
opener: 設(shè)置自定義開啟器,開啟器的返回值必須是一個(gè)打開的文件描述符。
  • mode模式
'''
文件打開模式
r        以只讀方式打開文件,文件的指針將會(huì)放在文件的開頭,這是默認(rèn)模式。
w        打開一個(gè)文件只用于寫入。如果該文件已經(jīng)存在則將其覆蓋,如果不存在,創(chuàng)建新文件。
r+       打開一個(gè)文件用于讀寫,文件指針將會(huì)被放在文件的開頭。
w+       打開一個(gè)文件用于讀寫。如果該文件已經(jīng)存在則將其覆蓋,如果不存在,創(chuàng)建新文件。
rb+      以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
wb+      以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已經(jīng)存在則將其覆蓋,如果不存在,創(chuàng)建新文件。
a        打開一個(gè)文件用于追加,如果文件已經(jīng)存在,文件指針將會(huì)放在文件的結(jié)尾,也就是說,新的內(nèi)容將會(huì)被寫到已有內(nèi)容之后。
         如果文件不存在,創(chuàng)建新的文件進(jìn)行寫入。
'''
  • encoding編碼類型

encoding一般默認(rèn)是gbk,為中文編碼,但通常都是以u(píng)tf-8寫入和讀取最好在打開文件時(shí)指定編碼類型

打開文件,沒有的話自動(dòng)創(chuàng)建一個(gè)文件

File1_Object = open('Text1.txt', 'w', encoding='utf-8')  # 返會(huì)一個(gè)文件對(duì)象賦值給File1_Object

此時(shí)左邊工程欄會(huì)出現(xiàn)一個(gè)文件

在這里插入圖片描述

2、寫入

默認(rèn)形式寫入

File1_Object = open('Text1.txt', 'w', encoding='utf-8')
File1_Object.write('始知相憶深\n')  # 往該對(duì)象里寫入內(nèi)容
File1_Object.write('直道相思了無益,未妨惆悵是清狂\n')
File1_Object.close()  # 保存并關(guān)閉

此時(shí)打開文件,會(huì)有以下內(nèi)容

在這里插入圖片描述

以二進(jìn)制的形式打開并寫入

File2_Object = open('Text2.txt', 'wb')
File2_Object.write('我喜歡的人要心若明鏡,眼若星辰,便是看盡人間丑惡,也依然心懷善良,優(yōu)雅從容!\n'.encode('utf-8'))
# .encode('utf-8')    str->bytes
# 不加的話會(huì)報(bào)錯(cuò)   TypeError: a bytes-like object is required, not 'str'
File2_Object.close()

在這里插入圖片描述
在這里插入圖片描述

注意,以二進(jìn)制形式操作文件,不管是寫入和讀取都不加encoding,否則會(huì)報(bào)錯(cuò)
如果加encoding='utf-8'的話,會(huì)有以下錯(cuò)誤顯示:

在這里插入圖片描述

不加encoding的情況

# 后面不加encoding='utf-8',默認(rèn)為gbk
File5_Object = open('Text3.txt', 'w')
File5_Object.write('將頭發(fā)梳成大人摸樣\n')
File5_Object.write('換上一身帥氣西裝\n')
File5_Object.write('等回來見你一定比想象美\n')
File5_Object.close()

在這里插入圖片描述

此時(shí)打開Text3會(huì)有以下顯示:

在這里插入圖片描述

點(diǎn)擊箭頭指向位置,將會(huì)顯示出內(nèi)容:

在這里插入圖片描述

3、追加

一般追加形式

File3_Object = open('Text1.txt', 'a', encoding='utf-8')
File3_Object.write('我喜歡的人要心若明鏡,眼若星辰,便是看盡人間丑惡,也依然心懷善良,優(yōu)雅從容!\n')
File3_Object.close()

此時(shí)Text1里面的內(nèi)容為:

在這里插入圖片描述

對(duì)Text2進(jìn)行追加:

File2_Object = open('Text2.txt', mode='ab')
File2_Object.write('處處相思苦!'.encode('utf-8'))
File2_Object.close()

在這里插入圖片描述

對(duì)Text3進(jìn)行追加

如果此時(shí)加了encoding=‘uft-8'

File5_Object = open('Text3.txt', 'a', encoding='utf-8')
File5_Object.write('紗窗醉夢(mèng)中')
File5_Object.close()

打開文件Text3

在這里插入圖片描述

仍會(huì)顯示異常,此時(shí)需點(diǎn)擊箭頭指向位置,會(huì)顯示:

在這里插入圖片描述

點(diǎn)擊utf-8的話會(huì)顯示:

在這里插入圖片描述

所以當(dāng)文件第一次打開寫入時(shí)沒有加encoding時(shí),后續(xù)進(jìn)行操作也不要加,不然會(huì)有亂碼,加了encoding的話,編碼格式后續(xù)也不要改變。
此時(shí)刪掉encoding=‘utf-8',文件內(nèi)容為正常

File5_Object = open('Text3.txt', 'a')
File5_Object.write('紗窗醉夢(mèng)中')
File5_Object.close()

在這里插入圖片描述

4、讀文件

read(),將文件的內(nèi)容全部讀取出來。

File4_Object = open('Text1.txt', 'r', encoding='utf-8')
print(File4_Object.read())
File4_Object.close()

在這里插入圖片描述

read(num),傳入一個(gè)參數(shù),表示讀取指定字符個(gè)數(shù)

File4_Object = open('Text1.txt', 'r', encoding='utf-8')
print(File4_Object.read(4))  # 只讀取前四個(gè)字符
print(File4_Object.read())   # 第二次讀取將從上一次讀取的位置繼續(xù)讀取
File4_Object.close()
print()

在這里插入圖片描述

readline() 一次性讀一行

File4_Object = open('Text3.txt', 'r')
print(File4_Object.readline())
print(File4_Object.readline())  # 第二次讀取將從第二行開始
print(File4_Object.readline())
File4_Object.close()

在這里插入圖片描述

readlines() 按行讀取,一次性讀取所有內(nèi)容,返回一個(gè)列表,每一行內(nèi)容作為一個(gè)元素

File5_Object = open('Text3.txt', mode='r')
print(File5_Object.readlines())
File5_Object.close()

在這里插入圖片描述

以二進(jìn)制形式讀文件

File5_Object = open('Text2.txt', 'rb')
content = File5_Object.read()
print(content.decode('utf-8'))  # decode解碼
# 由于原來Text2文件時(shí)以二進(jìn)制形式打開并寫入的,此時(shí)解碼就直接用utf-8,不能用gbk
File5_Object.close()

File5_Object = open('Text3.txt', 'rb')
content = File5_Object.readline() # 只讀取一行
print(content.decode('gbk'))
# 而Text3第一次創(chuàng)建并寫入時(shí)是以默認(rèn)gbk的形式寫入的,此時(shí)只能用gbk解碼
File5_Object.close()

在這里插入圖片描述

with上下文管理對(duì)象,可以自動(dòng)釋放打開的對(duì)象,防止忘記close()操作

with open('Text2.txt', 'r', encoding='utf-8')as File5_Object:
    print(File5_Object.read())

在這里插入圖片描述

5、文件拷貝

小文件

def Copy_File():
    # 接收用戶輸入的文件名
    Original_File = input('請(qǐng)輸入要備份的文件名:')
    New_File_Name = Original_File.split('.')  #分割接收到的文件名
    New_File = New_File_Name[0] + '_copy.' + New_File_Name[1]
    Original_File_Object = open(Original_File, mode='r', encoding='utf-8')  # 以只讀的模式打開之前的文件
    New_File_Object = open(New_File, mode='w', encoding='utf-8')  # 以寫入的方式打開新備份的文件
    New_File_Object.write(Original_File_Object.read())
    Original_File_Object.close()
    New_File_Object.close()
    pass
Copy_File()
New_File = open('Text_copy.txt', mode='r', encoding='utf-8')
print(New_File.readlines())
New_File.close()

大文件

def Copy_Big_File():
    # 接收用戶輸入的文件名
    Original_File = input('請(qǐng)輸入要備份的文件名:')
    New_File_Name = Original_File.split('.')  #分割接收到的文件名
    New_File = New_File_Name[0] + '_copy.' + New_File_Name[1]
    try:
        with open(Original_File, mode='r', encoding='utf-8')as Original_File_Object, open(New_File, mode='r', encoding='utf-8')as New_File_Object:
            while True:
                connect = Original_File_Object.read(1024)
                New_File_Object.read(connect)
                if len(connect) < 1024:
                    break
                    pass
                pass
            pass
        pass
    except Exception as msg:
        print(msg)
        pass
    pass
Copy_Big_File()

6、tell()

文件定位,指的是當(dāng)前文件指針讀取到的位置,光標(biāo)位置。在讀寫文件的過程中,如果想知道當(dāng)前的位置,可以使用tell()來獲取

File_Object = open('Text1.txt', mode='r', encoding='utf-8')
print(File_Object.read(2))
print(File_Object.tell())
print(File_Object.read(5))
print(File_Object.tell())
File_Object.close()
# utf-8編碼格式中每個(gè)漢字占3個(gè)字節(jié)
print()

在這里插入圖片描述

注解:先讀取兩個(gè)漢字,print輸出 “始知”,此時(shí)光標(biāo)位置為6說明utf-8編碼格式中每個(gè)漢字占3個(gè)字節(jié),之后再讀取5個(gè),而只顯示了相憶深并換行打印了直,是因?yàn)檫€有一個(gè)換行符,此時(shí)光標(biāo)定位到20,又能說明轉(zhuǎn)義符在utf-8編碼格式中占2個(gè)字節(jié)。

7、truncate(size)

可以對(duì)源文件進(jìn)行截取操作,截取size字節(jié)大小數(shù)據(jù),截取之后源文件將被修改,里面只剩下截取的數(shù)據(jù)

File_Object = open('Text1.txt', mode='r', encoding='utf-8')
print('截取之前文件里的內(nèi)容:')
print(File_Object.read())
File_Object.close()
File_Object = open('Text1.txt', mode='r+', encoding='utf-8')
# r+ 打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭。
print()
File_Object.truncate(12)  # 執(zhí)行完此行代碼后源文件會(huì)被修改
print(File_Object.tell())
print('截取之后文件里的內(nèi)容:')
print(File_Object.read())
print(File_Object.tell())
File_Object.close()
print()

在這里插入圖片描述

光標(biāo)第一次位置指向開頭(r+),截取之后(12個(gè)字節(jié)),指向文件末尾12

  • 截取之前Text1為以下內(nèi)容

在這里插入圖片描述

  • 截取后為

在這里插入圖片描述 

8、seek()

在操作文件的過程,可定位到其他位置進(jìn)行操作 seek(offset,from)有2個(gè)參數(shù),offset指偏移字節(jié)量,負(fù)數(shù)是往前偏移,正數(shù)是往后偏移。from位置,0表示文件開頭,1表示當(dāng)前位置,2表示文件末尾

File_Object = open('Text1.txt', mode='rb')
              print(File_Object.read(15).decode('utf-8'))
              print(File_Object.tell()) File_Object.seek(-6, 1)
              print(File_Object.tell())
              print(File_Object.read(6).decode('utf-8')) File_Object.close()
              ''' 使用seek()函數(shù)時(shí),有時(shí)候會(huì)報(bào)錯(cuò)為  “io.UnsupportedOperation: can't do
              nonzero cur-relative seeks”
              照理說,按照seek()方法的格式file.seek(offset,whence),后面的1代表從當(dāng)前位置開始算起進(jìn)行偏移,那又為什么報(bào)錯(cuò)呢?
              這是因?yàn)?,在文本文件中,沒有使用b模式選項(xiàng)打開的文件,只允許從文件頭開始計(jì)算相對(duì)位置,從文件尾計(jì)算時(shí)就會(huì)引發(fā)異常。 將 
              f=open("aaa.txt","r+")  改成 f = open("aaa.txt","rb")   就可以了 '''

對(duì)于文件操作更系統(tǒng)實(shí)戰(zhàn)的操作,讀者可參考

http://m.fzitv.net/article/149035.htm

讀者可根據(jù)里面的流程分析對(duì)基礎(chǔ)進(jìn)行鞏固。

到此這篇關(guān)于python基礎(chǔ)之文件操作的文章就介紹到這了,更多相關(guān)python文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python實(shí)現(xiàn)新春煙花盛宴效果

    基于python實(shí)現(xiàn)新春煙花盛宴效果

    這篇文章給大家用Python綻放了一場(chǎng)新春煙花盛宴,這里提前祝大家新春快樂呀,文中通過代碼示例給大家介紹的非常詳細(xì),感興趣的小伙伴可以自己動(dòng)手嘗試一下
    2024-02-02
  • Python使用列表推導(dǎo)式快速生成列表

    Python使用列表推導(dǎo)式快速生成列表

    這篇文章主要介紹了Python使用列表推導(dǎo)式快速生成列表,列表推導(dǎo)式是Python構(gòu)建列表list的一種快捷方式,可以使用簡(jiǎn)潔的代碼就創(chuàng)建出一個(gè)列表,需要的朋友可以參考下
    2023-07-07
  • PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能

    PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能

    這篇文章主要給大家介紹了關(guān)于PyCharm更換pip源、模塊安裝以及PyCharm依賴包導(dǎo)入導(dǎo)出功能的相關(guān)資料,我們?cè)谑褂胮ycharm的時(shí)候,pycharm中的虛擬環(huán)境依賴包需要導(dǎo)出成一個(gè)文件,需要的朋友可以參考下
    2023-11-11
  • 基于fastapi框架的異步解讀

    基于fastapi框架的異步解讀

    這篇文章主要介紹了基于fastapi框架的異步解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Python內(nèi)置函數(shù)的用法實(shí)例教程

    Python內(nèi)置函數(shù)的用法實(shí)例教程

    這篇文章主要介紹了Python內(nèi)置函數(shù)的用法,包括求絕對(duì)值的abs()函數(shù)及數(shù)值類型轉(zhuǎn)換函數(shù)等,需要的朋友可以參考下
    2014-09-09
  • Python實(shí)現(xiàn)爬取需要登錄的網(wǎng)站完整示例

    Python實(shí)現(xiàn)爬取需要登錄的網(wǎng)站完整示例

    這篇文章主要介紹了Python實(shí)現(xiàn)爬取需要登錄的網(wǎng)站,結(jié)合完整實(shí)例形式分析了Python登陸網(wǎng)站及數(shù)據(jù)抓取相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08
  • python3中http協(xié)議提供文件服務(wù)器功能詳解

    python3中http協(xié)議提供文件服務(wù)器功能詳解

    http協(xié)議是互聯(lián)網(wǎng)的通用基礎(chǔ)協(xié)議,也可以利用其來開發(fā)文件服務(wù)器,給客戶提供文件瀏覽,查看,下載,上傳等功能,這篇文章主要介紹了python3中http協(xié)議提供文件服務(wù)器功能,需要的朋友可以參考下
    2023-06-06
  • python模擬enum枚舉類型的方法小結(jié)

    python模擬enum枚舉類型的方法小結(jié)

    這篇文章主要介紹了python模擬enum枚舉類型的方法,實(shí)例總結(jié)了python模擬enum枚舉類型的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python使用redis模塊來跟redis實(shí)現(xiàn)交互

    python使用redis模塊來跟redis實(shí)現(xiàn)交互

    這篇文章主要介紹了python使用redis模塊來跟redis實(shí)現(xiàn)交互,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 學(xué)習(xí)python類方法與對(duì)象方法

    學(xué)習(xí)python類方法與對(duì)象方法

    這篇文章主要和大家一起學(xué)習(xí)python類方法與對(duì)象方法,從一個(gè)簡(jiǎn)單例子出發(fā)進(jìn)行學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-03-03

最新評(píng)論

当雄县| 曲阳县| 玉屏| 林甸县| 盱眙县| 武川县| 临颍县| 广德县| 芜湖市| 昌宁县| 九台市| 澄江县| 余江县| 阿瓦提县| 类乌齐县| 平山县| 腾冲县| 广灵县| 马山县| 葫芦岛市| 禹城市| 金川县| 象州县| 左权县| 闻喜县| 太保市| 陆良县| 深圳市| 元阳县| 信阳市| 澳门| 郎溪县| 宜丰县| 高青县| 榆树市| 奇台县| 霞浦县| 大港区| 鹤庆县| 肃宁县| 通州区|