當前位置:首頁 » 編程語言 » python快速讀文件

python快速讀文件

發布時間: 2023-05-13 00:15:25

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取負值。

㈡ python怎麼讀取txt文件

方法一:


f=open("foo.txt")#返回一個文件對象
line=f.readline()#調用文件的readline()方法
whileline:
printline,#後面跟','將忽略換行符
#print(line,end='')#在Python3中使用
line=f.readline()

f.close()

方法二:
for line in open("foo.txt"):
print line,

方法三:

f=open("c:\1.txt","r")

lines=f.readlines()#讀取全部內容

forlineinlines

printline

黑馬程序員的Python課程非常的全面系統,網上也有很多的免費教程,想學習的小夥伴,可以下載學習下。

㈢ python 讀取文件

各有各的特點,open是一般方法,可以打開一般的文檔。
pandas模塊可以處理大數據,數據分析,數據挖掘等等的用法,其裡面的read_csv()方法可以打開csv格式的資料庫文件,並對數據進行分塊讀取等等的妙用,這是open不能實現的。

一般文本數據可以用open,資料庫等大體積的文件用read_csv

㈣ 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如何讀寫文本文件

1.open使用open打開文件後一定要記得調用文件對象的close()方法。比如可以用try/finally語句來確保最後能關閉文件。
file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
註:不能把open語句放在try塊里,因為當打開文件出現異常時,文件對象file_object無法執行close()方法。
2.讀文件讀文本文件input = open('data', 'r')
#第二個參數默認為r
input = open('data')

讀二進制文件input = open('data', 'rb')
讀取所有內容file_object = open('thefile.txt')
try:
all_the_text = file_object.read( )
finally:
file_object.close( )
讀固定位元組file_object = open('abinfile', 'rb')
try:
while True:
chunk = file_object.read(100)
if not chunk:
break
do_something_with(chunk)
finally:
file_object.close( )
讀每行list_of_all_the_lines = file_object.readlines( )
如果文件是文本文件,還可以直接遍歷文件對象獲取每行:
for line in file_object:
process line
3.寫文件寫文本文件output = open('data.txt', 'w')
寫二進制文件output = open('data.txt', 'wb')
追加寫文件output = open('data.txt', 'a')

output .write("\n都有是好人")

output .close( )

寫數據file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )

㈥ 如何用python快速讀取幾G以上的大文件

如果你沒那麼大的內存 解決方法有幾個:

  1. 使用swap 一次性read()讀取

  2. 系統層面分割大文件為數個小於系統內存的小文件,分別讀取

  3. 使用python 按數據大小逐塊讀取,使用完數據即釋放該部分內存:

whileTrue:
chunk_data=file_object.read(chunk_size)
ifnotchunk_data:
break
yieldchunk_data

㈦ python 讀取文件

#!/usr/bin/python2.7
import random,re
f0=file('proxys.txt','r')
dat0=f0.readlines()
f0.close()
#提取含有$1sec的行(我理解你想按sec的大小排序。)
dat1=[]
for i in dat0:
dat1.append((i,re.search(r'\$(\d+)sec',i).group(1)))
#現在dat1裡面的數據是在原來的每一行前面加了一列sec的值。
dat2=[]
for i in dat1:
if i[0]==1:
dat2.append(i[1])
#現在取出了所有sec==1的行,隨機取一行
dat3=random.choice(dat2)
c1=re.search(r'((\d{1,3}\.?){4}):(\d+)',dat3).group(1)
c2=re.search(r'((\d{1,3}\.?){4}):(\d+)',dat3).group(3)

㈧ 使用 Python 讀寫文件

有些數據是臨時的,它們在應用程序運行時存儲在內存中,然後丟棄。但是有些數據是持久的。它們存儲在硬碟驅動器上供以後使用,而且它們通常是用戶最關心的東西。對於程序員來說,編寫代碼讀寫文件是很常見的,但每種語言處理該任務的方式都不同。本文演示了如何使用 Python 處理文件數據。

