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

通過實例解析Python文件操作實現(xiàn)步驟

 更新時間:2020年09月21日 10:41:53   作者:小名叫小明  
這篇文章主要介紹了通過實例解析Python文件操作實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

當程序運行時,變量是保存數(shù)據(jù)的好方法,但變量、序列以及對象中存儲的數(shù)據(jù)是暫時的,程序結束后就會丟失,如果希望程序結束后數(shù)據(jù)仍然保持,就需要將數(shù)據(jù)保存到文件中。

Python 提供了內置的文件對象,以及對文件、目錄進行操作的內置模塊,通過這些技術可以很方便地將數(shù)據(jù)保存到文件(如文本文件等)中。

一、文件的概念

在計算機中,文件是以二進制的方式保存在磁盤上的。

文件分為文本文件和二進制文件。

1、文本文件

可以使用文本編輯軟件查看,本質上還是二進制文件,例如:python 的源程序。

2、二進制文件

保存的內容不是給人直接閱讀的,而是提供給其他軟件使用的。例如:圖片文件、音頻文件、視頻文件等等,二進制文件不能使用文本編輯軟件查看。

Python 中,對文件的操作有很多種,常見的操作包括創(chuàng)建、刪除、修改權限、讀取、寫入等,這些操作可大致分為以下 2 類:

刪除、修改權限:作用于文件本身,屬于系統(tǒng)級操作。
寫入、讀取:是文件最常用的操作,作用于文件的內容,屬于應用級操作。

二、文件的基本操作

1、操作文件的步驟

文件的應用級操作可以分為以下 3 步,每一步都需要借助對應的函數(shù)實現(xiàn):

打開文件:使用 open() 函數(shù),該函數(shù)會返回一個文件對象;

對已打開文件做讀/寫操作:讀取文件內容可使用 read()、readline() 以及 readlines() 函數(shù);向文件中寫入內容,可以使用 write() 函數(shù)。

關閉文件:完成對文件的讀/寫操作之后,最后需要關閉文件,可以使用 close() 函數(shù)。

2、打開文件的方式

在 Python 中,如果想要操作文件,首先需要創(chuàng)建或者打開指定的文件,并創(chuàng)建一個文件對象,而這些工作可以通過內置的 open() 函數(shù)實現(xiàn)。

語法如下:

  • file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])
  • file:表示要創(chuàng)建的文件對象。
  • file_name:要創(chuàng)建或打開文件的文件名稱。
  • mode:用于指定文件的打開模式。默認以只讀(r)模式打開文件。
  • buffering:用于指定對文件做讀寫操作時,是否使用緩沖區(qū)。
  • encoding:手動設定打開文件時所使用的編碼格式,不同平臺的 ecoding 參數(shù)值也不同,以 Windows 為例,其默認為 cp936(實際上就是 GBK 編碼)。

打開文件的常用模式

模式 說明
r 以只讀方式打開文件。文件的指針將會放在文件的開頭,這是默認模式。如果文件不存在,拋出異常
w 以只寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創(chuàng)建新文件
a 以追加方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創(chuàng)建新文件進行寫入
r+ 以讀寫方式打開文件。文件的指針將會放在文件的開頭。如果文件不存在,拋出異常
w+ 以讀寫方式打開文件。如果文件存在會被覆蓋。如果文件不存在,創(chuàng)建新文件
a+ 以讀寫方式打開文件。如果該文件已存在,文件指針將會放在文件的結尾。如果文件不存在,創(chuàng)建新文件進行寫入

文件打開方式

open()是否需要緩沖區(qū)

通常情況下、建議大家在使用 open() 函數(shù)時打開緩沖區(qū),即不需要修改 buffing 參數(shù)的值。

如果 buffing 參數(shù)的值為 0(或者 False),則表示在打開指定文件時不使用緩沖區(qū);如果 buffing 參數(shù)值為大于 1 的整數(shù),該整數(shù)用于指定緩沖區(qū)的大小(單位是字節(jié));如果 buffing 參數(shù)的值為負數(shù),則代表使用默認的緩沖區(qū)大小。

目前為止計算機內存的 I/O 速度仍遠遠高于計算機外設(例如鍵盤、鼠標、硬盤等)的 I/O 速度,如果不使用緩沖區(qū),則程序在執(zhí)行 I/O 操作時,內存和外設就必須進行同步讀寫操作,也就是說,內存必須等待外設輸入(輸出)一個字節(jié)之后,才能再次輸出(輸入)一個字節(jié)。這意味著,內存中的程序大部分時間都處于等待狀態(tài)。

