最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Python中的文件操作

 更新時間:2016年08月28日 16:05:14   投稿:daisy  
今天這篇文章給大家介紹Python中的文件操作,文章內容介紹的很詳細,有需要的可以參考借鑒。

1.能調用方法的一定是對象,比如數值、字符串、列表、元組、字典,甚至文件也是對象,Python中一切皆為對象。

 str1 = 'hello'
 str2 = 'world'
 str3 = ' '.join([str1,str2])
 print(str3)

2.三種基本的文件操作模式:r(only-read)、w(only-write)、a(append)

對文件進行操作的流程:

     第一,建立文件對象。

     第二,調用文件方法進行操作。

     第三,不要忘了關閉文件。(文件不關閉的情況下,內容會放在緩存,雖然Python會在最后自動把內容讀到磁盤,但為了以防萬一,要養(yǎng)成關閉文件的習慣)

文件file1

一張褪色的照片,
好像帶給我一點點懷念。
巷尾老爺爺賣的熱湯面,
味道彌漫過舊舊的后院;
流浪貓睡熟在搖晃秋千,
夕陽照了一遍他咪著眼;
那張同桌寄的明信片,
安靜的躺在課桌的里面。

(1)r模式

在只讀模式下寫入內容會報錯。

 f = open('file1','r')
 f_read = f.read()   #read是逐字符地讀取,read可以指定參數,設定需要讀取多少字符,無論一個英文字母還是一個漢字都是一個字符。
 print(f_read)
 f.close()
 f = open('file1','r')
 f_read = f.readline() #readline只能讀取第一行代碼,原理是讀取到第一個換行符就停止。
 print(f_read)
 f.close()
 f = open('file1','r')
 f_read = f.readlines() #readlines會把內容以列表的形式輸出。
 print(f_read)
 f.close()
 f = open('file1','r')
 for line in f.readlines() #使用for循環(huán)可以把內容按字符串輸出。
   print(line) #輸出一行內容輸出一個空行,一行內容一行空格... 因為文件中每行內容后面都有一個換行符,而且print()語句本身就可以換行,如果不想輸出空行,就需要使用下面的語句:print(line.strip())
 f.close()

(2)w模式

在進行操作前,文件中所有內容會被清空。比如在file1中寫入'hello world',程序執(zhí)行后file1中就只剩下一句'hello world'

 f = open('file1','w',encoding='utf8')  #由于Python3的默認編碼方式是Unicode,所以在寫入文件的時候需要調用utf8,以utf8的方式保存,這時pycharm(默認編碼方式是utf8)才能正確讀取,當讀取文件時,文件是utf8格式,pycharm也是utf8,就不需要調用了。
 f_w = f.write('hello world')
 print(f_w)  #有意思的是,這里并不打印'hello world',只打印寫入多少字符
 f.close()

(3)a模式

與w模式不同的是,a模式不會把原來內容清空,而是光標移到內容最后位置,繼續(xù)寫入新內容。比如在最后追加'hello world'

 f = open('file1','a')
 f_a = f.write('hello world')
 print(f_a) #還是會打印寫入的字符數
 f.close()

打印文件,在'流浪貓睡熟在搖晃秋千'后面加上'helloworld'輸出

在r模式時,我們說過用for循環(huán)和readlines()輸出文件內容,這種輸出內容的原理是:打開文件,把全部內容讀入內存,然后再打印輸入,當文件很大時,這種讀取方式就不靠譜了,甚至會使機器崩潰。我們需要及時關閉文件,如下:

f = open('file','r')
data=f.readlines()  #注意及時關閉文件
f.close()

num = 0
for i in data:
  num += 1
  if num == 5:
    i = ''.join([i.strip(),'hello world']) #不要使用“+”進行拼接
  print(i.strip())
f.close()

對于大數據文件,要使用下面的方法:

num = 0
f.close()  #不要過早關閉文件,否則程序不能識別操作句柄f.
f = open('file','r')
for i in f:  #for內部把f變?yōu)橐粋€迭代器,用一行取一行。
  num += 1
  if num == 5:
    i = ''.join([i.strip(),'hello world'])
  print(i.strip())
f.close()

3.tell和seek

     tell:查詢文件中光標位置

     seek:光標定位

f = open('file','r')
print(f.tell())  #光標默認在起始位置
f.seek(10)    #把光標定位到第10個字符之后
print(f.tell())  #輸出10
f.close()
----------------------
f = open('file','w')
print(f.tell())  #先清空內容,光標回到0位置
f.seek(10)    
print(f.tell())
f.close()
----------------------
f = open('file','a')
print(f.tell())  #光標默認在最后位置
f.write('你好 世界')
print(f.tell())  #光標向后9個字符,仍在最后位置
f.close()

4.flush 同步將數據從緩存轉移到磁盤

示例,實現(xiàn)進度條功能

import sys,time  #導入sys和time模塊
for i in range(40):
  sys.stdout.write('*')
  sys.stdout.flush()  #flush的作用相當于照相,拍一張沖洗一張
  time.sleep(0.2)
下面代碼也能夠實現(xiàn)相同的功能
import time 
for i in range(40):
  print('*',end='',flush=True) #print中的flush參數
  time.sleep(0.2)

5.truncate 截斷

不能是r模式下執(zhí)行,

w模式下,已經清空所有數據,使用truncate沒有任何意義,

a模式下,截斷指定位置后的內容。

 f = open('file','a')
 f.truncate(6) #只顯示6個字節(jié)的內容(6個英文字符或三個漢字),后面的內容被清空。