在 Linux 上,你可能已經安裝了 Python。如果沒有,你可以通過發行版軟體倉庫安裝它。例如,在 CentOS 或 RHEL 上:

在 macOS 上,你可以使用 MacPorts或Homebrew安裝。在 Windows 上,你可以使用Chocolatey安裝。

一旦安裝了 Python,打開你最喜歡的文本編輯器,准備好寫代碼吧。

如果你需要向一個文件中寫入數據,記住有三個步驟:

這與你在計算機上編碼、編輯照片或執行其他操作時使用的步驟完全相同。首先,打開要編輯的文檔,然後進行編輯,最後關閉文檔。

在 Python 中,過程是這樣的:

這個例子中,第一行以 模式打開了一個文件,然後用變數 f 表示,我使用了 f 是因為它在 Python 代碼中很常見,使用其他任意有效變數名也能正常工作。

在打開文件時,有不同的模式:

第二行表示向文件中寫入數據,本例寫入的是純文本,但你可以寫入任意類型的數據。

最後一行關閉了文件。

對於快速的文件交互,常用有一種簡短的方法可以寫入數據。它不會使文件保持打開狀態,所以你不必記得調用 close 函數。相反,它使用 with 語法:

如果你或你的用戶需要通過應用程序需要向文件中寫入一些數據,然後你需要使用它們,那麼你就需要讀取文件了。與寫入類似,邏輯一樣:

同樣的,這個邏輯反映了你一開始使用計算機就已知的內容。閱讀文檔,你可以打開、閱讀,然後關閉。在計算機術語中,「打開」文件意味著將其載入到內存中。

實際上,一個文本文件內容肯定不止一行。例如,你需要讀取一個配置文件、 游戲 存檔或樂隊下一首歌曲的歌詞,正如你打開一本實體書時,你不可能立刻讀完整本書,代碼也只能解析已經載入到內存中的文件。因此,你可能需要遍歷文件的內容。

示例的第一行指明使用 模式打開一個文件,然後文件交由變數 f 表示,但就像你寫數據一樣,變數名是任意的。 f 並沒有什麼特殊的,它只是單詞 「file」 的最簡表示,所以 Python 程序員會經常使用它。

在第二行,我們使用了 line ,另一個任意變數名,用來表示 f 的每一行。這告訴 Python 逐行迭代文件的內容,並將每一行的內容列印到輸出中(在本例中為終端或IDLE)。

就像寫入一樣,使用 with 語法是一種更簡短的方法讀取數據。即不需要調用 close 方法,方便地快速交互。

使用 Python 有很多方法向文件寫入數據,包括用 JSON、YAML、TOML等不同的格式寫入。還有一個非常好的內置方法用於創建和維護SQLite資料庫,以及許多庫來處理不同的文件格式,包括圖像、音頻和視頻等。

via: https://opensource.com/article/21/7/read-write-files-python

作者:Seth Kenlon選題:lujun9972譯者:MjSeven校對:turbokernel

㈨ python中怎麼讀取文件內容

用open命令打開你要讀取的文件,返回一個文件對象
然後在這個對象上執行read,readlines,readline等命令讀取文件
或使用for循環自動按行讀取文件

熱點內容
電腦版我的世界自救練習伺服器 發布:2025-07-18 06:22:25 瀏覽:263
光遇之前為什麼不在安卓上線 發布:2025-07-18 06:20:17 瀏覽:284
c語言偏移 發布:2025-07-18 06:03:01 瀏覽:889
甘肅雲堤伺服器 發布:2025-07-18 06:02:52 瀏覽:650
狼人殺腳本群 發布:2025-07-18 06:00:45 瀏覽:289
oracle10g安裝linux 發布:2025-07-18 05:53:33 瀏覽:619
百科php 發布:2025-07-18 05:53:33 瀏覽:879
刪除觸發器的sql語句 發布:2025-07-18 05:44:42 瀏覽:678
安卓手機adv是什麼意思 發布:2025-07-18 05:44:02 瀏覽:842
ims醫葯資料庫 發布:2025-07-18 05:33:52 瀏覽:815