66-python中的文件操作

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
感謝使用,再見!"""

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922068.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922068.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922068.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FPGA實例源代碼集錦:27個實戰項目

本文還有配套的精品資源,點擊獲取 簡介:FPGA是一種可編程邏輯器件,允許用戶根據需求配置硬件功能。本壓縮包提供27個不同的FPGA應用實例源代碼,旨在幫助初學者深入學習FPGA設計,并為專業工程師提供靈感。內容涵蓋了…

基于 Vue+Mapbox 的智慧礦山可視化功能的技術拆解

01、項目背景 在全球礦業加速向 “高端化、智能化、綠色化” 轉型的浪潮下,傳統礦業面臨的深地開采難題、效率瓶頸與安全隱患日益凸顯。 在礦業轉型的迫切需求與政策、技術支撐的背景下依托 GIS 技術,開展了 “中國智礦” GIS 開發項目,旨在…

進程狀態(Linux)

進程狀態Linux進程狀態Linux進程狀態進程描述R運行狀態S睡眠狀態D磁盤休眠狀態T停止狀態t被追蹤狀態(調試狀態)X死亡狀態Z僵死狀態其實大致也就可以分為三種運行,阻塞,掛起。運行狀態每個cpu里都有一個運行隊列,進程在運行隊列里,…

物聯網領域中PHP框架的最佳選擇有哪些?

物聯網(IoT)作為近年來快速發展的技術領域,已經滲透到智能家居、工業自動化、智慧城市等方方面面。作為Web開發中廣泛使用的語言,PHP憑借其易學易用、開發效率高和生態豐富的特點,也在物聯網領域找到了用武之地。 本文…

java反射(詳細教程)

我們平常創建類的實例并調用類中成員需要建立在一個前提下,就是已經知道類名和類中成員的信息,靈活性大大降低。甚至在一些項目中還需要修改源碼來滿足使用條件,大大降低了操作的靈活性。Java 反射(Reflection)是 Java…

消息隊列-初識kafka

優缺點 消息隊列的優點: 實現系統解耦: :::color5 系統解耦解釋 有 MQ 時是 “服務 A 發消息到隊列,其他服務從隊列拿消息,新增服務接隊列就行”;無 MQ 時是 “服務 A 直接調其他服務的接口 / 依賴,新增 / …

實踐《數字圖像處理》之Canny邊緣檢測、霍夫變換與主動二值化處理在短線段清除應用中的實踐

在最近的圖像處理項目中,其中一個環節:圖片中大量短線(不是噪聲),需要在下一步處理前進行清除。在確定具體實現時,碰到了Canny邊緣檢測、霍夫變換與主動二值化處理的辯證使用,相關邏輯從圖片灰度…

vue3與ue5通信-工具類

工具 ue5-simple.js /*** UE5 通信工具* 兩個核心方法:發送消息和接收消息*/// 確保全局對象存在 if (typeof window ! undefined) {window.ue window.ue || {};window.ue.interface window.ue.interface || {}; }/*** 生成 UUID*/ function generateUUID() {retu…

在kotlin中如何使用像java中的static

在 Kotlin 中,沒有直接的 static 關鍵字,但有幾種等效的方式來實現 Java 中靜態成員的功能: 1. 伴生對象 (Companion Object) - 最常用 class MyClass {companion object {// 靜態常量const val STATIC_CONSTANT "constant value"…

如何在 Spring Boot 中指定不同的配置文件?

介紹 Spring Boot 提供了多種方式來管理和加載配置文件,特別是在多環境配置下,比如開發、測試和生產環境。通過指定不同的配置文件,可以靈活地調整應用程序的行為,以適應不同的需求。本文將介紹在 Spring Boot 中如何指定使用不同…

在centOS源碼編譯方式安裝MySQL5.7

一、前言 在生產環境中部署數據庫時,很多人會選擇直接使用 yum/apt 包管理器 安裝 MySQL,這樣簡單快速,但缺點是版本受限,靈活性不足。對于需要指定版本、啟用特定編譯參數或優化的場景,源碼編譯安裝 MySQL 就顯得非常…

探討Hyperband 等主要機器學習調優方法的機制和權衡

本篇文章Master Hyperband — An Efficient Hyperparameter Tuning Method in Machine Learning深入探討了Hyperband這一高效的超參數調優方法。文章的技術亮點在于其結合了多臂老虎機策略和逐次減半算法,能夠在大搜索空間中快速剔除表現不佳的配置,從而…

Mysql:InnoDB 關鍵特性

目錄 一、插入緩沖(Change Buffer)→ 快遞驛站的 “臨時存放區” 二、兩次寫(Double Write)→ 重要文件的 “備份存檔” 三、自適應哈希索引(AHI)→ 圖書館的 “熱門書快捷查找區” 四、異步 IO&#x…

STM32-----SPI

SPI簡介SCK:和I2C中SCL的時鐘線一個作用,都是在高電平拿出數據,在低電平寫數據MOSI:主機輸出從機輸入MISO:主機輸入從機輸出,只有當對應從機的SS為低電平,從機的MISO引腳才能設置推挽輸出,當從機SS為高電平時&#xff…

華為考試:HCIE數通考試難度分析

隨著信息技術的飛速發展,網絡技術已成為支撐各行各業運轉的重要基礎,市場對高水平網絡技術人才的需求持續增長。HCIE作為華為認證體系中的最高級別認證,代表了網絡技術領域的專業頂尖水平。本文將對HCIE數通認證的考試內容、難度及備考策略進…

一些常用的激活函數及繪圖

深度網絡的一些常用激活函數,并通過matplot繪制出來: import matplotlib.pyplot as plt import numpy as npdef relu(x):return np.maximum(0, x)def leaky_relu(x, alpha0.01):return np.where(x > 0, x, alpha * x)def gelu(x):return 0.5 * x * (1…

AE蘋果手機iPhone 17展示動畫片頭模板 App Promo Phone 17 Pro

專為 App 發布會、電商促銷、新品宣傳 打造的 iPhone 17 Pro 動畫展示 AE 模板。 4K 超清分辨率 26 張可替換照片位,無需第三方插件,拖拽即可輸出專業級手機宣傳片。 核心亮點 4K 超清:38402160 分辨率,大屏投放與社媒高清壓縮無…

基于Python的云原生TodoList Demo 項目,驗證云原生核心特性

以下是一個基于 Python 的云原生 TodoList Demo 項目,涵蓋 容器化、Kubernetes 編排、CI/CD、可觀測性、彈性擴縮容 等核心云原生特性,代碼簡潔且附詳細操作指南,適合入門學習。項目概覽 目標:實現一個支持增刪改查(CR…

go 日志的分裝和使用 Zap + lumberjack

自帶的log無法滿足 按大小輪轉 ,按天數清理舊日志 ,自動壓縮 ,限制備份數量 ,防止磁盤寫滿 ,生產環境推薦 等 使用 Zap lumberjack package mainimport ("go.uber.org/zap""go.uber.org/zap/zapcore&q…

【.Net技術棧梳理】01-核心框架與運行時(CLR)

文章目錄1 .NET Runtime(CLR-公共語言運行時)1.1 中間語言 IL1.1.1 從源代碼到通用中間語言(IL)1.1.2 運行時加載:CLR登場1.1.3 核心步驟:即時編譯 (JIT Compilation)1.1.4 執行與內存管理(GC&a…