當前位置:成語大全網 - 書法字典 - Python如何從文件中讀取數據

Python如何從文件中讀取數據

1.1讀取整個文件。

要讀取壹個文件,需要壹個包含多行文本的文件(文件PI_DESC.txt和file_reader.py在同壹個目錄下)。

PI_DESC.txt

3.1415926535

8979323846

2643383279

5028841971

file_reader.py

用open("PI_DESC.txt ")作為file_object:

內容= file_object.read()

打印(目錄)

我們可以看到讀取文件時沒有使用colse()方法,那麽如果文件沒有正確關閉,會不會被損壞?這裏不介紹了,因為我們在open()方法之前引入了關鍵字with,這個關鍵字的作用是在不需要訪問文件後關閉文件。

1.2文件路徑

程序讀取文本文件時,如果沒有給出路徑,會先在當前目錄中搜索,有時我們需要讀取其他文件夾中的路徑,比如:

現在文件PI_DESC.txt存儲在python目錄的子文件夾txt中。

那麽我們讀取文本內容的代碼必須修改為:

用open("txt\PI_DESC.txt ")作為file_object:

內容= file_object.read()

打印(目錄)

傳遞給open參數的參數必須給定相對路徑。

在Windows中,使用反斜杠(\),但在python中,反斜杠被視為轉義字符。在Windows中,最好在路徑開頭的單引號(雙引號)前加上R。

相對路徑:即相對於程序文件的路徑。

絕對路徑:文本在硬盤上存儲的路徑。

如何編寫壹個使用絕對路徑的程序?

用open(r " D:\ python \ txt \ PI _ desc . txt ")作為file_object:

內容= file_object.read()

打印(目錄)

1.3逐行讀取

讀取文件時,可能需要讀取文件中的每壹行。要逐行檢查或修改文件,可以在file對象上使用for循環。

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

對於file_object中的行:

打印(行)

程序運行結果如下:

通過運行結果可以看到,打印結果中間有很多空行。這些空行是怎麽來的?因為在這個文件中,每壹行的末尾都有壹個看不見的換行符,print語句也會添加壹個換行符,所以每壹行的末尾都有兩個換行符:壹個來自文件,壹個來自打印。要消除這些換行符,只需使用rstrip()方法。

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

對於file_object中的行:

print(line.rstrip())

打印結果

通過運行結果可以看到,打印結果中間有很多空行。這些空行是怎麽來的?因為在這個文件中,每壹行的末尾都有壹個看不見的換行符,print語句也會添加壹個換行符,所以每壹行的末尾都有兩個換行符:壹個來自文件,壹個來自打印。要消除這些換行符,只需使用rstrip()方法。

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

對於file_object中的行:

print(line.rstrip())

打印結果

1.4創建壹個包含文件每行內容的列表。

當使用關鍵字with時,open()返回的file對象只能在with代碼塊中使用。如果要在with代碼塊之外訪問文件的內容,可以將文件的行存儲在with代碼塊中的列表中,並在with代碼塊之外使用該列表。

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

lines = file _ object . readlines()for line in lines:

print(line.rstrip())

1.5使用文件的內容

在上壹節中,我們提到了將數據提取到內存中,因此我們可以對數據做任何我們想做的事情。

需要:壹起打印pi(去掉空格),打印其長度。

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

lines = file _ object . read lines()pi _ str = ' ' for line in lines:

pi _ str+= line . strip()print(pi _ str . rst rip())print(len(pi _ str . rst rip()))

file_path = 'txt\PI_DESC.txt ',open(file_path)為file_object:

lines = file _ object . read lines()pi _ str = ' ' for line in lines:

pi _ str+= line . strip()print(pi _ str . rst rip())print(len(pi _ str . rst rip()))

請註意,最終的print語句沒有縮進。如果是縮進的,就每行打印。

打印效果如下