檔案操作(下)

純潔的程式碼發表於2020-04-02
<3>讀資料(readlines)
就像read沒有引數時
樣,readlines可以按照
式把整個
件中的內容進
⾏⼀
次性讀取,並且返回的是
個列表,其中每
⼀⾏
的資料為
個元素


#coding=utf-8
f = open('test.txt', 'r') content = f.readlines() print(type(content))
i=1
for temp in content: print("%d:%s"%(i,temp)) i+=1


f.close()



現象:
檔案操作(下)


<4>讀資料(readline


#coding=utf-8


f = open('test.txt', 'r')


content = f.readline() print("1:%s"%content)
content = f.readline() print("2:%s"%content)
f.close()
檔案操作(下)


想:
如果⼀個⽂件很⼤,⽐如5G,試想應該怎樣把⽂件的資料讀取到記憶體然後進⾏處理呢?

檔案操作(下)

1:製作件的備份
任務描述


輸⼊⽂件的名字,然後程式⾃動完成對⽂件進⾏備份


檔案操作(下)
檔案操作(下)


參考程式碼
# 提示輸⼊⽂件
oldFileName =input("請輸⼊要拷⻉的⽂件名字:")
以讀的⽅式開啟⽂件
oldFile =open(oldFileName,'rb')


# 提取⽂件的字尾
fileFlagNum = oldFileName.rfind('.')if fileFlagNum > 0:
fileFlag = oldFileName[fileFlagNum:]


# 組織新的⽂件名字
newFileName =oldFileName[:fileFlagNum] + '[復件]' + fileFlag


# 建立新⽂件
newFile =open(newFileName, 'wb')


# 把舊⽂件中的資料,⼀⾏⼀⾏的進⾏複製到新⽂件中
for lineContentin oldFile.readlines():newFile.write(lineContent)


# 關閉⽂件oldFile.close() newFile.close()
件的定位讀寫
f = open("123.txt", "w+")
f.write("helloworld") content = f.read()
print(content) # 為什麼列印不出內容?


<1>獲取當前讀寫的位置
在讀寫⽂件的過程中,如果想知道當前的位置,可以使⽤tell()來獲取
# 開啟⼀個已經存在的⽂件
f = open("test.txt", "r") str = f.read(3)
print "讀取的資料是 : ", str


# 查詢當前位置
position =f.tell()
print "當前⽂件位置 : ", position


str = f.read(3)
print "讀取的資料是 : ", str


# 查詢當前位置
position =f.tell()
print "當前⽂件位置 : ", position


f.close()



<2>定位到某個位置
如果在讀寫⽂件的過程中,需要從另外⼀個位置進⾏操作的話,可以使⽤seek() seek(offset, from)有2個引數
offset:偏移量
from:⽅向
demo:把位置設定為:從⽂件開頭,偏移5個位元組
如果在讀寫⽂件的過程中,需要從另外⼀個位置進⾏操作的話,可以使⽤seek() seek(offset, from)有2個引數
offset:偏移量 from:⽅向
demo:把位置設定為:從⽂件開頭,偏移5個位元組
demo:把位置設定為:離⽂件末尾,3位元組處
# 開啟⼀個已經存在的⽂件
f = open("test.txt", "r")
# 查詢當前位置
position =f.tell()
print "當前⽂件位置 : ", position
# 重新設定位置
f.seek(-3,2)


# 讀取到的資料為:⽂件最後3個位元組資料
str = f.read()
print "讀取的資料是 : ", str


f.close()

更多學習資料可關注:gzitcast