1. 文件的編碼
UTF-8
GBK
GB2312
Big5
GB18030
2. 文件讀取
文件操作步驟:
打開文件
讀\寫文件
關閉文件
open(name,mode,encoding)
name:文件名字符串 “D:/haha.txt”
mode: 只讀、寫入、追加
r:以只讀方式打開
w: 只用于寫
a :用于追加
encoding:編碼方式
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 01_文件的讀取.py
@IDE : PyCharm
@Author : 劉慶東
@Date : 2025/9/11 14:12
"""
import time#打開一個文件
#f=open("D:/測試.txt","r",encoding="GBK")
#print(type(f))#print(f"讀取10個字節的內容:{f.read(10)}")
# print(f"讀取全部的內容:{f.read()}")#讀取的是全部的行
# lines=f.readlines()
# print(type(lines))
# print(f"內容是====:{lines}")#逐行讀取
# line1=f.readline()
# print(line1)#使用循環讀取# for line in f:
# print(f"每一行是:{line}")
#
# #文件的關閉
# f.close()#使用with語法去打開文件
with open("D:/abc.txt","r",encoding="GBK") as f:for line in f:print(line)time.sleep(1)#單位是秒
3. 文件寫入
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 02_文件寫入.py
@IDE : PyCharm
@Author : 劉慶東
@Date : 2025/9/11 14:25
"""f = open("D:/abc.txt","w",encoding="GBK")
f.write("Hello World")
f.flush()#清空管道 涮新緩存區
f.close()#關閉文件
print("寫入成功了")
4.文件操作綜合案例
# -*- coding: utf-8 -*-
"""
@Project : 01-python-learn
@File : 04_注冊登錄.py
@IDE : PyCharm
@Author : 劉慶東
@Date : 2025/9/11 14:54
"""import os#定義用戶的數據文件存儲位置
USER_DATA_FILE="D:/userss.txt"#確保我的文件是存在的
def ensure_file_exists():"""確保文件存在,如果不存在就創建它"""if not os.path.exists(USER_DATA_FILE):#沒有就創建with open(USER_DATA_FILE,"w",encoding="GBK") as f:passprint(f"用戶文件{USER_DATA_FILE}已經創建完畢了")#注冊
def register():"""注冊新的用戶"""print("=========用戶注冊========")username=input("請輸入用戶名").strip()#檢查用戶名名是不是空的if not username:print("用戶名不能為空!")return Falsepassword=input("請輸入密碼").strip()confirm_password=input("請再次輸入密碼").strip()#檢查兩次密碼是否一致if not password or not confirm_password:print("密碼不能為空!")return Falseif password != confirm_password:print("兩次密碼輸入不一致!")return False#用戶名如果已經被注冊過了你就不能注冊了,稍后再寫 存數據的格式: liushao:adminif user_exists(username):print("錯誤:該用戶名已經被注冊過了,請選擇其他的用戶名")return False#執行文件的寫入try:with open(USER_DATA_FILE,"a",encoding="GBK") as f:f.write(f"{username}:{password}\n")print(f"恭喜你{username}注冊成功了")return Trueexcept Exception as e:print(f"寫入失敗了因為{e}")return False#判斷用戶名是否被注冊過了
def user_exists(username):"""檢查用戶名是否存在"""try:with open(USER_DATA_FILE,"r",encoding="GBK") as f:for line in f:line=line.strip()if line:#確保不是空行name=line.split(":")[0]#拿到用戶名部分if username==name:return Truereturn Falseexcept FileNotFoundError:# 如果文件不存在,說明還沒有用戶return Falseexcept Exception as e:print(f"檢查用戶名的時候出現了錯誤{e}")return False#登錄
def login():"""用戶登錄"""print("=========用戶登錄========")username = input("請輸入用戶名:").strip()password = input("請輸入密碼:").strip()if not username or not password:print("用戶名或者密碼不能為空")return Falseif validate_userinfo(username,password):print(f"歡迎回來:{username}")return Trueelse:print("用戶名或者密碼錯誤!")return Falsedef validate_userinfo(username,password):"""驗證用戶名或者密碼是否正確"""try:with open(USER_DATA_FILE,"r",encoding="GBK") as f:for line in f:line=line.strip()if line:#跳過空行parts=line.split(":",1)#分隔1次if(len(parts)==2):my_username,my_password=parts#反向賦值if my_username==username and my_password==password:return True#print("----------注意看下面的數據:-----------")#print(parts)#沒有寫完呢 輸出看一下 ['liushao', 'admin']#return Truereturn Falseexcept FileNotFoundError:print("未知錯誤")return Falsedef main():ensure_file_exists()#先判斷我們的文件有沒有while True:print("*"*36)print("簡易的注冊登錄重點訓練文件讀取和寫入")print("\t\t\t 1.注冊")print("\t\t\t 2.登錄")print("\t\t\t 3.退出")print("*" * 36)choice=input("請選擇[1--3]").strip()if choice=="1":register()elif choice=="2":login()elif choice=="3":print("感謝使用,再見!")breakelse:print("請輸入 1 2 3 其中的一個數字")if __name__ == "__main__":main()"""
************************************
簡易的注冊登錄重點訓練文件讀取和寫入1.注冊2.登錄3.退出
************************************
請選擇[1--3]1
=========用戶注冊========
請輸入用戶名beijing
請輸入密碼beijing
請再次輸入密碼beijing
恭喜你beijing注冊成功了
************************************
簡易的注冊登錄重點訓練文件讀取和寫入1.注冊2.登錄3.退出
************************************
請選擇[1--3]2
=========用戶登錄========
請輸入用戶名:beijing
請輸入密碼:beijing
歡迎回來:beijing
************************************
簡易的注冊登錄重點訓練文件讀取和寫入1.注冊2.登錄3.退出
************************************
請選擇[1--3]3
感謝使用,再見!"""