python文件IO相關

python對文件IO的支持很完善,python3更是針對編碼形成了一套更完整的體系。文件操作主要可以分爲文件操作、目錄操作和其他常用操作三類,以下依次說明,常用方法依舊使用粗體標出。
本文有部分內容轉載自網上。

常用文件操作方法(注意文件指針概念)

1.os.mknod(“test.txt”) 創建空文件
2.fp = open(“test.txt”,w) 直接打開一個文件,如果文件不存在則創建文件
注意:open函數有一個文件指針的重要概念,用白話說即目前在文件的什麼位置執行相關操作,具體在第3條open模式中解釋(此後文件指針簡稱“指針”)。
3.關於open的模式問題:
r 只能讀。
w 只能寫。覆蓋整個文件,不存在則創建。
a 只能寫。從文件底部添加內容,不存在則創建。
解釋:前三種模式只能完成一項操作。r模式最初將指針置於文件開頭;w模式覆蓋原先文件內容,最初將指針置於文件開頭;a模式從文件末尾追加數據,因此最初將指針置於文件末尾。
r+ 可讀可寫。不會創建不存在的文件,從頂部開始寫,會覆蓋之前此位置的內容。
w+ 可讀可寫。如果文件存在,則覆蓋整個文件不存在則創建。
a+ 可讀可寫。從文件頂部讀取內容,從文件底部添加內容,不存在則創建。
解釋:後三種模式實現了多種功能,在功能上也有一定重合。r+最初將指針置於文件開頭,在本次write操作後,與我們日常輸入文本的光標相似,指針會移到輸入內容之後(因此這時不能read出之前寫入的內容)。w+與r+類似,但r+對不存在的文件會報錯,w+則會創建文件。a+的指針最初放在文件末尾。可以使用f.tell()獲得當前指針位置,使用f.seek()修改指針位置。

常用目錄操作方法

1.創建目錄 os.mkdir(“file”)
2.刪除文件 os.remove(“file”)
3.判斷目錄是否存在 os.path.exists(“dir”)

常用其他操作

1.得到當前工作目錄,即當前Python腳本工作的目錄路徑: os.getcwd()
2.返回指定目錄下的所有文件和目錄名:os.listdir()
3.運行shell命令: os.system()
4.創建多級目錄:os.makedirs(r”c:\python\test”)
5.創建單個目錄:os.mkdir(“test”)

文件綜合操作實例

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#'連接符'.join(list) 將列表組成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目錄與文件
        lists = file_path[1].split('.') #分割出文件與文件擴展名
        file_ext = lists[-1] #取出後綴名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意這裏的i是一個陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路徑處理上很有用
img_dir = 'D:\\xx\\xx\\images'
img_dir = img_dir.replace('\\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程序運行耗時:%0.2f'%(c))
print('總共處理了 %s 張圖片'%(i))

其他方法

文件操作
rb:以二進制讀模式打開
wb:以二進制寫模式打開
ab:以二進制追加模式打開
rb+:以二進制讀寫模式打開
wb+:以二進制讀寫模式打開
ab+:以二進制讀寫模式打開

fp.read([size]):size爲讀取的長度,以byte爲單位
fp.readline([size]):讀一行,如果定義了size,有可能返回的只是一行的一部分。
fp.readlines([size]):把文件每一行作爲一個list的一個成員,並返回這個list。其實它的內部是通過循環調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能只讀到文件的一部分。
fp.write(str):把str寫到文件中,write()並不會在str後加上一個換行符。
fp.writelines(seq):把seq的內容全部寫到文件中(多行一次性寫入)。這個函數也只是忠實地寫入,不會在每行後面加上任何東西。
fp.close():關閉文件。python會在一個文件不用後自動關閉文件,不過這一功能沒有保證,最好還是養成自己關閉的習慣。 如果一個文件在關閉後還對其進行操作會產生。

目錄操作

1.複製文件:
shutil.copyfile(“oldfile”,”newfile”) #oldfile和newfile都只能是文件
shutil.copy(“oldfile”,”newfile”) #oldfile只能是文件夾,newfile可以是文件,也可以是目標目錄
2.複製文件夾:
3.shutil.copytree(“olddir”,”newdir”) #olddir和newdir都只能是目錄,且newdir必須不存在
4.重命名文件(目錄)
os.rename(“oldname”,”newname”) #文件或目錄都是使用這條命令
5.移動文件(目錄)
shutil.move(“oldpos”,”newpos”)
6.刪除目錄
os.rmdir(“dir”) #只能刪除空目錄
shutil.rmtree(“dir”) #空目錄、有內容的目錄都可以刪
7.轉換目錄
os.chdir(“path”) #換路徑

其他操作
1.函數用來刪除一個文件:os.remove()
2.刪除多個目錄:os.removedirs(r”c:\python”)
3.檢驗給出的路徑是否是一個文件:os.path.isfile()
4.檢驗給出的路徑是否是一個目錄:os.path.isdir()
5.判斷是否是絕對路徑:os.path.isabs()
6.檢驗給出的路徑是否真地存:os.path.exists()
7.返回一個路徑的目錄名和文件名:os.path.split()
8.分離擴展名:os.path.splitext()
9.獲取路徑名:os.path.dirname()
10.獲取文件名:os.path.basename()
11.讀取和設置環境變量:os.getenv() 與os.putenv()
12.給出當前平臺使用的行終止符:os.linesep Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’
13.指示你正在使用的平臺:os.name 對於Windows,它是’nt’,而對於Linux/Unix用戶,它是’posix’
14.重命名:os.rename(old, new)
15.獲取文件屬性:os.stat(file)
16.修改文件權限與時間戳:os.chmod(file)
17.終止當前進程:os.exit()
18.獲取文件大小:os.path.getsize(filename)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章