python讀取多次文件read的過程指針,python read方法

本文目錄一覽:

Python讀取文件內容的方法有幾種

python讀取文本文件內容的方法主要有三種:read()、readline()、readlines()。

第一種:read()

read()是最簡單的一種方法,一次性讀取文件的所有內容放在一個大字元串中,即內存中。

read()的好處:方便、簡單,一次性讀出文件放在一個大字元串中,速度最快。

read()的壞處:文件過大的時候,佔用內存會過大。

第二種:readline()

readline()逐行讀取文本,結果是一個list。

readline()的好處:佔用內存小,逐行讀取。

readline()的壞處:逐行讀取,速度比較慢。

第三種:readlines()

readlines()一次性讀取文本的所有內容,結果是一個list。

readlines()的好處:一次性讀取文本內容,速度比較快。

readlines()的壞處:隨著文本的增大,佔用內存會越來越多。

python3用read()函數讀取文件兩次,就變成空字元串了

python在讀取文件的時候是根據游標位置來讀取的。讀一行以後游標位置到了下一行。再來個read又到了下一行。

想要重新從頭開始讀的話用f.seek(0)

將游標位置放到最前面。這樣再f.read()就是第一行的內容

還有個方法是f.tell()

告訴你當前游標的位置。你可以把文件都讀完了以後f.tell()一下看看游標位置

然後再f.seek(0)

再f.tell()一下看看游標位置

with open() as f跟你截圖用的差不多,只不過這種方式不用f.close(),會自動關閉文件句柄。不過也可以手動關閉文件句柄

python 讀取文件

我們需要新建一個文本文檔,這個文檔可以是windox自帶的記事本;

然後我們在其中輸入一些我們想要的信息;

新建好文檔之後,我們需要點擊另存為,把文件保存在一個你知道的地方;

保存的時候,請注意保存格式,不然有可能python打不開;

然後我們打開python的一個編輯器,IDLE;

在編輯器中輸入一下的信息就可以打開文件了;

read是文件讀取,seek是文件的指針重新指到最前面,close是文件關閉。

python對文本文件的讀有哪些方法,寫有哪些方法?

1 文件讀取全文本操作

在一定場景下我們需要把文本全部內容讀取出來,進行處理。python提供三種函數讀取文件,分別是read readline readlines,

read():讀取文件的全部內容,加上參數可以指定讀取的字元。

readline():讀取文件的一行。

readlines():讀取文件的所有行到內存中。

不同場景下我們可以選擇不同函數對文件進行讀取。

1.1 方法一

file_name = input(“請輸入你要打開的文件的完整路徑及名稱”)

file= open(file_name, “r”)

txt=file.read()

# 全文本的處理

file.close()

使用read函數將文件中的內容全部讀取,放在字元串變數txt中。這樣操作適合於文本較小,處理簡單的情況,當文件較大時,這種方式處理時不合適的。一次性讀取較大的文件到內存中,會耗費較多的時間和資源。這時候分批處理效果更好。

1.2 方法二

file_name = input(“請輸入你要打開的文件的完整路徑及名稱”)

file= open(file_name, “r”)

txt= file.read(4)

# 文本的處理while txt != “”txt= file.read(4)

# 批量文本處理

file.close()

這種方法適合於分批處理文本信息,每次批量讀入,批量處理,不會對內存造成較大的壓力。

1.3 方法三

file_name = input(“請輸入你要打開的文件的完整路徑及名稱”)

file= open(file_name, “r”)for line infile.readlines():

# 處理每一行數據

file.close()

這種處理方式適合處理以行為分割特點的文本,並且文本較小,因為這種處理方式需要一次性把文件所有內容讀取到內存中。

1.4 方法四

file_name = input(“請輸入你要打開的文件的完整路徑及名稱”)

file= open(file_name, “r”) # 這裡的file時文件句柄for line infile:

# 處理每一行數據

file.close()

這種方式和方法三中的區別是分行讀入,逐行處理,不會一次性把文件所有內容都讀入到內存中,對一些大文件的處理是很有效的。

2 文件寫入文本操作

文件寫入有兩種寫入函數和一種輔助支持。

write():向文件中寫入一個字元或者位元組流

writelines():將一個元素全為字元串的列表寫入到文件中 需要注意的是,writelines寫入列表元素的時候會把列表元素的內容拼接到一起寫入,不會有換行和空格 。

seek(): 輔助寫入函數offset偏移量參數代表含義如下

0 – 文件開頭

1 – 當前位置

2 – 文件結尾

2.1 方法一

file_name = input(“output.txt”, “w+”)

text= “hello world!”file_name.write(text)

file.close()

2.2 方法二

file_name = input(“output.txt”, “w+”)

list= [“中午”,”早上”,”晚上”]

file_name.writelines(list)for line infile:

# 讀取寫入的數據,這時候發現是沒有任何內容的

file.close()

