1. 程式人生 > 程式設計 >Python檔案操作函式用法例項詳解

Python檔案操作函式用法例項詳解

這篇文章主要介紹了Python檔案操作函式用法例項詳解,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

字元編碼

二進位制和字元之間的轉換過程 --> 字元編碼

ascii,gbk,shit,fuck 每個國家都有自己的編碼方式

美國電腦記憶體中的編碼方式為ascii ; 中國電腦記憶體中的編碼方式為gbk,美國電腦無法識別中國電腦寫的程式,中國電腦無法識別美國電腦寫的程式

現在硬碟中躺著 ascii/gbk/shit/fuck 編碼的檔案,他們的編碼格式已經無法修改了,所以記憶體中出現unicode編碼,記憶體中的unicode編碼方式可以識別 ascii/gbk/shit/fuck 編碼的檔案

用unicode編碼方式運行了 ascii/gbk/shit/fuck 編碼的檔案,最後還是要裝入硬碟,裝入硬碟早期用unicode存進去,但是 他在識別ascii的時候,會把8位數字轉換成16位數字存入硬碟,浪費空間,所以出現了utf8(與unicode對應,並且壓縮unicode編碼的字元)

utf8 能識別其他國家的編碼,只識別unicode,utf8目前還不能放在記憶體,. 但是現在寫的程式碼都是utf8,歷史遺留ascii/gbk/shit/fuck 編碼的檔案遲早消失/淘汰,要麼被轉換成utf8格式.所以遲早有一天記憶體中也是utf8.

python2 和 python3字元編碼的區別

  • 開啟python直譯器
  • python直譯器相當於文字編輯器,讀取二進位制轉化為普通字元 a = 1
  • 對轉化後的普通字元進行解釋(定義變數就要新開闢記憶體空間存放變數)

python2

用檔案指定的編碼方式儲存定以後的變數

python3

用unicode編碼方式儲存定以後的變數

以後寫檔案以什麼格式儲存,就以什麼格式讀取

檔案的 三種開啟方式

  • r: 只讀 read
  • w:只寫 write 清空後寫入(檔案不存在自動建立)
  • a:追加(檔案不存在自動建立)

文字模式:t

二進位制模式:b

t/b無法單獨使用,只能和r/w/a一起使用

with管理檔案上下文

with open() as f: # 自動關閉

一、檔案的兩種方式

檔案的資料是存放於硬碟上的,因而只存在覆蓋,不存在修改這麼一說,我們平時看到餓的修改檔案,都是模擬出來的效果,具體的說有兩種實現方式。

1.1 方式一

將硬碟存放的該檔案的內容全部載入到記憶體,在記憶體中是可以修改的,修改完畢後,再由記憶體覆蓋到硬碟(word,vim,nodpad++等編輯器)。

import os

with open('37r.txt') as fr,\
    open('37r_swap.txt','w') as fw:
  data = fr.read() # 全部讀入記憶體,如果檔案很大,會很卡
  data = data.replace('tank','tankSB') # 在記憶體中完成修改

  fw.write(data) # 新檔案一次性寫入原檔案內容

# 刪除原檔案
os.remove('37r.txt')
# 重新命名新檔名為原檔名
os.rename('37r_swap.txt','37r.txt')
print('done...')

1.2 方式二

將硬碟存放的該檔案的內容一行一行地讀入記憶體,修改完畢就寫入新檔案,最後用新檔案覆蓋原始檔。

import os
with open('37r.txt') as fr,'w') as fw:
  # 迴圈讀取檔案內容,逐行修改
  for line in fr:
    line = line.replace('jason','jasonSB')
    # 新檔案寫入原檔案修改後內容
    fw.write(line)
os.remove('37r.txt')
os.rename('37r_swap.txt','37r.txt')
print('done...')

總而言之,修改檔案內容的思路為:以讀的方式開啟原檔案,以寫的方式開啟一個新的檔案,把原檔案的內容進行修改,然後寫入新檔案,之後利用os模組的方法,把原檔案刪除,重新命名新檔案為原檔名,達到以假亂真的目的。

二、定義函式的三種方式

2.1 無參函式

定義函式時引數是函式體接收外部傳值的一種媒介,其實就是一個變數名

在函式階段括號內沒有引數,稱為無參函式。需要注意的是:定義時無參,意味著呼叫時也無需傳入引數。

如果函式體程式碼邏輯不需要依賴外部傳入的值,必須得定義成無參函式。

def func():
  print('hello nick')
func() # hello nick

2.2 有參函式

在函式定義階段括號內有引數,稱為有參函式。需要注意的是:定義時有參,意味著呼叫時也必須傳入引數。

如果函式體程式碼邏輯需要依賴外部傳入的值,必須得定義成有參函式。

def sum_self(x,y):
  """求和"""
  res = x+y
  print(res)
sum_self(1,2) # 3

2.3 空函式

當你只知道你需要實現某個功能,但不知道該如何用程式碼實現時,你可以暫時寫個空函式,然後先實現其他的功能。

def func():
  pass

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。