文件的打開與關(guān)閉
操作文件的整體過程:
- 打開文件,或者新建立一個文件
- 讀/寫數(shù)據(jù)
- 關(guān)閉文件
打開文件
在python,使用open函數(shù)蛔外,可以打開一個已經(jīng)存在的文件,或者創(chuàng)建一個新文件溯乒。
open(文件名夹厌,訪問模式)
示例如下:
f = open('test.txt', 'w')
說明:
關(guān)閉文件
close()
示例:
# 新建一個文件,文件名為:test.txt
f = open('test.txt', 'w')
# 關(guān)閉這個文件
f.close()
文件的讀寫
寫數(shù)據(jù)(write)
使用write()可以完成向文件寫入數(shù)據(jù)裆悄。
示例:
f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()
注意:
- 如果文件不存在那么創(chuàng)建矛纹,如果存在那么就先清空,然后寫入數(shù)據(jù)光稼。
讀數(shù)據(jù)(read)
使用read(num)可以從文件中讀取數(shù)據(jù)或南,num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字節(jié)),如果沒有傳入num艾君,那么就表示讀取文件中所有的數(shù)據(jù)采够。
示例:
f = open('test.txt', 'r')
content = f.read(5)
print(content)
print("-"*30) #打印30個"-"分隔符
content = f.read()
print(content)
f.close()
注意:
- 如果open是打開一個文件,那么可以不用謝打開的模式冰垄,即只寫 open('test.txt');
- 如果使用讀了多次蹬癌,那么后面讀取的數(shù)據(jù)是從上次讀完后的位置開始的。
讀數(shù)據(jù)(readlines)
就像read沒有參數(shù)時一樣,readlines可以按照行的方式把整個文件中的內(nèi)容進(jìn)行一次性讀取逝薪,并且返回的是一個列表隅要,其中每一行的數(shù)據(jù)為一個元素.
#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()
讀數(shù)據(jù)(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()
文件的定位讀寫
獲取當(dāng)前讀寫的位置
在讀寫文件的過程中董济,如果想知道當(dāng)前的位置步清,可以使用tell()來獲取。
# 打開一個已經(jīng)存在的文件
f = open("test.txt", "r")
str = f.read(3)
print "讀取的數(shù)據(jù)是 : ", str
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
str = f.read(3)
print "讀取的數(shù)據(jù)是 : ", str
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
f.close()
定位到某個位置
如果在讀寫文件的過程中感局,需要從另外一個位置進(jìn)行操作的話尼啡,可以使用seek()暂衡。
seek(offset, from)有2個參數(shù):
- offset:偏移量
- from:方向(0表示文件開頭询微,1表示當(dāng)前位置,2表示文件末尾)
示例1:把位置設(shè)置為從文件開頭狂巢,偏移5個字節(jié)
# 打開一個已經(jīng)存在的文件
f = open("test.txt", "r")
str = f.read(30)
print "讀取的數(shù)據(jù)是 : ", str
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
# 重新設(shè)置位置
f.seek(5,0)
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
f.close()
示例2:把位置設(shè)置為離文件末尾撑毛,3字節(jié)處
# 打開一個已經(jīng)存在的文件
f = open("test.txt", "r")
# 查找當(dāng)前位置
position = f.tell()
print "當(dāng)前文件位置 : ", position
# 重新設(shè)置位置
f.seek(-3,2)
# 讀取到的數(shù)據(jù)為:文件最后3個字節(jié)數(shù)據(jù)
str = f.read()
print "讀取的數(shù)據(jù)是 : ", str
f.close()
文件的重命名、刪除
有些時候唧领,需要對文件進(jìn)行重命名藻雌、刪除等一些操作,python的os模塊中都有這么功能.
文件重命名
os模塊中的rename()可以完成對文件的重命名操作
rename(需要修改的文件名, 新的文件名)
示例:
import os
os.rename("畢業(yè)論文.txt", "畢業(yè)論文-最終版.txt")
刪除文件
os模塊中的remove()可以完成對文件的刪除操作
remove(待刪除的文件名)
示例:
import os
os.remove("畢業(yè)論文.txt")
文件夾的相關(guān)操作
實際開發(fā)中斩个,有時需要用程序的方式對文件夾進(jìn)行一定的操作胯杭,比如創(chuàng)建、刪除等受啥。就像對文件操作需要os模塊一樣做个,如果要操作文件夾,同樣需要os模塊滚局。
創(chuàng)建文件夾
import os
os.mkdir("張三")
獲取當(dāng)前目錄
import os
os.getcwd()
改變默認(rèn)目錄
import os
os.chdir("../")
獲取目錄列表
import os
os.listdir("./")
刪除文件夾
import os
os.rmdir("張三")