2019.08.08学习整理
2019.08.08學(xué)習(xí)整理
文件的高級(jí)應(yīng)用
1.可讀、可寫(xiě)
- r+t: 可讀、可寫(xiě)
- w+t: 可寫(xiě)、可讀
- a+t: 可追加、可讀
2.文件內(nèi)指針移動(dòng)
硬盤(pán)上從來(lái)沒(méi)有修改一說(shuō),硬盤(pán)上只有覆蓋,即新內(nèi)容覆蓋新內(nèi)容。
1.seek(offset,whence): offset代表文件指針的偏移量,單位是字節(jié)
#seek with open('b.txt','rt',encoding='utf8')as frprint(f"fr.seek(4,0):{fr.seek(3,0)}") #0相當(dāng)于文件頭開(kāi)始;1相當(dāng)于當(dāng)前文件所在位置;2相當(dāng)于文件末尾# fr.seek(0,2) # 切換到文件末尾fr.seek(4, 0): 32.tell(): 每次統(tǒng)計(jì)都是從文件開(kāi)頭到當(dāng)前指針?biāo)谖恢?/p> # tell() with open('b.txt', 'rt', encoding='utf-8') as fr:fr.seek(4, 0)print(f"fr.tell(): {fr.tell()}") fr.tell(): 4
3.read(n): 只有在模式下的read(n),n代表的是字符個(gè)數(shù),除此之外,其他但凡涉及文件指針的都是字節(jié)個(gè)數(shù)
# read() with open('b.txt', 'rt', encoding='utf-8') as fr:print(f"fr.read(3): {fr.read(3)}") fr.read(3): sdf4.truncate(n): truncate(n)是截?cái)辔募?#xff0c;所以文件的打開(kāi)方式必須可寫(xiě),但是不能用w或w+等方式打開(kāi),因?yàn)槟菢又苯忧蹇瘴募?#xff0c;所以truncate()要在r+或a或a+等模式下測(cè)試效果。它的參照物永遠(yuǎn)是文件頭。并且truncate()不加參數(shù),相當(dāng)于清空文件。
# truncate() with open('36r.txt', 'r+t', encoding='utf-8') as fr:fr.truncate(3)文件修改的兩種方式
方式一
將硬盤(pán)存放的該文件的內(nèi)容全部加載到內(nèi)存,在內(nèi)存中是可以修改的,修改完畢后,再由內(nèi)存覆蓋到硬盤(pán)(word,vim,nodpad++等編輯器)。
import os with open('a.txt','r',encoding='utf8')as fr,\open('a_swap.txt','w')as fw:data=fr.read()# 全部讀入內(nèi)存,如果文件很大,會(huì)很卡data=data.replace('apple','apples')# 在內(nèi)存中完成修改fw.write(data) # 新文件一次性寫(xiě)入原文件內(nèi)容 # 刪除原文件 os.remove('a.txt') # 重命名新文件名為原文件名 os.rename('a_swap.txt','a.txt')方式二
將硬盤(pán)存放的該文件的內(nèi)容一行一行地讀入內(nèi)存,修改完畢就寫(xiě)入新文件,最后用新文件覆蓋源文件
import os with open('a.txt','r',encoding='utf8')as fr,\open('a_swap.txt','w')as fw:# 循環(huán)讀取文件內(nèi)容,逐行修改for line in fr:line = line.replace('apples', 'apple')# 新文件寫(xiě)入原文件修改后內(nèi)容fw.write(line) os.remove('a.txt') os.rename('a_swap.txt', 'a.txt')修改文件內(nèi)容的思路為:以讀的方式打開(kāi)原文件,以寫(xiě)的方式打開(kāi)一個(gè)新的文件,把原文件的內(nèi)容進(jìn)行修改,然后寫(xiě)入新文件,之后利用os模塊的方法,把原文件刪除,重命名新文件為原文件名,達(dá)到以假亂真的目的。
函數(shù)的定義
什么是函數(shù)
函數(shù)就是具備某一功能的工具,事先將工具準(zhǔn)備好就是函數(shù)的定義,遇到應(yīng)用場(chǎng)景拿來(lái)就用就是函數(shù)的調(diào)
如何用函數(shù)
先定義函數(shù),后調(diào)用。
定義函數(shù)
def 函數(shù)名()<代碼塊>return 返回值調(diào)用函數(shù)
函數(shù)定義階段
def func():bar()# 不屬于語(yǔ)法錯(cuò)誤,不會(huì)報(bào)錯(cuò)print('*'*10)函數(shù)調(diào)用階段
def bar():print('from bar')def foo():print('from foo')bar()foo() ''' from foo from bar '''執(zhí)行函數(shù)代碼
定義函數(shù)的三種方式
無(wú)參函數(shù)
定義函數(shù)時(shí)參數(shù)是函數(shù)體接收外部傳值的一種媒介,其實(shí)就是一個(gè)變量名
在函數(shù)階段括號(hào)內(nèi)沒(méi)有參數(shù),稱為無(wú)參函數(shù)。需要注意的是:定義時(shí)無(wú)參,意味著調(diào)用時(shí)也無(wú)需傳入?yún)?shù)。
如果函數(shù)體代碼邏輯不需要依賴外部傳入的值,必須得定義成無(wú)參函數(shù)。
def func():print('hello nick')func() # hello nick有參函數(shù)
在函數(shù)定義階段括號(hào)內(nèi)有參數(shù),稱為有參函數(shù)。需要注意的是:定義時(shí)有參,意味著調(diào)用時(shí)也必須傳入?yún)?shù)。
如果函數(shù)體代碼邏輯需要依賴外部傳入的值,必須得定義成有參函數(shù)。
def sum_self(x, y):"""求和"""res = x+yprint(res)sum_self(1,2) # 3空函數(shù)
當(dāng)你只知道你需要實(shí)現(xiàn)某個(gè)功能,但不知道該如何用代碼實(shí)現(xiàn)時(shí),你可以暫時(shí)寫(xiě)個(gè)空函數(shù),然后先實(shí)現(xiàn)其他的功能。
def func():pass函數(shù)的返回值
什么是返回值
函數(shù)內(nèi)部代碼經(jīng)過(guò)一些列邏輯處理獲得的結(jié)果。
def func():name = 'nick'return namename = func() print(name)nick
為什么要有返回值?
現(xiàn)在有一個(gè)需求,比較兩個(gè)人的月薪,然后想獲取月薪較大人的年薪。
如果需要在程序中拿到函數(shù)的處理結(jié)果做進(jìn)一步的處理,則需要函數(shù)必須要有返回值。
需要注意的是:
- return是一個(gè)函數(shù)結(jié)束的標(biāo)志,函數(shù)內(nèi)可以有多個(gè)return,只要執(zhí)行到return,函數(shù)就會(huì)執(zhí)行。
- return的返回值可以返回任意數(shù)據(jù)類型
- return的返回值無(wú)個(gè)數(shù)限制,即可以使用逗號(hào)隔開(kāi)返回多個(gè)值
- 0個(gè):返回None
- 1個(gè):返回值是該值本身
- 多個(gè):返回值是元組
函數(shù)的參數(shù)
形參和實(shí)參
形參
在函數(shù)定義階段括號(hào)內(nèi)定義的參數(shù),稱之為形式參數(shù),簡(jiǎn)稱形參,本質(zhì)就是變量名。
def func(x, y):print(x)print(y)實(shí)參
在函數(shù)調(diào)用階段括號(hào)內(nèi)傳入的參數(shù),稱之為實(shí)際參數(shù),簡(jiǎn)稱實(shí)參,本質(zhì)就是變量的值。
func(1, 2)位置參數(shù)
位置形參
在函數(shù)定義階段,按照從左到右的順序依次定義的形參,稱之為位置形參。
def func(x, y):print(x)print(y)特點(diǎn):按照位置定義的形參,都必須被傳值,多一個(gè)不行,少一個(gè)也不行。
位置實(shí)參
在函數(shù)調(diào)用階段,按照從左到右的順序依次定義的實(shí)參,稱之為位置實(shí)參。
func(1, 2)特點(diǎn):按照位置為對(duì)應(yīng)的形參依次傳值。
關(guān)鍵字實(shí)參
在調(diào)用函數(shù)時(shí),按照key=value的形式為指定的參數(shù)傳值,稱為關(guān)鍵字實(shí)參。
func(y=2, x=1)特點(diǎn):可以打破位置的限制,但仍能為指定的形參賦值。
注意:
默認(rèn)形參
在定義階段,就已經(jīng)被賦值。
def func(x, y=10):print(x)print(y)func(2)特點(diǎn):在定義階段就已經(jīng)被賦值,意味著在調(diào)用時(shí)可以不用為其賦值。
注意:
轉(zhuǎn)載于:https://www.cnblogs.com/zhangmingyong/p/11322518.html
總結(jié)
以上是生活随笔為你收集整理的2019.08.08学习整理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 取得MS SQL 2000数据库一个表的
- 下一篇: [导入]竟然支持OpenGL ES!