日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python文件操作二

發布時間:2024/9/21 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python文件操作二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、常用函數:

  • fileObject.read([size])
    size為讀取的長度,以byte為單位。如果不指定參數,表示一次性讀取全部
    內容,以字符串形式返回,并且每一行結尾會有一個"\n"符號。
    代碼示例1:with open("text.txt","r") as pf: content = pf.read() print content
  • 結果:
    abcede
    123
    this is a test文件操作jfedcba

    代碼示例2:

    with open("text.txt","r") as pf:content = pf.read(2)print content

    結果:
    讀取:ab

  • fileObject.readline( [size] )
    一行,如果給定了size,有可能返回的只是一行的一部分,以字符串的形式返
    回,并且結尾會有一個換行符"\n"。讀完一行,文件操作標記移動到下一行的
    開頭
    列題1
  • with open("text.txt","r") as pf:content = pf.readline()print content

    結果:
    大學之道,在明明德,在親民,在止于至善。
    列題 1:

    with open("text.txt","r") as pf:content = pf.readline(15)print content

    結果:
    大學之道,

  • fileObject.readlines( [size] )
    把文件每一行作為一個list的一個成員,是一個字符串,并且結尾會一個換行符"\n",并返回這個list。這個函數的內部是通過循環調用readline()來實現的。如果指定了size參數,表示讀取文件指定內容的長度,此時就有可能只能讀取文件的一部分
  • with open("text.txt","r") as pf:content = pf.readlines()print contentfor line in content:print line

    結果:

  • fileObject.write( str )
    把str寫到文件中,默認是不加換行符的,所以如果想換行的話,得手動加入換行符'
  • with open("test.txt","w") as pf:pf.write("我是最幫的!!\n學習文件寫入操作")

    結果:
    我是最幫的!!
    學習文件寫入操作

  • fileObject.writelines( seq )
    把seq(序列)的內容全部寫到文件中(多行一次性寫入)。也不會自動加入換行符
    如:
  • content = "我是最幫的!!\n學習文件寫入操作,加油!!!" with open("test.txt","a") as pf:pf.writelines(content)

    結果:
    我是最幫的!!
    學習文件寫入操作我是最幫的!!
    學習文件寫入操作,加油!!!

  • fileObject.close()
    File 對象的 close()方法刷新緩沖區里任何還沒寫入的信息,并關閉該文件,這之后便不能再進行寫入。當一個文件對象的引用被重新指定給另一個文件時,Python 會關閉之前的文件。用 close()方法關閉文件是一個很好的習慣。如果文件關閉后,還對文件進行操作就會產生ValueError錯誤,但如果不及時關閉文件,有可能產生句
    柄泄露,丟失數據
    #打開文件準備寫文件
  • fp = open( "c:\\test.txt",'w') print u"文件名:", fp.name #關閉文件 fp.close() print u"文件是否關閉:", fp.closed

    結果:
    文件名: test.txt
    文件是否關閉: True

  • fileObject.flush()
    該函數是將緩沖區中的內容寫入硬盤

  • fileObject.tell()
    返回文件操作標記的當前位置,以文件的開頭為基準點
  • with open("test.txt","r") as pf:print u"當前文件操作標記位置為:", pf.tell()line = pf.readline()print u"讀取一行后文件操作標記位置為:", pf.tell()

    結果:
    當前文件操作標記位置為: 0
    讀取一行后文件操作標記位置為: 23

  • fileObject.seek( offset[, from ] )
    tell()方法告訴你文件內的當前位置;換句話說,下一次的讀寫會發生在文件開頭這么多字節之后。seek(offset [,from])這是一個文件定位函數,該方法改變當前文件的位置。 Offset變量表示要移動的字節數。From變量指定開始移動字節的參考位置。如果from被設為0(默認值),這意味著將文件的開頭作為移動字節的參考位置。如果設為1,則使用當前的位置作為參考位置。如果它被設為2,那么該文件的末尾將為參考位置。需要注意,如果文件以a或a+的模式打開,每次進行寫操作時,文件操作標記會自動返回到文件末尾。測試文件test.txt,內容如下:
  • with open("test.txt","r") as fp:str = fp.read(18)print u"讀取的字符串是 : ", str# 查找當前位置position = fp.tell()print u"當前文件位置 : ", position# 把指針再次重新定位到文件開頭position = fp.seek(0, 0)str = fp.read(18)print u"重新讀取字符串 : ", str

    結果:
    讀取的字符串是 : 我是最幫的!
    當前文件位置 : 18
    重新讀取字符串 : 我是最幫的!

    fileObject.truncate( [size] )
    把文件裁成規定的大小,默認的是裁到當前文件操作標記的位置。如果size比件的大小還要大,依據系統的不同可能是不改變文件,也可能是用0把文件補到相應的大小,也可能是以一些隨機的內容加上去。

    with open("test.txt","r") as fp:print "Name of the file: ", fp.nameline = fp.readline()print "Read Line: %s" % (line)print fp.tell()# Try to read file nowremainingLine = fp.readline()print "Read Line: %s" % (remainingLine)
    • linecache
      模塊允許從任何文件里得到任何的行,并且使用緩存進行優化,常見的情況是從單
      個文件讀取多行。
    • linecache.getlines(filename)
      從名為 filename 的文件中得到全部內容,輸出為列表格式,以文件每行為列表中的一個元素,
      并以 linenum-1 為元素在列表中的位置存儲
    • linecache.getline(filename,lineno)
      從名為 filename 的文件中得到第 lineno 行。這個函數從不會拋出一個異常–產生錯誤時它將
      返回”(換行符將包含在找到的行里)。
      如果文件沒有找到,這個函數將會在 sys.path 搜索。
    • linecache.clearcache()
      清除緩存,如果你不再需要先前從 getline() 中得到的行
    • linecache.checkcache(filename)
      檢查緩存的有效性。如果在緩存中的文件在硬盤上發生了變化,并且你需要更新版本,使用
      這個函數,執行此函數會講淘汰的內容刪除。如果省略 filename,將檢查緩存里的所有條目。
    • linecache.updatecache(filename)
      更新文件名為 filename 的緩存。如果 filename 文件更新了,使用這個函數可以更新
    • linecache.getlines(filename)
      返回的列表。如果出錯,則返回空列表。

    • 刪除空行的方法
    fp = open(r'test.txt')aList = []for item in fp:if item.strip():aList.append(item)fp.close()fp = open(r'test2.txt', 'w')fp.writelines(aList) def delblankline(infile, outfile):""" Delete blanklines of infile """infp = open(infile, "r")outfp = open(outfile, "w")lines = infp.readlines()for li in lines:if li=='\n': #不同操作系統下可能會有不同print u'空行'if li.split():outfp.write(li)infp.close()outfp.close()if __name__ == "__main__": delblankline("c:\\1.txt","c:\\2.txt")

    列題:
    數據文件:data.log
    20160215 000148|0|collect info job start|success|
    20160215000153|0|collect info job
    end|success|resultcode = 0000
    20160216000120|0|collect info job start|success|
    20160216000121|0|collect info job
    end|success|resultcode = 0000
    20160217000139|0|collect info job start|success|
    20160217000143|0|collect info job
    end|success|resultcode = 0000
    數據分析需求:
    每行內容需要生成以每行
    首年月日為名稱的文件,
    文件內容寫入|0|后的所有
    行內容(也包括|0| )

    算法分析:
    遍歷每一行,每行取頭8個字母
    新建文件,文件名為首8個字母,然后把第15字符后的所有字
    符拷貝到文件中
    關閉文件

    fp =open("e:\\data.log") for line in fp.readlines():filename = line[:14]content = line[14:]with open("e:\\"+filename+".txt","w") as fp2:fp2.write(content+"\n")fp.close()








    本文轉自 知止內明 51CTO博客,原文鏈接:http://blog.51cto.com/357712148/2060672,如需轉載請自行聯系原作者

    總結

    以上是生活随笔為你收集整理的python文件操作二的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。