5.24總結

1、打開文件

在python,使用open函數,可以打開一個已經存在的文件,或者創建一個新文件

open(文件名,訪問模式)

示例如下:

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

說明:

2、關閉文件

close( )

示例如下:

#新建一個文件,文件名為:test.txt

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

#關閉這個文件

f.close()

3、路徑

linux

windows

4、文件的讀寫

寫數據(write)

使用write()可以完成向文件寫入數據

demo:

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

f.write('hello world, i am here!')

f.close()

注意:

?如果文件不存在那么創建,如果存在那么就先清空,然后寫入數據

讀數據(read)

使用read(num)可以從文件中讀取數據,num表示要從文件中讀取的數據的長度(單位是字節),如果沒有傳入num,那么就表示讀取文件中所有的數據

demo:

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

content = f.read(5)

print(content)

print("-"*30)

content = f.read()

print(content)

f.close()

注意:

如果open是打開一個文件,那么可以不用寫打開的模式,即只寫open('test.txt')

如果使用讀了多次,那么后面讀取的數據是從上次讀完后的位置開始的

讀數據(readlines

就像read沒有參數時一樣,readlines可以按照行的方式把整個文件中的內容進行一次性讀取,并且返回的是一個列表,其中每一行的數據為一個元素

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()

讀數據(readline

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

content = f.readline()

print("1:%s"%content)

content = f.readline()

print("2:%s"%content)

f.close()

如果一個文件很大,比如5G,試想應該怎樣把文件的數據讀取到內存然后進行處理呢?

#把舊文件中的數據一行一行復制到新文件中

while 1:

count=oldfile.read(1024) ????#(按1024個字節復制)

if count=='':

break

newfile.write(count)

oldfile.close()

newfile.close()

方法二:

for linecontent in oldfile.readlines():

newfile.write(linecontent)

oldfile.close()

newfile.close()

5、應用1:制作文件的備份

任務描述:

輸入文件的名字,然后程序自動完成對文件進行備份

參考代碼:

oldFileName = input("請輸入要拷貝的文件名字:")

oldFile = open(oldFileName,'r')

#如果打開文件

if oldFile:

#提取文件的后綴

fileFlagNum = oldFileName.rfind('.')

if fileFlagNum > 0:

fileFlag = oldFileName[fileFlagNum:]

#組織新的文件名字

newFileName = oldFileName[:fileFlagNum] + '[復件]' + fileFlag

#創建新文件

newFile = open(newFileName, 'w')

#把舊文件中的數據,一行一行的進行復制到新文件中

for lineContent in oldFile.readlines():

newFile.write(lineContent)

#關閉文件

oldFile.close()

newFile.close()

6、文件的隨機讀寫

6.1、獲取當前讀寫的位置

在讀寫文件的過程中,如果想知道當前的位置,可以使用tell()來獲取

從0開始到字符的個數

#打開一個已經存在的文件

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()

6.2、定位到某個位置

如果在讀寫文件的過程中,需要從另外一個位置進行操作的話,可以使用seek()

seek(offset, from)有2個參數

1.offset:偏移量

2.from:方向

a)0:表示文件開頭(python3)

b)1:表示當前位置(python2)

c)2:表示文件末尾(python2)

demo:把位置設置為:從文件開頭,偏移5個字節

#打開一個已經存在的文件

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

str = f.read(30)

print ("讀取的數據是: ", str)

#查找當前位置

position = f.tell()

print ("當前文件位置: ", position)

#重新設置位置

f.seek(5,0)

#查找當前位置

position = f.tell()

print ("當前文件位置: ", position)

f.close()

demo:把位置設置為:離文件末尾,3字節處

#打開一個已經存在的文件

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

#查找當前位置

position = f.tell()

print ("當前文件位置: ", position)

#重新設置位置

f.seek(-3,2)

#讀取到的數據為:文件最后3個字節數據

str = f.read()

print ("讀取的數據是: ", str)

f.close()

7、文件的重命名、刪除

7.1、文件重命名

os模塊中的rename()可以完成對文件的重命名操作

rename(需要修改的文件名,新的文件名)

import os

os.rename("畢業論文.txt", "畢業論文-最終版.txt")

7.2、刪除文件

os模塊中的remove()可以完成對文件的刪除操作

remove(待刪除的文件名)

import os

os.remove("畢業論文.txt")

8、文件夾的相關操作

8.1、創建文件夾

import os

os.mkdir("張三")

8.2、獲取當前目錄

import os

os.getcwd()

8.3、改變默認目錄

import os

os.chdir("../")

8.4、獲取目錄列表

import os

os.listdir("./")

8.5、刪除文件夾

import os

os.rmdir("張三")

9、應用2:批量修改文件名

#批量在文件名前加前綴

import os

funFlag = 1 # 1表示添加標志2表示刪除標志

folderName = './renameDir/'

#獲取指定路徑的所有文件名字

dirList = os.listdir(folderName)

#遍歷輸出所有文件名字

for name in dirList:

print name

if funFlag == 1:

newName = '[雍哥出品]-' + name

elif funFlag == 2:

num = len('[雍哥出品]-')

newName = name[num:]

print newName

os.rename(folderName+name, folderName+newName)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容