我們增加一行代碼就可以讀取到寫入的文件內容,利用seek()函數調整寫操作指針的位置,可以實現寫操作之後的正常讀取。

file_name = input(“output.txt”, “w+”)

list= [“中午”,”早上”,”晚上”]

file_name.readlines(list)

file_name.seek(0) # 調整寫的指針到文件的開始位置for line infile:

# 讀取寫入的數據,這時候會讀出一行寫入的數據。

file.close()

python中read() ,readline()以及readlines()區別

該篇文章主要是記錄python中操作文件的三個函數read(),readline()以及readlines()之間的區別。

首先先給出結論:

1.read() 每次讀取整個文件,它通常將讀取到底文件內容放到一個字元串變數中,也就是說 .read() 生成文件內容是一個字元串類型。

2.readline()每隻讀取文件的一行,通常也是讀取到的一行內容放到一個字元串變數中,返回str類型。

3.readlines()每次按行讀取整個文件內容,將讀取到的內容放到一個列表中,返回list類型。

我的文件內容如下:

編寫程序如下:

得出結果如下:

編寫程序如下:

得出輸出結果如下:

編寫程序如下:

得到輸出結果如下:

python讀寫文件

讀文件

    1)使用open()方法打開文件,返回一個文件對象

        原型:open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

        舉例:f = open(‘test.txt’, ‘r’)

        test.txt表示文件路徑(包含文件名,這個file參數可以是絕對或者相對路徑)

        r表示是讀文本文件,rb是讀二進位文本文件。(這個mode參數默認值就是r)

    2)使用close()方法關閉文件

        f.close()

        打開後的文件必須關閉,因為文件對象會佔用系統資源,系統打開文件數量也就有限了

    3)打開文件時的異常處理

        f=open(‘test.txt’, ‘r’)

        f.read()

        f.close()

        FileNotFoundError: [Errno 2] No such file or directory: ‘test.txt’

        文件讀寫時都有可能產生異常IOError(比如文件不存在),這樣其後面的f.read(),f.close()就不會調用。為保證無論是否異常都可以關閉文件,一般使用try … finally來處理:

        try:

            f = open(‘test.txt’, ‘r’)

            f.read()

        finally:

            if f:

                f.close()

        但這種寫法過於繁瑣,所以Python引入了with語句來自動調用close()方法:

        with open(‘test.txt’, ‘r’) as f:

            f.read()

    4)讀文件 – read()、readline() 和 readlines()

        read() 一次讀取整個文件,它通常用於將文件內容放到一個字元串變數中。如果文件過大,內存不夠,可以通過反覆調用read(size)方法,每次最多讀取size個位元組的內容。

        readline() 一次讀取文件中一行內容,可反覆調用

        readlines() 一次讀取所有內容並按行返回列表,該列表可以由for … in … 結構再進一步處理。

        特別注意:

        這三種方法是把每行末尾的’\n’也讀進來了,如有需要就得我們手動去掉’\n’

        with open(‘test.txt’, ‘r’) as f:

            list = f.readlines()

        for i in range(0, len(list)):

            list[i] = list[i].rstrip(‘\n’)

寫文件

    1)寫文件和讀文件是一樣的,唯一區別是open文件時,傳入標識符不同,即’w’或者’wb’表示寫文本文件或寫二進位文件

    f = open(‘test.txt’, ‘w’)

    f = open(‘test.txt’, ‘wb’)

    f = open(‘test.txt’, ‘a’)

    f.close()

    特別注意:

    1. 如果沒有這個文件,會自動創建一個新文件;如果有,就會先把原文件的內容清空再寫入;若不想清空原來的內容而是直接在後面追加新的內容,就用’a’這個模式

    2. 寫文件,操作系統往往不會立刻把數據寫入磁碟,而是放到內存緩存起來,空閑的時候再慢慢寫入。只有調用close()方法時,操作系統才保證把沒有寫入的數據全部寫入磁碟。忘記調用close()的後果是數據可能只寫了一部分到磁碟,剩下的丟失了。

    2)寫文件 – write()、writelines()

    write()方法和read()、readline()方法對應,是將字元串寫入到文件中。

    writelines()方法和readlines()方法對應,也是針對 列表 的操作。它接收一個 字元串列表 作為參數,將他們寫入到文件中。

    特別注意:

    換行符不會自動的加入,需要顯式的加入換行符。

    f = open(‘test.txt’, ‘w’)

    f.writelines([“111\n”, “222\n”, “333\n”])

補充說明:

1)對於非默認編碼(utf-8)的文件,需要open時添加encording參數,選擇對應的編碼方式

2)r+, w+, a+,可讀可寫

3)seek()方法,移動文件指針

seek(offset[, whence]) ,offset是相對於某個位置的偏移量。位置由whence決定,默認whence=0,從開頭起;whence=1,從當前位置算起;whence=2相對於文件末尾移動,通常offset取負值。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/156972.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-18 01:59
下一篇 2024-11-18 01:59

相關推薦

發表回復

登錄後才能評論