python檔案操作

2022-08-01 10:18:10 字數 3942 閱讀 8410

開啟檔案時,需要指定檔案路徑和以何等方式開啟檔案,開啟後,即可獲取該檔案控制代碼,日後通過此檔案控制代碼對該檔案操作。

開啟檔案的模式有:

"+" 表示可以同時讀寫某個檔案

"b"表示以位元組的方式操作

注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼

table檔案物件方法

方法

描述

f.close()

關閉檔案,記住用open()開啟檔案後一定要記得關閉它,否則會占用系統的可開啟檔案控制代碼數。

f.fileno()

獲得檔案描述符,是乙個數字

f.flush()

重新整理輸出快取

f.isatty()

如果檔案是乙個互動終端,則返回true,否則返回false。

f.read([count])

讀出檔案,如果有count,則讀出count個位元組。

f.readline()

讀出一行資訊。

f.readlines()

讀出所有行,也就是讀出整個檔案的資訊。

f.seek(offset[,where])

把檔案指標移動到相對於where的offset位置。where為0表示檔案開始處,這是預設值 ;1表示當前位置;2表示檔案結尾。

f.tell()

獲得檔案指標位置。

f.truncate([size])

擷取檔案,使檔案的大小為size。

f.write(string)

把string字串寫入檔案。

f.writelines(list)

把list中的字串一行一行地寫入檔案,是連續寫入檔案,沒有換行。

read(3)代表讀取3個字元,其餘的檔案內游標移動是以位元組為單位,如:seek,tell,read,truncate

f.flush()      #講檔案內容從記憶體刷到硬碟(python3.x)

f.closed       #檔案如果關閉則返回true

f.encoding   #檢視使用open開啟檔案的編碼

f.tell()         #檢視檔案處理當前的游標位置

f.seek(3)     #從開頭開始算,將游標移動到第三個位元組

f.truncate(10) #從開頭開始算,將檔案只保留從0-10個位元組的內容,檔案必須以寫方式開啟,但是w和w+除外。

普通讀取

f = open('

lyrics

') #

開啟檔案

first_line = f.readline() #

讀取一行資訊

data = f.read()#

讀取所有內容,檔案大時不要用

print(data) #

列印檔案

f.close() #

關閉檔案

對二進位制的內容進行讀寫

f = open("

yesterday2

",'wb

') #

檔案控制代碼 二進位制檔案

f.write("

hello binary\n

".encode())

f.close()

高效能讀取檔案

f=open('

yesterday

','r

',encoding='

utf-8')

for line in

f

print

(f.strip())

f.close

f=open('

yesterday2

','w

',encoding='

utf-8')

f.write(

'nihao')

f.close()

seek():移動檔案讀取指標到指定位置

語法:file.seek(offset,whence=0)

-->offset:偏移量,需要向前或向後移動的位元組數,正往結束方向移動,負往開始方向移動。

-->whence:可選值,預設為0,這意味著絕對的檔案定位,

1這意味著尋求相對於當前位置,

2表示相對於檔案的末尾。

tell():返回檔案讀取指標的位置

f = open("

yesterday2

",'r

',encoding="

utf-8")

print(f.tell()) #

按字元計數

#print(f.readline()) #按字元進行讀取

#print(f.read(5)) #唯讀5個字元

print

(f.tell())

#回到第哪個字元

f.seek(0) #

回到第0個字元

f.seek(10) #

回到第10字元

print(f.readline())

讀取最後一行

f=open('

yesterday2

','rb')

for i in

f: offs = -10

while

true:

f.seek(offs,2) #

從最後一行往前找

data = f.readlines() #

一行一行找

if len(data) > 1:

print('

檔案的最後一行是:%s

' % (data[-1]).decode('

utf-8

')) #

讀取檔案最後一行

break

offs *= 2 #

相當於兩倍檔案的內容中查詢

f.close()

說明:寫入的內容是存放在電腦的快取中的,只有flush了一下,才會儲存到硬碟中去。

#剛寫完一行內容,如果斷電,他就沒有寫進去,斷電記憶體中資料就會丟失。如果沒有斷電,資料還在記憶體的快取中,需要重新整理一下,才能寫到硬碟中。

#記憶體有乙個大小限制,需要達到這個大小,才會把記憶體快取中的內容寫到硬碟中。

進度條:

#

!/usr/bin/env python

#-*- coding:utf-8 -*-

import

sys,time

for i in range(50):

sys.stdout.write("#

")sys.stdout.flush()

time.sleep(0.1)

f = open("

yesterday2

",'a

',encoding="

utf-8

") #

檔案控制代碼

f.seek(10)

f.truncate(20)

with open('

log','r'

) as f:

...

開啟多個

with open("

yesterday2

",'r

',encoding="

utf-8

") as f ,\

open(

"yesterday2

", '

r', encoding="

utf-8

") as f2:

for line in

f:

print(line)

參考:

python 檔案操作

簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...

python檔案操作

1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...

Python 檔案操作

1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...