機器學(xué)習(xí)之python學(xué)習(xí)(十九)

今天來學(xué)習(xí)python中的文件操作這是很關(guān)鍵的,
這次先學(xué)習(xí)文件的讀寫,需要注意的是文件的權(quán)限的問題。
總結(jié)如下最常用的權(quán)限:

權(quán)限 備注
r 打開只讀文件,該文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0, 即該文件內(nèi)容會消失。若文件不存在則建立該文件。
r+ 打開可讀寫的文件,該文件必須存在。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內(nèi)容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,即文件原先的內(nèi)容會被保留。
a+ 以附加方式打開可讀寫的文件。 若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,即文件原先的內(nèi)容會被保留。

總結(jié)下來有+的均可以讀寫。

只使用權(quán)限w寫入的時候每一行會產(chǎn)生空行。

解決方法: 使用權(quán)限wb寫入的時候不會產(chǎn)生空行。

你們也可以參考廖雪峰大神的python教學(xué)快速入門。

代碼塊

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author  : SundayCoder-俊勇
# @File    : filelearn.py
# 今天我們來學(xué)習(xí)一下python中文件的操作。
# 很多機器學(xué)習(xí)需要讀入csv文件
# 所以文件的操作是機器學(xué)習(xí)必須學(xué)會的一個技能
# (1)文件的打開和關(guān)閉[不標(biāo)準(zhǔn)的寫法]
f=open('hello.txt','r')
print f.read()
f.close()
# 文件的操作的最后一步必須是關(guān)閉文件。
# 因為read()函數(shù)是一次性輸出文件的所有數(shù)據(jù)
# 所以輸出結(jié)果為:
# hello wolrd
# 你好啊
# (2)文件打開過程中會有錯誤,所以可以使用try-finally來處理錯誤
# 文件的打開與關(guān)閉的標(biāo)準(zhǔn)寫法。
try:
    f = open('hello.txt', 'r')
    print f.read()
finally:
    if f:#如果f存在則關(guān)閉
        f.close()
# (3)文件的打開和關(guān)閉每次都這么寫實在太繁瑣,
# 所以,Python引入了with語句來自動幫我們調(diào)用close()方法:
with open('hello.txt', 'r') as f:
    print f.read()
# 注:第三種是最常用的一種方法,必須要掌握的方法。
# (4)如果打開的文件不存在則會報錯:
# with open('hello1.txt', 'r') as f:
#     print f.read()
# 報錯的內(nèi)容為:IOError: [Errno 2] No such file or directory: 'hello1.txt'
# 報錯會提示你打開的文件不存在。
# (5)讀取文件的方法的比較。
# 調(diào)用read()會一次性讀取文件的全部內(nèi)容,
# 如果文件有10G,內(nèi)存就爆了,所以,
# 要保險起見,可以反復(fù)調(diào)用read(size)方法,
# 每次最多讀取size個字節(jié)的內(nèi)容。
# 另外,調(diào)用readline()可以每次讀取一行內(nèi)容,
# 調(diào)用readlines()一次讀取所有內(nèi)容并按行返回list。
# 因此,要根據(jù)需要決定怎么調(diào)用。
# 如果文件很小,read()一次性讀取最方便;
# 如果不能確定文件大小,反復(fù)調(diào)用read(size)比較保險;
# 如果是配置文件,調(diào)用readlines()最方便:

# 例如:
with open('hello.txt', 'r') as f:
    print f.read(2)
# 輸出的結(jié)果為:he
# 注:英文字母一個占一個字節(jié),中文一個占兩個字節(jié)。


# 讀取文件最最常用的一種方法。
with open('hello.txt', 'r') as f:
   for line in f.readlines():#每次讀取一行
       print(line.strip()) # 把每一個行的末尾的'\n'刪掉
# 輸出的結(jié)果:
# hello wolrd
# 你好啊
# (8)文件的寫操作。
# fp.write(str) #把str寫到文件中,
# write()并不會在str后加上一個換行符
# fp.writelines(seq) #把seq的內(nèi)容全部寫到文件中
# (多行一次性寫入)這個函數(shù)也只是忠實地寫入,不會在每行后面加上任何東西。

with open('hello1.txt', 'w') as f:
    f.write("this is  new content")
    # 寫入之后重新查看文檔內(nèi)容
with open('hello1.txt', 'r') as f:
    for line in f.readlines():  # 每次讀取一行
        print(line.strip())  # 把每一個行的末尾的'\n'刪掉
# 輸出的結(jié)果為:this is  new content
# 說明原來的內(nèi)容已經(jīng)被覆蓋掉了,這與文章的權(quán)限有關(guān)。
#文章的權(quán)限總結(jié)如下:
# (1)r 打開只讀文件,該文件必須存在。
# (2)r+ 打開可讀寫的文件,該文件必須存在。
# (3)w 打開只寫文件,若文件存在則文件長度清為0,
# 即該文件內(nèi)容會消失。若文件不存在則建立該文件。
# (4)w+ 打開可讀寫文件,若文件存在則文件長度清為零,
# 即該文件內(nèi)容會消失。若文件不存在則建立該文件。
# (5)a 以附加的方式打開只寫文件。若文件不存在,
# 則會建立該文件,如果文件存在,寫入的數(shù)據(jù)會被加到文件尾,
# 即文件原先的內(nèi)容會被保留。
# (6) a+ 以附加方式打開可讀寫的文件。
# 若文件不存在,則會建立該文件,
# 如果文件存在,寫入的數(shù)據(jù)會被加到文件尾后,
# 即文件原先的內(nèi)容會被保留。




加油一起學(xué)習(xí),更新完畢

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容