6.光標位置總結

一個漢字兩個字節(jié),涉及光標位置的方法有4個:read、tellseek、truncate。

#--------------------------光標總結head-----------------------------------
f = open('file','r')
print(f.read(6)) #6個字符
print(f.tell())  #位置12字節(jié),一個漢字兩個字節(jié)
f.close()

f = open('file','r')
f.seek(6)      #6個字節(jié)
print(f.tell())
f.close()

f = open('file','a')
print(f.tell())  #光標默認在最后位置
f.write('你好 世界')
print(f.tell())  #光標向后9個字節(jié),一個漢字兩個字節(jié),仍在最后位置 182-->191
f.close()

f = open('file','a',encoding='utf-8')
print(f.truncate(6)) #由于需要光標定位位置,所以也是字節(jié)。只顯示6個字節(jié)的內容(6個英文字母或三個漢字,一個漢字兩個字節(jié)),后面的內容被清空。
f.close()
#-----------------------------光標總結end---------------------------------

7.另外3種模式:r+、w+、a+

      r+:讀寫模式,光標默認在起始位置,當需要寫入的時候,光標自動移到最后

     w+:寫讀模式,先清空原內容,再寫入,也能夠讀取

     a+:追加讀模式,光標默認在最后位置,直接寫入,也能夠讀取。

f = open('file','a')
print(f.tell())  #末尾207位置
f.close()

f = open('file','r+')
print(f.tell())  #0位置
print(f.readline()) #讀取第一行
f.write('羊小羚')   #光標移到末尾207位置并寫入
print(f.tell())  #213位置
f.seek(0)     #光標移到0位置
print(f.readline())  #讀取第一行
f.close()

8.修改文件內容

思路:由于數據存儲機制的關系,我們只能把文件1中的內容讀取出來,經過修改后,放到文件2中。

f2 = open('file2','w',encoding='utf8')  #寫入的時候必須加utf8
f1 = open('file','r')
num = 0
for line in f1: #迭代器
  num += 1
  if num == 5:
    line = ''.join([line.strip(),'羊小羚\n'])  #里面就是對字符串進行操作了
  f2.write(line)
f1.close()
f2.close()

9.with語句

可以同時對多個文件同時操作,當with代碼塊執(zhí)行完畢時,會自動關閉文件釋放內存資源,不用特意加f.close() ,我們通過下面的示例體會with的用法和好處。

with語句重寫8中的代碼

num = 0
with open('file','r') as f1,open('file2','w',encoding='utf8') as f2:
  for line in f1:
    num += 1
    if num == 5:
      line = ''.join([line.strip(),'羊小羚'])
    f2.write(line)

10.總結

以上就是這篇文章的全部內容,希望對大家能有所幫助。如果有疑問可以留言交流

相關文章

  • Keras設置以及獲取權重的實現(xiàn)

    Keras設置以及獲取權重的實現(xiàn)

    這篇文章主要介紹了Keras設置以及獲取權重的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python彈球小游戲的項目代碼

    Python彈球小游戲的項目代碼

    本文主要介紹了Python彈球小游戲的項目代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 基于Python實現(xiàn)的通用小規(guī)模搜索引擎

    基于Python實現(xiàn)的通用小規(guī)模搜索引擎

    這篇文章主要介紹了基于Python實現(xiàn)的通用小規(guī)模搜索引擎,文中代碼示例和圖文結合的方式講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下
    2025-01-01
  • python opencv 實現(xiàn)對圖像邊緣擴充

    python opencv 實現(xiàn)對圖像邊緣擴充

    今天小編就為大家分享一篇python opencv 實現(xiàn)對圖像邊緣擴充,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python request使用方法及問題總結

    Python request使用方法及問題總結

    這篇文章主要介紹了Python request使用方法及問題總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Tkinter?組件Scrollbar的具體使用

    Tkinter?組件Scrollbar的具體使用

    本文主要介紹了Tkinter?組件Scrollbar的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python正則表達式抓取成語網站

    python正則表達式抓取成語網站

    做NLPproject時需要一個成語庫,我需要的是純成語,網上找的都是有詳細解釋的。于是自己寫了一個爬成語的python程序
    2013-11-11
  • Python中Tkinter組件Frame的具體使用

    Python中Tkinter組件Frame的具體使用

    本文主要介紹了Python中Tkinter組件Frame的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python實現(xiàn)批量分割PDF文件

    Python實現(xiàn)批量分割PDF文件

    這篇文章主要為大家詳細介紹了使用Python進行批量分割PDF文件的相關方法,我們將從架構設計入手,逐步講解代碼實現(xiàn)的過程,希望對大家有所幫助
    2023-11-11
  • 利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    利用Python如何制作貪吃蛇及AI版貪吃蛇詳解

    這篇文章主要給大家介紹了關于利用Python如何制作貪吃蛇及AI版貪吃蛇的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論

浮梁县| 武汉市| 曲沃县| 咸阳市| 天镇县| 唐山市| 天祝| 平罗县| 清涧县| 新绛县| 正阳县| 平阳县| 遂溪县| 秦安县| 台北县| 吴桥县| 桐乡市| 阿拉善左旗| 丰台区| 肇州县| 青岛市| 古丈县| 攀枝花市| 岢岚县| 南丰县| 泗水县| 巴马| 福海县| 明星| 文山县| 普安县| 赤壁市| 闽清县| 扶余县| 临泽县| 鄂托克前旗| 桦甸市| 定日县| 池州市| 洛浦县| 古田县|