而如果使用緩沖區(qū),則程序在執(zhí)行輸出操作時,會先將所有數(shù)據(jù)都輸出到緩沖區(qū)中,然后繼續(xù)執(zhí)行其它操作,緩沖區(qū)中的數(shù)據(jù)會有外設自行讀取處理;同樣,當程序執(zhí)行輸入操作時,會先等外設將數(shù)據(jù)讀入緩沖區(qū)中,無需同外設做同步讀寫操作。

3、read 方法 —— 讀取文件

read 方法可以一次性讀入并返回文件的所有內容。

read() 函數(shù)的基本語法格式如下:

file.read([size])

其中,file 表示已打開的文件對象;size 作為一個可選參數(shù),用于指定一次最多可讀取的字符(字節(jié))個數(shù),如果省略,則默認一次性讀取所有內容。

如果忘記關閉文件,會造成系統(tǒng)資源消耗,而且會影響到后續(xù)對文件的訪問。

注意:read 方法執(zhí)行后,會把文件指針移動到文件的末尾。

示例:

# 1. 打開 - 文件名需要注意大小寫
file = open("README")

# 2. 讀取
text = file.read()
print(text)

# 3. 關閉
file.close()

在開發(fā)中,通常會先編寫打開和關閉的代碼,再編寫中間針對文件的讀/寫操作!

4、按行讀取文件內容

read 方法默認會把文件的所有內容一次性讀取到內存。

如果文件太大,對內存的占用會非常嚴重。

readline 方法可以一次讀取一行內容,包含最后的換行符“\n”。方法執(zhí)行后,會把文件指針移動到下一行,準備再次讀取。

file.readline([size])

其中,file 為打開的文件對象;size 為可選參數(shù),用于指定讀取每一行時,一次最多讀取的字符(字節(jié))數(shù)。

讀取大文件的正確姿勢

# 打開文件
file = open("README")
while True:
  # 讀取一行內容
  text = file.readline()
  # 判斷是否讀到內容
  if not text:
    break
  # 每讀取一行的末尾已經有了一個 `\n`
  print(text, end="")
# 關閉文件
file.close()

示例:

小文件復制

# 1. 打開文件
file_read = open("README")
file_write = open("README[復件]", "w")

# 2. 讀取并寫入文件
text = file_read.read()
file_write.write(text)

# 3. 關閉文件
file_read.close()
file_write.close()

大文件復制

# 1. 打開文件
file_read = open("README")
file_write = open("README[復件]", "w")

# 2. 讀取并寫入文件
while True:
  # 每次讀取一行
  text = file_read.readline()

  # 判斷是否讀取到內容
  if not text:
    break

  file_write.write(text)

# 3. 關閉文件
file_read.close()
file_write.close()

對于按行來讀取文件,還有一個 readlines() 函數(shù)。

readlines() 函數(shù)用于讀取文件中的所有行,它和調用不指定 size 參數(shù)的 read() 函數(shù)類似,只不過該函數(shù)返回是一個字符串列表,其中每個元素為文件中的一行內容。

和 readline() 函數(shù)一樣,readlines() 函數(shù)在讀取每一行時,會連同行尾的換行符一塊讀取。

5、文件指針

文件指針可以理解為一個標記,它標記從哪個位置開始讀取數(shù)據(jù)。

第一次打開文件時,通常文件指針會指向文件的開始位置,當執(zhí)行了 read 方法后,文件指針默認情況下會移動到讀取內容的末尾。

如果執(zhí)行了一次 read 方法,讀取了所有內容,那么再次調用 read 方法,還能夠獲得到內容嗎?

答案是不能,第一次讀取之后,文件指針移動到了文件末尾,再次調用不會讀取到任何的內容。

# 首先在 README 文件中寫了8個1
# 1. 打開 - 文件名需要注意大小寫
file = open("README")
# 2. 讀取
text = file.read()
print(text)
text = file.read()
print("-" * 10)
print(text)
# 3. 關閉
file.close()
#1111111
#----------
#

6、向文件中寫入數(shù)據(jù)

Python 中的文件對象提供了 write() 函數(shù),可以向文件中寫入指定內容。該函數(shù)的語法格式如下:

file.write(string)
在寫入文件完成后,一定要調用 close() 函數(shù)將打開的文件關閉,否則寫入的內容不會保存到文件中。

這是因為,當我們在寫入文件內容時,操作系統(tǒng)不會立刻把數(shù)據(jù)寫入磁盤,而是先緩存起來,只有調用 close() 函數(shù)時,操作系統(tǒng)才會保證把沒有寫入的數(shù)據(jù)全部寫入磁盤文件中。

寫入文件示例:

# 打開文件
f = open("README", "w")

f.write("hello python!\n")
f.write("今天天氣真好")

