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