成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python基礎(chǔ)之(六)文件

wuyangnju / 2712人閱讀

摘要:它則是以行為單位返回字符串,也就是每次讀一行,依次循環(huán),如果不限定,直到最后一個返回的是空字符串,意味著到文件末尾了。

讀文件

在某個文件夾下面建立了一個文件,名曰:130.txt,并且在里面輸入了如下內(nèi)容:

learn python
http://qiwsir.github.io
[email protected]
f = open("123.txt") #打開已經(jīng)存在的文件,此文件在當(dāng)前目錄,若在其他目錄使用絕對路徑
for line in f:
    print line, #Python 3: print(line, end="")

learn python
http://qiwsir.github.io
[email protected]

緊接著做下面的操作:

>>> for line2 in f:     #在前面通過for循環(huán)讀取了文件內(nèi)容之后,再次讀取,
...     print line2         #然后打印,結(jié)果就什么也顯示,這是什么問題?
...
>>>

這不是什么錯誤,是因為前一次已經(jīng)讀取了文件內(nèi)容,并且到了文件的末尾了。再重復(fù)操作,就是從末尾開始繼續(xù)讀了。當(dāng)然顯示不了什么東西,但是Python并不認(rèn)為這是錯誤。

在這里,如果要再次讀取,那就從新f = open("130.txt")。

創(chuàng)建文件
f = open("1234.txt","w") #創(chuàng)建文件
f.write("hello") #向文件寫入內(nèi)容
f.close() #關(guān)閉文件流

創(chuàng)建文件,我們同樣是用open()這個函數(shù),但是多了個"w",這是在告訴Python用什么樣的模式打開文件。也就是說,用open()操作文件,可以有不同的模式。看下表:

模式 描述
r 以讀方式打開文件,可讀取文件信息。
w 以寫方式打開文件,可向文件寫入信息。如文件存在,則清空該文件,再寫入新內(nèi)容
a 以追加模式打開文件(即一打開文件,文件指針自動移到文件末尾),如果文件不存在則創(chuàng)建
r+ 以讀寫方式打開文件,可對文件進行讀和寫操作。
w+ 消除文件內(nèi)容,然后以讀寫方式打開文件。
a+ 以讀寫方式打開文件,并把文件指針移到文件尾。
b 以二進制模式打開文件,而不是以文本模式。該模式只對Windows或Dos有效,類Unix的文件是用二進制模式進行操作的。

從表中不難看出,不同模式下打開文件,可以進行相關(guān)的讀寫。那么,如果什么模式都不寫,像前面那樣呢?那樣就是默認(rèn)為r模式,只讀的方式打開文件。

使用with

使用with實現(xiàn)安全的關(guān)閉文件,不用close操作了

