Python 3 學習的第六天——檔案操作

來源:互聯網
上載者:User

標籤:imp   jin   cat   python   多行   拼接   意義   eva   寫入   

Python 學習的第六天

 寫此部落格 是為了激勵自己,並且將自己的心得以及遇到的問題與人分享

一、課堂筆記

  1.一切皆檔案  對檔案的操作一般都三個過程:開啟、操作、關閉。

  f = open (‘小檔案‘,‘r‘,encoding = ‘utf8‘) # r 為讀模式 w 為寫入模式  整體為得到檔案的操作控制代碼  data = f.read()  print(data)  f.close()

  開啟檔案,得到檔案的操作控制代碼 

  通過檔案操作控制代碼對檔案進行操作

  關閉檔案 

  2.read方法 

   read(5) 取出來的是5個字元,在Python3 中中文算是一個字元,英文為一個字母一個字元。

  3.write方法

  f = open (‘小檔案‘,‘w‘,encoding = ‘utf8‘) # r 為讀模式 w 為寫入模式 a 為追加模式                            # w 的時候會清空文檔內容再寫 a的時候會直接追加  f.write(‘helloworld‘)  f.close()   
  ## 執行效果:以前檔案中的內容都不見了,只有一個‘helloworld‘

  4.close方法

    只要開啟一個檔案,就要關閉它。

  5.模式

     r 模式  只可讀

    w 模式  只可寫 使用w模式開啟後,先將檔案進行初始化,檔案為空白了就。

    a 模式  追加模式      

    w+ 開啟檔案並讀寫  1. 檔案存在,則清空(也即寫入空); 2. 檔案不存在,則建立檔案 ; 3. 檔案流定位到開始位置, 所以read() 會得到空。

    r+  開啟檔案並讀寫   1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置; 2. 檔案不存在, 則報錯檔案不存在。

    a+  開啟檔案並讀添   1. 檔案存在,開啟檔案,檔案指標定位到檔案開始位置,但不清空;2.  檔案不存在,建立檔案; 3. 開啟後讀取時,在檔案開頭位置,4. 寫入時,添加到文章末尾,並且指標位於添加後的末尾,所以再次讀取會亂碼。

  6.readline() 唯讀一行  readlines() 讀取全部放在一行中

  在檔案中取出某一行,對其操作。

#author:"LFD"#date: 2018/2/13data = open(‘lfd‘,‘r‘,encoding=‘utf8‘) #檔案的操作控制代碼(對象),只有拿到它之後才能進行操作。num = 0for i in data.readlines():    num += 1    if num == 6:        i = ‘‘.join((i.strip(),‘ssss‘))  # 通過number自己定義的一個變數來對檔案的某一行進行操作    print(i.strip())data.close()

   另一種取出檔案內容的方法  跟迭代器有關 最好用如下這種方式

#author:"LFD"#date: 2018/2/13data = open(‘lfd‘,‘r‘,encoding=‘utf8‘) #檔案的操作控制代碼(對象),只有拿到它之後才能進行操作。for i in data: #這是for 內部將 data對象做成了一個迭代器,用一個取一個,對於文本來說,用一個取一行。data本神並不是一個迭代器    print(i.strip())data.close()

  7.檔案操作一系列的方法:

    readline() 取出檔案的一行 ;

    readlines() 取出檔案的多行,得到的是一個列表,把每一個readline做成一個字串放到列表中去了。

      上面雖然可以取出來,但會有多餘的 \n 分行符號,使用 .strip() 方法來去掉多餘的 \n

      字串拼接最好不要用 + ,用 join() 方法會更好一些。

    tell() 列印游標位置 英文字元佔一個 中文字元佔3個 

    seek() 調整游標的位置   data.seek(0)----這麼用

    flush()  把緩衝中的資料儲存到磁碟上去,可以用來做進度條

  import sys,time  for i in range(30):      sys.stdout.write("*")      sys.stdout.flush()  # 不會進入緩衝區,剛進入緩衝區存入硬碟      time.sleep(0.2)    

    truncate(5)  截斷,從第五個游標位置處,後面的內容全部截斷刪除掉了。檔案開啟檔案要使用 ‘ a ‘ 模式。使用 ‘ w ‘模式開啟檔案再使用該方法沒有什麼意義。

  8.終極問題 對文本進行修改

#author:"LFD"#date: 2018/2/13f_read = open(‘lfd‘,‘r‘,encoding=‘utf8‘)f_write = open(‘lfd3‘,‘w‘,encoding=‘utf8‘)number = 0for line in f_read:    number += 1    if number == 5:        line = ‘‘.join([line,‘xxx\n‘])  #這個是對檔案某行末尾進行追加    #   line = ‘hello world‘ 這個是 對檔案某行內容覆蓋書寫    f_write.write(line)f_read.close()

  9.將字典型資料轉換成字元型存入檔案中,再使用eval() 方法將字元型資料轉回字典型資料。

a = str({‘beijing‘:{1:111}})print(type(a))print(a)a = eval(a) # 將字串類型的‘a‘轉換成字典型的 ‘a‘print(type(a))print(a[‘beijing‘])

  10.with 語句 with() 方法

  以後開啟檔案盡量採用 with 方法來開啟

f = open(‘lfd‘,‘r‘) #必須要手動關閉檔案f.readline()f.read()f.close()with open(‘lfd‘,‘r‘) as f: # 退出了with代碼塊會自動將檔案關閉    f.readline()    f.read()print(‘hello world‘)

  with 還支援同時對多個檔案的上下文進行管理

   同時管理多個檔案對象建立

with open(‘lfd‘,‘r‘) as f_read, open(‘lfd2‘,‘w‘) as f_write:    for line in f_read:        f_write.write(line)

 

 

二、心得

  在過年期間到現在,經曆了很多事情,包括是否還要從事這個專業,是否要繼續學習下去。中間間隔了這麼久,也認認真真的去思考了很多很多東西。最後,還是回來了。在我心裡,做一事就要像一事,連這點小事都做不好,幹什麼都成不了。

  這章的學習可謂是辛苦的不行,本來2-3天的內容硬是看了足足半個月,雖然中間夾雜著過年。回到了學校,步入了正軌,但對Python的學習還是不會落下。

 

Python 3 學習的第六天——檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.