溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python從文件中讀取數(shù)據(jù)的方法

發(fā)布時(shí)間:2020-08-06 11:25:20 來源:億速云 閱讀:295 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)Python從文件中讀取數(shù)據(jù)的方法的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考。一起跟隨小編過來看看吧。

從文件中讀取數(shù)據(jù)

1. 讀取整個(gè)文件

要讀取文件,首先來創(chuàng)建一個(gè)文件:

然后打開并讀取這個(gè)文件,再將其內(nèi)容顯示到屏幕上:

file_reader.py
with open('pi_digits.txt') as file_object:
    contents = file_object.read()
    print(contents)

解讀上述代碼:

open( ) -> 要以任何方式使用文件,都首先得打開文件,這樣才能訪問它,此時(shí)就需要用到函數(shù)open(),該函數(shù)只接受一個(gè)參數(shù):要打開文件的名稱,同時(shí)返回表示文件的對(duì)象。

with: 不再需要訪問文件后調(diào)用 close( ) 將其關(guān)閉。

read( ) ->讀取文件中的全部內(nèi)容。

運(yùn)行結(jié)果:

3.1415926535
  8979323946
  2643383278

2. 文件路徑

要讓python打開不與程序文件位于同一目錄中的文件,需要提供文件路徑,讓python到系統(tǒng)的特定位置去查找。

文件路徑的表示:

1. 相對(duì)路徑 -> 文件相對(duì)于當(dāng)前運(yùn)行程序所在的目錄。eg. 在程序所在文件夾C:\Users\yxf\Desktop\python_pycharm新建一個(gè)文件夾text_file用于存儲(chǔ)文件pi_digits.txt,此時(shí)就需要這樣編寫代碼:

with open('text_files\pi_digits.txt') as file_object:

2. 絕對(duì)文件路徑 -> 文件所在完整路徑。絕對(duì)路徑比相對(duì)路徑更長,故可將路徑存儲(chǔ)在一個(gè)變量中,再將變量傳遞給 open( ):

file_path = r'C:\Users\yxf\Desktop\python_pycharm\text_files\pi_digits.txt'
with open(file_path) as file_object:

由于文件路徑中使用的是反斜杠,在python中被視為轉(zhuǎn)義字符,故需要在開頭的單引號(hào)前加上r。

3. 逐行讀取

每次以一行的方式檢查文件:

file_name = 'pi_digits.txt'
with open(file_name) as file_object:
    for line in file_object:
        print(line)

 運(yùn)行結(jié)果:

3.1415926535
  8979323946
  2643383278

通過對(duì)文件對(duì)象使用for循環(huán)來遍歷文件中的每一行,但運(yùn)行結(jié)果顯示的每一行后邊多了空白行,這是為什么呢?文件中每行的末尾都有一個(gè)看不見的換行符,而print語句也會(huì)加上一個(gè)換行符。為消除這些空白行,可在print語句中使用 rstrip( ):

print(line.rstrip())

這樣輸出與文件內(nèi)容就完全相同了。

4. 創(chuàng)建一個(gè)包含文件各行內(nèi)容的列表

file_name = 'pi_digits.txt'
with open(file_name) as file_object:
    lines = file_object.readlines()
for line in lines:
    print(line.rstrip())

方法readlines():從文件中讀取每一行,并將其存儲(chǔ)在列表中。

5. 使用文件的內(nèi)容

file_name = 'pi_digits.txt'
with open(file_name) as file_object:
    lines = file_object.readlines()    # 將文件內(nèi)容存儲(chǔ)在列表中
pi_string = ''    # 新建一個(gè)空字符串
for line in lines:
    pi_string = pi_string + line.rstrip()    # 刪除空白行并轉(zhuǎn)換為字符串
print(pi_string)    # 打印字符串
print(len(pi_string))    # 打印字符串長度

運(yùn)行結(jié)果:

3.1415926535  8979323946  2643383278
36

 運(yùn)行結(jié)果中包含了位于每行左邊的空格,為刪除這些空格,可使用 strip() 而不是 rstrip(),運(yùn)行可得:

3.141592653589793239462643383278
32

6. 包含一百萬位的大型數(shù)據(jù)

一百萬位的文件下載過慢,就復(fù)制使用了其中的一小部分,并打印到小數(shù)點(diǎn)后的50位:

file_name = 'pi_xx_digits.txt'
with open(file_name) as file_object:
    lines = file_object.readlines()  # 將文件內(nèi)容存儲(chǔ)在列表中
pi_string = ''  # 新建一個(gè)空字符串
for line in lines:
    pi_string = pi_string + line.strip()  # 刪除空白行并轉(zhuǎn)換為字符串
print(pi_string[: 52])  # 打印字符串
print(len(pi_string))  # 打印字符串長度

運(yùn)行結(jié)果:

3.14159265358979323846264338327950288419716939937510
1483

由運(yùn)行結(jié)果可知保存了小數(shù)點(diǎn)后的1481位在文件 pi_xx_digits.txt 中。

7. 圓周率中包含你的生日嗎

可以檢測(cè)圓周率值的前1483位中是否包含自己的生日:

file_name = 'pi_xx_digits.txt'
with open(file_name) as file_object:
    lines = file_object.readlines()
pi_string = ''
for line in lines:
    pi_string = pi_string + line.strip()
birthday = input('Enter your birthday, in the form mmddyy: ')
if birthday in pi_string:
    print('Your birthday appears in the first 1483 digits of pi!')
else:
    print('Your birthday does not appears in the first 1483 digits of pi.')

感謝各位的閱讀!關(guān)于Python從文件中讀取數(shù)據(jù)的方法就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI