一白华、打開文件
f=open('test.txt','r')
f.close()
此方法走越,文件使用結(jié)束后椭豫,用戶必須關(guān)閉,因為文件對象會占用操作系統(tǒng)的資源。
with open('test.txt','r') as f:
print(f.read)
此方法旨指,引入了with語句來自動調(diào)用close()
方法赏酥。
'r':讀
'w':寫
'a':追加
'r+' == r+w(可讀可寫,文件若不存在就報錯(IOError))
'w+' == w+r(可讀可寫谆构,文件若不存在就創(chuàng)建)
'a+' ==a+r(可追加可寫裸扶,文件若不存在就創(chuàng)建)
二進制文件:
'rb' 'wb' 'ab' 'rb+' 'wb+' 'ab+'
二、讀文件
with open('test.txt','r') as f:
content=f.read()
- read(): 每次讀取整個文件低淡,包括結(jié)束符姓言,以字符串的格式返回。如果文件大于可用內(nèi)存蔗蹋,為了保險起見何荚,可以反復(fù)調(diào)用read(size)方法,每次最多讀取size個字節(jié)的內(nèi)容猪杭。
with open('test.txt','r') as f:
line= f.readline()
if line:
print(line)
- readline() 每次只讀取一行餐塘,包括結(jié)束符,返回的是一個字符串對象皂吮。通常比readlines() 慢得多戒傻。僅當沒有足夠內(nèi)存可以一次讀取整個文件時税手,才應(yīng)該使用 readline()。
with open('test.txt','r') as f:
content=f.readlines()
- readlines(): 一次性讀取整個文件需纳,包括結(jié)束符芦倒,以列表的格式返回。配合 for ... in ... 進行處理不翩。
注意:三種方法把每行末尾的\n也讀進去了兵扬,需要手動刪除
with open('test.txt') as f:
content= f.readlines()
for I in range(len(content)) :
content[I]=content[I].rstrip('\n')
################################
with open('test.txt') as f:
arr=[]
for lines in f.readlines():
lines=lines.replace("\n","").split(",")
arr.append(lines)
三、寫文件
with open('test.txt','w') as f:
f.write('Hi!')
- write(): 和read口蝠、readline器钟、對應(yīng),將字符串寫入妙蔗。
with open('test.txt','w') as f:
f.writelines(["1\n", "2\n", "3\n"])
- writelines(): 和readlines對應(yīng)傲霸,將字符串列表寫入,不會自動加入換行符眉反,所以需要手動加入昙啄。
四、文件夾操作
- 得到當前工作目錄寸五,即當前Python腳本工作的目錄路徑:
os.getcwd()
- 返回指定目錄下的所有文件和目錄名:
os.listdir()
- 函數(shù)用來刪除一個文件:
os.remove()
- 刪除多個目錄:
os.removedirs(r"c:\python")
- 檢驗給出的路徑是否是一個文件:
os.path.isfile()
- 檢驗給出的路徑是否是一個目錄:
os.path.isdir()
- 判斷是否是絕對路徑:
os.path.isabs()
- 檢驗給出的路徑是否真地存:
os.path.exists()
- 返回一個路徑的目錄名和文件名:
os.path.split()
例子:
os.path.split('/home/swaroop/byte/code/poem.txt')
結(jié)果:('/home/swaroop/byte/code', 'poem.txt')
- 分離擴展名:
os.path.splitext()
- 獲取路徑名:
os.path.dirname()
- 獲取文件名:
os.path.basename()
- 運行shell命令:
os.system()
- 讀取和設(shè)置環(huán)境變量:
os.getenv() 與os.putenv()
- 給出當前平臺使用的行終止符:
os.linesep Windows使用'\r\n'跟衅,Linux使用'\n'而Mac使用'\r'
- 指示你正在使用的平臺:
os.name 對于Windows,它是'nt'播歼,而對于Linux/Unix用戶伶跷,它是'posix'
- 重命名:
os.rename(old, new)
- 創(chuàng)建多級目錄:
os.makedirs(r"c:\python\test")
- 創(chuàng)建單個目錄:
os.mkdir("test")
- 獲取文件屬性:
os.stat(file)
- 修改文件權(quán)限與時間戳:
os.chmod(file)
- 終止當前進程:
os.exit()
- 獲取文件大忻啬:
os.path.getsize(filename)
五叭莫、目錄操作
- 創(chuàng)建目錄
os.mkdir("file")
- 復(fù)制文件:
shutil.copyfile("oldfile","newfile") #oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") #oldfile只能是文件夾,newfile可以是文件烁试,也可以是目標目錄
復(fù)制文件夾:
shutil.copytree("olddir","newdir") #olddir和newdir都只能是目錄雇初,且newdir必須不存在
重命名文件(目錄)
os.rename("oldname","newname") #文件或目錄都是使用這條命令
- 移動文件(目錄)
shutil.move("oldpos","newpos")
- 刪除文件
os.remove("file")
- 刪除目錄
os.rmdir("dir") #只能刪除空目錄
shutil.rmtree("dir") #空目錄、有內(nèi)容的目錄都可以刪
- 轉(zhuǎn)換目錄
os.chdir("path") #換路徑