python學習第八天,,檔案操作,切片相當於淺copy

來源:互聯網
上載者:User

標籤:位元組   記憶體   ada   open   print   大數   簡單   nbsp   換行   

切片的補充:

   切片相當於淺copy: 

a = [1,2,3,4,5]b = a[:]print(id(a),id(b),id(a[0]),id(a[0]))#2432299195592 2432299195528 #1795645664 1795645664

檔案的操作:(分為三步)

  1.開啟檔案.產生檔案控制代碼 f

  2.對檔案控制代碼進行操作

  3.關閉檔案控制代碼

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘)f.read()content = f.close()print(content)f.close()

  ‘open()是python的內建函數,調用的是windows系統的命令‘

    運行這三步報錯的原因:

      1.編碼方式錯誤

      2.路徑不對

開啟檔案的模式以及對應的操作:

1.讀

  以mode=‘r的模式開啟文字類檔案(預設開啟模式)

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘)b = f.read()print(b)f.close()    #五種讀取方法:          f.read() 全部讀取,以字串形式輸出        f.read(10),,n表示read,在r模式下是讀n個字元,在rb模式下是讀n個位元組
     f.readline() 按行讀取
     f.readlines() 全部讀取,以列表的形式輸出 #----------以上四種方式讀大資料時佔用記憶體 # 以for迴圈方式讀取 #(for迴圈讀可迭代對象,每次在記憶體中唯讀取一行,讀後就刪除不佔用記憶體)
     f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘) for line in f: print(line,end=‘‘) #end=‘‘,清除分行符號 f.close()

  

 

以mode=‘rb‘開啟任何檔案

with open(r‘a.txt‘,‘rb‘) as f1,open(r‘b.txt‘,‘a‘,encoding=‘utf-8‘) as f2:    for line in f1:        f2.write(line.decode())

  以mode=‘r+‘開啟檔案(可讀可追加)

    1.先讀後寫

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘)c = f.read(3) #c = f.read(3),不管是讀三個還是全部的游標都移到了最後一行末尾print(c)b = f.write(‘a‘)f.close()

    2.先寫後讀

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘)f.write(‘簡單‘) # 游標在開頭,寫入幾個字元覆蓋幾個字元f.close()

 

   

2.追加

  a:只追加

f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘a‘)    # 沒有aaa.txt檔案則在同一個檔案夾下建立該檔案然後寫入    #有aaa.txt檔案則在末尾添加新內容    #有aaa.txt檔案在末尾添加新內容+\n則換行追加

    f.write() # 只能加字串

 

    f.writelines() # 可以將列錶轉換成字串加入檔案,也可以直接在末尾加入字串,元素中不能由數字

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a‘)f.writelines([‘a‘,‘b‘,‘c‘]) #字串裡不能由int類型f.close()

  a+:先追加再讀,游標還在末尾,

    想要讀要添加:f.seek(0)

     (游標在最後一行末尾,先讀,則讀不出內容.)

f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a+‘)f.writelines(‘aaa‘)f.seek(0)b = f.read()print(b)f.close()

 3.寫w:

f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘w‘)    #沒有aaa.txt檔案則在同一個檔案夾下建立該檔案然後寫入    #有aaa.txt檔案則清空原檔案,並添加新內容

 

 4.檔案的其他動作方法:

  f.readable()

  f.writeable()

  f.seek() 調整游標(按位元組移動游標)

    f.seek(0)

    f.seek(0,2)將游標調整到最後一行末尾,,以位元組的方式移動

      (0) 游標在開頭

      (0,1) 游標在現在位置

      (0,2) 游標的末尾,往後0個位元組

      (1,1) 游標在現在位置往後1個位元組

  f.tell() 擷取到指標的位置

  f.truncate() 對原檔案進行截取

    要在‘r+‘,‘a+‘模式下使用,不能再‘w‘,模式下使用

5.用with開啟檔案

with open() as f:    pass    #優點:    # 可以主動關閉檔案控制代碼    # 可以同時開啟多個檔案的控制代碼    with open(1) as f1,            open(2) as f2

6.檔案改的操作

檔案的改的操作:    以讀的模式開啟原檔案,產生一個檔案控制代碼f1    以寫的模式建立一個新檔案,產生一個檔案控制代碼f2    讀取原檔案內容,進行修改後,寫入新檔案    將原檔案刪除    將新檔案重新命名成原檔案

 

import oswith open(‘alex的深度剖析‘, encoding=‘utf-8‘) as f1,    open(‘alex的深度解析.bak‘,encoding=‘utf-8‘,mode=‘a‘) as f2:    for line in f1:        new_line = line.replace(‘alex‘,‘SB‘)        f2.write(new_line)os.remove(‘alex的深度剖析‘)os.rename(‘alex的深度解析.bak‘, ‘alex的深度剖析‘)

python學習第八天,,檔案操作,切片相當於淺copy

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.