>>> with open("130.txt","a") as f:
...     f.write("
This is about "with...as..."")
...
>>> with open("130.txt","r") as f:
...     print f.read()
...
learn python
http://qiwsir.github.io
[email protected]
hello

This is about "with...as..."
>>>
文件狀態(tài)
import os
file_stat = os.stat("123.txt")
print file_stat

posix.stat_result(st_mode=33188, st_ino=13575445, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=57,
st_atime=1470988267,
st_mtime=1470988267,
st_ctime=1470988267) #文件創(chuàng)建時間
read/readLine/readLines

read:如果指定了參數(shù)size,就按照該指定長度從文件中讀取內(nèi)容,否則,就讀取全文。被讀出來的內(nèi)容,全部塞到一個字符串里面。這樣有好處,就是東西都到內(nèi)存里面了,隨時取用,比較快捷;“成也蕭何敗蕭何”,也是因為這點,如果文件內(nèi)容太多了,內(nèi)存會吃不消的。文檔中已經(jīng)提醒注意在“non-blocking”模式下的問題,關(guān)于這個問題,不是本節(jié)的重點,暫時不討論。

readline:那個可選參數(shù)size的含義同上。它則是以行為單位返回字符串,也就是每次讀一行,依次循環(huán),如果不限定size,直到最后一個返回的是空字符串,意味著到文件末尾了(EOF)。

readlines:size同上。它返回的是以行為單位的列表,即相當(dāng)于先執(zhí)行readline(),得到每一行,然后把這一行的字符串作為列表中的元素塞到一個列表中,最后將此列表返回。

有這樣一個文檔,you.md,其內(nèi)容和基本格式如下:

    You Raise Me Up
    When I am down and, oh my soul, so weary;
    When troubles come and my heart burdened be;
    Then, I am still and wait here in the silence,
    Until you come and sit awhile with me.
    You raise me up, so I can stand on mountains;
    You raise me up, to walk on stormy seas;
    I am strong, when I am on your shoulders;
    You raise me up: To more than I can be.

分別用上述三種函數(shù)讀取這個文件。

>>> f = open("you.md")
>>> content = f.read()
>>> content #結(jié)果為字符串
"You Raise Me Up
When I am down and, oh my soul, so weary;
When troubles come and my heart burdened be;
Then, I am still and wait here in the silence,
Until you come and sit awhile with me.
You raise me up, so I can stand on mountains;
You raise me up, to walk on stormy seas;
I am strong, when I am on your shoulders;
You raise me up: To more than I can be.
"
>>> f.close()
>>> print content
>>> f = open("you.md")
>>> f.readline()
"You Raise Me Up
"
>>> f.readline()
"When I am down and, oh my soul, so weary;
"
>>> f.readline()
"When troubles come and my heart burdened be;
"
>>> f.close()

f = open("you.md")
while True:
   line = f.readline()
   if not line:         #到EOF,返回空字符串,則終止循環(huán)
       break
   print line ,         #Python 3: print(line, end="")

f.close()                #別忘記關(guān)閉文件
>>> f = open("you.md")
>>> content = f.readlines()
>>> content #結(jié)果為列表
["You Raise Me Up
", "When I am down and, oh my soul, so weary;
", "When troubles come and my heart burdened be;
", "Then, I am still and wait here in the silence,
", "Until you come and sit awhile with me.
", "You raise me up, so I can stand on mountains;
", "You raise me up, to walk on stormy seas;
", "I am strong, when I am on your shoulders;
", "You raise me up: To more than I can be.
"]

>>> for line in content:
...     print line ,         #Python 3: print(line, end="")
>>> f.close
讀很大的文件fileinput

如果文件太大,就不能用read()或者readlines()一次性將全部內(nèi)容讀入內(nèi)存,可以使用while循環(huán)和readline()來完成這個任務(wù)。

此外,還有一個方法:fileinput模塊

>>> import fileinput
>>> for line in fileinput.input("you.md"):
...     print line ,        #Python 3: print(line, end="")
...
You Raise Me Up
When I am down and, oh my soul, so weary;
When troubles come and my heart burdened be;
Then, I am still and wait here in the silence,
Until you come and sit awhile with me.
You raise me up, so I can stand on mountains;
You raise me up, to walk on stormy seas;
I am strong, when I am on your shoulders;
You raise me up: To more than I can be.

還有一種方法,更為常用:

  >>> for line in f:
    ...     print line ,      #Python 3:  print(line, end="")
    ...
    You Raise Me Up
    When I am down and, oh my soul, so weary;
    When troubles come and my heart burdened be;
    Then, I am still and wait here in the silence,
    Until you come and sit awhile with me.
    You raise me up, so I can stand on mountains;
    You raise me up, to walk on stormy seas;
    I am strong, when I am on your shoulders;
    You raise me up: To more than I can be.

之所以能夠如此,是因為文件是可迭代的對象,直接用for來迭代即可。

seek

這個函數(shù)的功能是讓指針移動。

>>> f = open("you.md")
>>> f.readline()
    "You Raise Me Up
"
    >>> f.readline()
    "When I am down and, oh my soul, so weary;
"

>>> f.seek(0)  #回到文件的最開始位置
>>> f.readline()
    "You Raise Me Up
"

此時指針?biāo)诘奈恢茫€可以用`tell()`來顯示,如

>>> f.tell()
    17L

seek()還有別的參數(shù),具體如下:

seek(...)
seek(offset[, whence]) -> None. Move to new file position.

whence的值:

默認(rèn)值是0,表示從文件開頭開始計算指針偏移的量(簡稱偏移量)。這是offset必須是大于等于0的整數(shù)。

是1時,表示從當(dāng)前位置開始計算偏移量。offset如果是負(fù)數(shù),表示從當(dāng)前位置向前移動,整數(shù)表示向后移動。

是2時,表示相對文件末尾移動。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38206.html

相關(guān)文章

  • 基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • python綜合學(xué)習(xí)機器學(xué)習(xí)

    摘要:通過前面幾節(jié)的學(xué)習(xí),已經(jīng)奠定了通往學(xué)習(xí)的基礎(chǔ),從這節(jié)開始,來學(xué)習(xí)機器學(xué)習(xí)。一什么是機器學(xué)習(xí)機器學(xué)習(xí)讓機器從數(shù)據(jù)中學(xué)習(xí),進而得到一個更加符合現(xiàn)實規(guī)律的模型,通過對模型的使用使得機器比以往表現(xiàn)的更好,這就是機器學(xué)習(xí)。 通過前面幾節(jié)的學(xué)習(xí),已經(jīng)奠定了通往AI學(xué)習(xí)的基礎(chǔ),從這節(jié)開始,來學(xué)習(xí)機器學(xué)習(xí)。 一、什么是機器學(xué)習(xí) 機器學(xué)習(xí)(MachineLearning):讓機器從數(shù)據(jù)中學(xué)習(xí),進而得到一...

    JackJiang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<