python學習:文件處理

<1>打開文件

在python,使用open函數,能夠打開一個已經存在的文件,或者建立一個新文件python

open(文件名,訪問模式)函數

示例以下:spa

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

第二個參數mode的默認值是‘r’,可用的mode有如下幾種指針

訪問模式code

說明blog

rci

以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。開發

wrem

打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。get

a

打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。

rb

以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。

wb

以二進制格式打開一個文件只用於寫入。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。

ab

以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容以後。若是該文件不存在,建立新文件進行寫入。

r+

打開一個文件用於讀寫。文件指針將會放在文件的開頭。

w+

打開一個文件用於讀寫。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。

a+

打開一個文件用於讀寫。若是該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。若是該文件不存在,建立新文件用於讀寫。

rb+

以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。

wb+

以二進制格式打開一個文件用於讀寫。若是該文件已存在則將其覆蓋。若是該文件不存在,建立新文件。

ab+

以二進制格式打開一個文件用於追加。若是該文件已存在,文件指針將會放在文件的結尾。若是該文件不存在,建立新文件用於讀寫。

思惟導圖以下(撇開b模式)

 

 

<2>關閉文件

close( )

示例以下:

# 新建一個文件,文件名爲:test.txt
f = open('test.txt', 'w')

# 關閉這個文件
f.close()

文件的讀寫

<1>寫數據(write)

使用write()能夠完成向文件寫入數據

demo:

f = open('test.txt', 'w')
f.write('hello world, i am here!')
f.close()

注意:

  • 若是文件不存在那麼建立,若是存在那麼就先清空,而後寫入數據

<2>讀數據(read)

使用read(num)能夠從文件中讀取數據,num表示要從文件中讀取的數據的長度(單位是字節),若是沒有傳入num,那麼就表示讀取文件中全部的數據

demo:

#讀取指定長度
f = open('test.txt', 'r')
content = f.read(5)
print(content)
#所有讀取
content = f.read()
print(content)
f.close()

注意:

  • 若是open是打開一個文件,那麼能夠不用寫打開的模式,即只寫 open('test.txt')
  • 若是使用讀了屢次,那麼後面讀取的數據是從上次讀完後的位置開始的

<3>讀數據(readlines)

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

 

f=open('aa.txt','w')
f.write('first line\nsecond line\nthird line\n')
f=open('aa.txt','r')
s=f.readlines()
print(s)

結果:

 

 由於返回的是列表,因此返回值是能夠被迭代的,加上循環能夠實現逐一訪問每一行

f=open('aa.txt','w')
f.write('first line\nsecond line\nthird line\n')
f=open('aa.txt','r')
for line in f.readlines():
    print(line)
f.close()

 

<4>讀數據(readline)

當文件有不少行時,能夠用f.readline()進行操做,每次調用這個Method,返回結果都會做爲新的一行被寫入文件

f=open('aa.txt','w')
f.write('first line\nsecond line\nthird line\n')

f=open('aa.txt','r')
s=f.readline()#運行結果:first line
print(s)
s=f.readline()#運行結果:second line
print(s)

<5>寫數據(writelines)

能夠將一個列表寫入一個文件(從0開始,按順序將列表中對應的元素寫入文件的每一行)

aList=['first line\n','second line\n','third line\n']
with open('aa.txt','w') as f:
    f.writelines(aList)
f=open('aa.txt','r')
for line in f.readlines():
    print(line)
f.close()

 

<6>with語句塊

針對文件操做,Python另一個語句塊的寫法更便於閱讀

with open(...)as f:
    f.write(...)

這樣,就能夠把針對當前以特定模式打開的文件的各類操做都寫入同一個語句塊了

with open('aa.txt','w') as f:
    f.write('first line\nsecond line\nthird line\n')
with open('aa.txt','r') as f:
    for line in f.readlines():
        print(line)

使用with語句塊帶來的另外一個額外的好處就是不用寫f.close()了

文件的重命名、刪除

有些時候,須要對文件進行重命名、刪除等一些操做,python的os模塊中都有這麼功能

<1>文件重命名

os模塊中的rename()能夠完成對文件的重命名操做

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

import os
os.rename("a.txt", "aa.txt")

<2>刪除文件

os模塊中的remove()能夠完成對文件的刪除操做

remove(待刪除的文件名)

import os
os.remove("a.txt")

文件夾的相關操做

實際開發中,有時須要用程序的方式對文件夾進行必定的操做,好比建立、刪除等

就像對文件操做須要os模塊同樣,若是要操做文件夾,一樣須要os模塊

<1>建立文件夾

import os
os.mkdir("張三")

<2>獲取當前目錄

import os
os.getcwd()

<3>改變默認目錄

import os
os.chdir("../")

<4>獲取目錄列表

import os
os.listdir("./")

<5>刪除文件夾

import os
os.rmdir("張三")

總結:

文件的基本操做以下:

1.打開文件,能夠直接使用內建函數open(),基本模式有r和w

2.刪除文件,須要調用os模塊,使用os.remove()。在刪除文件以前,最好確認文件真實存在

3.讀寫文件,能夠用f.read(),f.readline(),f.readlines(),f.write(),f.writelines()

4.能夠用with把相關操做都放到一個語句塊中

相關文章
相關標籤/搜索