1. 程式人生 > 其它 >檔案操作和函式基礎

檔案操作和函式基礎

檔案操作和函式基礎

檔案內游標的移動(瞭解性知識)

# 讀取指定長度內容
	eg:
        with open('b.txt','r',encoding='utf8') as f:
            print(f.read(3))
        with open('b.txt','rb') as f1:
            print(f1.read(3).decode('utf8'))
    輸出結果:
        你好a
		你
        '''在使用read()方法時,t模式,引數是字元數,r模式,引數是位元組數'''
        
# 怎麼使游標移動?
# seek(offset,whence):
'''
	offset:控制游標移動的位元組數
        正數:向文字末尾移動
        負數:向檔案頭部移動
   	whence:控制移動模式
    	0模式:讓游標在停留在檔案開頭
        	支援文字和二進位制模式
        1模式:讓游標停留在當前位置
        	只支援二進位制模式
        2模式:讓游標停留在檔案末尾
        	只支援二進位制模式
'''
eg:
    # with open('b.txt','rb') as f1:
#     f1.seek(0, 0)
#     print(f1.read(3).decode('utf8'))  # 游標在檔案開頭,向後輸出三個位元組
#     f1.seek(3, 1)
#     print(f1.read(3).decode('utf8'))  # 游標在開頭第三個位元組,向後移動三個位元組,向後輸出三個位元組
#     f1.seek(-3, 2)
#     print(f1.read(3).decode('utf8'))  # 游標在檔案末尾,向前移動三個位元組,向後輸出三個位元組
輸出結果;
	你
    ads
    as	
# 實時監測檔案內是否有新增內容並打印出來(沒有太多實用意義)
	with open('b.txt','rb') as f:
        f.seek(0,2)
        while True:
            if len(f.readline()) == 0:
                print(f.readline().decode('utf8'))
                f.seek(0,2)

檔案修改(瞭解性知識)

# 硬碟上的檔案修改的兩種思想
	1. 覆蓋修改
    2. 新建命名
1. 覆蓋修改
	# 把檔案一次性讀入記憶體,然後在記憶體中修改完成後覆蓋原檔案
    # 優點: 在檔案修改過程中同一份資料只有一份
	# 缺點: 會過多地佔用記憶體
2. 新建命名
	# 以讀的方式開啟該檔案,以寫的方式新建檔案,一行行讀取原檔案,修改後寫入新檔案,完成後重新命名新檔案為老檔案的名字
    # 刪掉原檔案,將臨時檔案重新命名原檔名(狸貓換太子)
    # 優點: 不會佔用過多的記憶體
    # 缺點: 在檔案修改過程中同一份資料存了兩份

函式簡介

# 為什麼要有函式?
	為了讓一段功能程式碼重複多次的在不同地方使用。類似於迴圈,不過迴圈的程式碼只能在一個地方使用,而函式就是為了在不同的地方可以使用到該功能程式碼。例如我們常用的len(),這就是一個python內建函式,我們需要用了,隨時隨地都可以拿來用。
# 函式的分類
	1. 內建函式
    2. 自定義函式
1. 內建函式
	python自帶的函式,python的開發者寫好的,我們只需要知道他能幹什麼,怎麼呼叫就行了。
2. 自定義函式
	由我們程式設計師自己寫出來的可供重複呼叫的功能程式碼。
   	eg:
        # 自定義len()函式
        def my_len(args):
            num = 0
            for data in args:
                num += 1
            return num

        list1 = [11,22,33,44,55,66]
        print(len(list1))
        print(my_len(list1))
    執行結果:
        6
        6
可以看到,我們寫的功能程式碼可以實現和內建函式一樣的功能,且你可以在任何地方試用他(前提是函式要先定義好)無數次,不需要再使用迴圈去完成反覆使用程式碼的過程。
# 函式的語法結構
	def 函式名(引數):
        '''函式功能說明'''
        函式體程式碼(函式要執行的功能)
        return 返回值
1. def:定義函式關鍵字,向python說明,"我要定義函數了"
2. 函式名:類似於變數名,為了以後用它能找到他
3. 括號:用來放參數的
4. 引數:你要讓函式幫你加工東西,給他的原材料
5. 冒號:開啟函式體程式碼縮排
6.函式的註釋:用於解釋函式的主要功能、使用方法等說明性文字
7.函式體程式碼:函式的核心功能
8.return:函式執行完了返回給你的結果
"""
定義函式需要使用def關鍵字
	定義函式的過程不會執行函式體程式碼 只會檢測語法
		def index():
			xsadasd  定義的時候不會報錯
		def index1():
			if  語法錯誤定義的時候就會報錯
呼叫函式需要使用函式名加括號
"""