包和文件操作
1.什麼是包
“”"

包含__init__.py文件的文件夾就是包

包是用來對py文件(模塊)進行分類或者封裝

“”"2.怎麼使用包中的模塊
“”"

導入方式1

import 包名.模塊名

包名.模塊名.變量

導入方式2

import 包名.模塊名 as 新模塊名

對包名.模塊名進行重命名操作

通過新名.變量 的方式去使用

導入方式3

from 包名 import 模塊名1, 模塊名2, …

模塊名.變量

導入方式4

from 包名 import 模塊名1 as 新模塊名, 模塊名2…

導入方式5

from 包名.模塊名 import 變量名1, 變量名2,…“”"
3.定製包的__init__.py文件
“”"

不管用什麼方式導入包或者包中內容的時候,系統都會先去執行__init__.py1.數據持久化
“”"

1)計算機存儲數據

程序中的數據,默認都是保存在運行內存中的,保存在運行內存中的數據在程序結束後會自動銷燬

如果將數據保存在磁盤中,除非手動刪除或者磁盤損壞,數據會一直存在

2)持久化

將程序中的數據通過文件保存在磁盤中,這個過程就是數據持久化的過程

持久化工具:普通文本文件(.txt),數據庫文件(.sqlite,.db), json文件,plist文件等

csv文件,excel文件2.文件操作
1)操作文件的基本步驟:打開文件, 讀寫文件的操作, 關閉文件

2)python實現文件操作的

1.打開 - open(file, mode=‘r’,…,encoding=None)

以指定的方式打開指定的文件並且返回(返回的是文件對象)

file - 字符串,需要打開的文件路徑

路徑:

絕對路徑 - 文件在計算機中的全路徑,r’絕對路徑’

相對路徑 - 用 . 來代替文件全路徑的部分,只寫部分路徑

. - 表示當前目錄的文件夾

… - 表示當前目錄的上層目錄的文件夾mode - 字符串,打開方式(決定打開文件後文件能支持的操作;決定讀寫數據的類型)

‘r’ - 表示只讀(默認)

‘w’ - 表示只寫,打開的時候會先清空文件

‘a’ - 表示只寫,打開的時候會保留原文件內容

‘t’ - 表示字符串類型,表示文本數據對應str類型(默認)

‘b’ - 表示二進制數據,對應bytes類型

‘rt’/‘tr’/‘r’

‘wt’/‘tw’/‘w’

‘at’/‘ta’/‘a’

‘rb’/‘br’

‘ab’/‘ba’

‘wb’/‘bw’

注意:

以讀的形式打開一個不存在的文件會報錯

以寫的形式打開一個不存在的文件會自動創建

如果是文本文件打開的時候可以是’b’也可以是’t’

如果非文本打開只能是’b’encoding - 設置文本文件的編碼方式,一般使用’utf-8’

注意:創建文件和打開文件,讀和寫對應的編碼方式要一樣

打開的時候如果帶’b’,就不能設置encoding文件對象.close()
文件關閉後不能再進行讀寫操作
讀

文件對象.read() - 從讀寫位置開始到結尾

文件對象.readline() - 從讀寫位置開始到一行結尾(只能用於以’t’打開的文本文件)

文件對象.seek(0) - 將讀寫位置移動到開頭,讀的方式打開在開頭,寫的方式打開在結尾寫

文件對象.write()1.怎麼做到數據的持久化
“”"

1)創建一個文件,用來保存需要持久化的數據

2)需要這個數據的時候,從文件中去獲取這個數據(讀)

3)當這個數據的值發生改變之後,要用新數據去更新到文件中去(寫)“”"

f = open(‘fileManager/count.txt’)

num = int(f.read())

num += 1

print(num)f = open(‘fileManager/count.txt’, ‘a’)

f.write(str(num))

f.close()練習2:添加學生
a.每運行一次程序添加一個學生,並且打印已經添加過的所有的學生
b.每運行一次程序添加一個學生,並且以列表的形式打印已經添加過的所有的學生
stu1  -> stu1        [‘stu1’]
stu2  -> stu1 stu2   [‘stu1’, ‘stu2’]
小明   -> stu1 stu2 小明   [‘stu1’, ‘stu2’, ‘小明’]
name = input(‘輸入名字:’)

f = open(‘fileManager/student.txt’)

result = f.read()print(result + name)

f = open(‘fileManager/student.txt’, ‘a’)

f.write(name + ’ ')

f.close()