Python文件的操做函數的使用

字符編碼python

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

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.code

python2 和 python3字符編碼的區別內存

  1. 打開python解釋器
  2. python解釋器至關於文本編輯器,讀取二進制轉化爲普通字符 a = 1
  3. 對轉化後的普通字符進行解釋(定義變量就要新開闢內存空間存放變量)

python2ci

用文件指定的編碼方式存儲定之後的變量unicode

python3

用unicode編碼方式存儲定之後的變量

之後寫文件以什麼格式存儲,就以什麼格式讀取

文件的 三種打開方式

  • r: 只讀 read

  • w:只寫 write 清空後寫入(文件不存在自動建立)

  • a:追加(文件不存在自動建立)

文本模式:t

二進制模式:b

t/b沒法單獨使用,只能和r/w/a一塊兒使用

with管理文件上下文

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

1、文件的兩種方式

文件的數據是存放於硬盤上的,於是只存在覆蓋,不存在修改這麼一說,咱們平時看到餓的修改文件,都是模擬出來的效果,具體的說有兩種實現方式。

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...')

done...

PS:遇到問題沒人解答?須要Python學習資料?能夠加點擊下方連接自行獲取
note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

1.2 方式二

將硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最後用新文件覆蓋源文件。

import os

with open('37r.txt') as fr,\
        open('37r_swap.txt', '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...')

done...

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

2、定義函數的三種方式

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
相關文章
相關標籤/搜索