# 關閉文件
f.close()

如果向文件寫入數(shù)據(jù)后,不想馬上關閉文件,也可以調用文件對象提供的 flush() 函數(shù),它可以實現(xiàn)將緩沖區(qū)的數(shù)據(jù)寫入文件中。

f = open("a.txt", 'w')
f.write("寫入一行新數(shù)據(jù)")
f.flush()

三、文件/目錄的常用管理操作

在終端 / 文件瀏覽器中可以執(zhí)行常規(guī)的文件 / 目錄管理操作,例如:創(chuàng)建、重命名、刪除、改變路徑、查看目錄內容等等。

在 Python 中,如果希望通過程序實現(xiàn)上述功能,需要導入 os 模塊。

1、文件操作

方法名 說明 示例
rename 重命名文件 os.rename(源文件名, 目標文件名)
remove 刪除文件 os.remove(文件名)

2、目錄操作

方法名 說明 示例
listdir 目錄列表 os.listdir(目錄名)
mkdir 創(chuàng)建目錄 os.mkdir(目錄名)
rmdir 刪除目錄 os.rmdir(目錄名)
getcwd 獲取當前目錄 os.getcwd()
chdir 修改工作目錄 os.chdir(目標目錄)

文件或者目錄的操作都支持相對路徑和絕對路徑。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python三數(shù)之和的實現(xiàn)方式

    Python三數(shù)之和的實現(xiàn)方式

    這篇文章主要介紹了Python三數(shù)之和的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python處理文本數(shù)據(jù)的方法詳解

    Python處理文本數(shù)據(jù)的方法詳解

    學習Python時,它總能讓人深刻體會到這款語言的魅力。今天小編為大家?guī)硪粋€有趣的項目,用Python處理文本數(shù)據(jù),一起來看看今天的問題吧
    2022-06-06
  • 使用python解析json字段的3種方式實例

    使用python解析json字段的3種方式實例

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關于使用python解析json字段的3種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • pandas數(shù)值計算與排序方法

    pandas數(shù)值計算與排序方法

    下面小編就為大家分享一篇pandas數(shù)值計算與排序方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python functools.lru_cache裝飾器性能提升利器深入探究

    Python functools.lru_cache裝飾器性能提升利器深入探究

    本文將詳細介紹functools.lru_cache裝飾器的原理、用法以及適當?shù)膱鼍?以幫助你更好地利用這一功能,它可以用來緩存函數(shù)的輸出,以避免重復計算,從而顯著提高程序的執(zhí)行速度
    2024-01-01
  • Python中的五個神仙級函數(shù)一起來看看

    Python中的五個神仙級函數(shù)一起來看看

    這篇文章主要為大家介紹了Python中的五個神仙級函數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 詳解Python如何在多層循環(huán)中使用break/continue

    詳解Python如何在多層循環(huán)中使用break/continue

    關于break/continue這兩個關鍵字在平常的使用過程中一直比較迷糊。所以本文將詳細講講Python如何在多層循環(huán)中使用break/continue,需要的可以參考一下
    2022-05-05
  • Python中l(wèi)ist列表添加元素的3種方法總結

    Python中l(wèi)ist列表添加元素的3種方法總結

    這篇文章主要介紹了Python中l(wèi)ist列表添加元素的3種方法總結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python模擬登陸淘寶并統(tǒng)計淘寶消費情況的代碼實例分享

    Python模擬登陸淘寶并統(tǒng)計淘寶消費情況的代碼實例分享

    借助urllib、urllib2和BeautifulSoup等幾個模塊的常用爬蟲開發(fā)組合,我們能夠輕易實現(xiàn)一份淘寶對賬單,這里我們就來看一則Python模擬登陸淘寶并統(tǒng)計淘寶消費情況的代碼實例分享:
    2016-07-07
  • 關于微信小程序爬蟲token自動更新問題

    關于微信小程序爬蟲token自動更新問題

    本文主要介紹了關于微信小程序爬蟲關于token自動更新問題,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09

最新評論

平阳县| 淮滨县| 屯门区| 会理县| 永川市| 嵊泗县| 麻城市| 常山县| 章丘市| 卓尼县| 德兴市| 吐鲁番市| 同仁县| 明溪县| 修文县| 松原市| 绥中县| 平邑县| 六盘水市| 淳安县| 石棉县| 平罗县| 农安县| 沙湾县| 赤城县| 山丹县| 惠安县| 长岭县| 崇礼县| 亚东县| 乌鲁木齐县| 库车县| 北碚区| 宣城市| 安平县| 德州市| 晴隆县| 濮阳县| 乌拉特中旗| 彰化县| 色达县|