文件和異常

從文件中讀取數據

讀取整個文件

讀取整個文件 要讀取文件,需要一個包含幾行文本的文件。下面首先創建一個文件,它包含精確 到小數點后30位的圓周率值,且在小數點后每10位處換行:

pi_digits.txt?

3.141592653589793238462643383279

Python方法rstrip() 刪除字符串末尾的空白。文件路徑

將類似于pi_digits.txt的簡單文件名傳遞給函數open() 時,Python將在當前執行 的文件(即.py程序文件)所在的目錄中查找。 根據你組織文件的方式,有時可能要打開不在程序文件所屬目錄中的文件。

由于文件夾text_files位于文件夾python_work中,可以使用相對文件路徑來打開其 中的文件。相對文件路徑讓Python到指定的位置去查找,而該位置是相對于當前運 行的程序所在目錄的。

with open('text_files/filename.txt') as file_object: 

這行代碼讓Python到文件夾python_work下的文件夾text_files中去查找指定的.txt 文件。

注意  顯示文件路徑時,Windows系統使用反斜杠(\ )而不是斜杠(/ ), 但在代碼中依然可以使用斜杠。

file_path = '/home/ehmatthes/other_files/text_files/_filename_.txt'
with open(file_path) as file_object:

還可以將文件在計算機中的準確位置告訴Python,這樣就不用關心當前運行的程序 存儲在什么地方了。這稱為絕對文件路徑 。

逐行讀取

讀取文件時,常常需要檢查其中的每一行:可能要在文件中查找特定的信息,或者 要以某種方式修改文件中的文本。

創建一個包含文件各行內容的列表

使用關鍵字with 時,open() 返回的文件對象只在with 代碼塊內可用。如果要 在with 代碼塊外訪問文件的內容,可在with 代碼塊內將文件的各行存儲在一個列表中,并在with 代碼塊外使用該列表:可以立即處理文件的各個部分,也可以推遲到程序后面再處理。

使用文件的內容

filename = 'pi_digits.txt'with open(filename) as file_object:lines = file_object.readlines()
pi_string = ''
for line in lines:pi_string += line.rstrip()
print(pi_string)
print(len(pi_string))raw_input()

包含一百萬位的大型文件

filename = 'pi_million_digits.txt'
with open(filename) as file_object:lines = file_object.readlines()
pi_string = ''
for line in lines:pi_string += line.strip()
print(f"{pi_string[:52]}...")
print(len(pi_string))

二.寫入文件

寫入空文件

保存數據的最簡單的方式之一是將其寫入文件中。通過將輸出寫入文件,即便關閉 包含程序輸出的終端窗口,這些輸出也依然存在:可以在程序結束運行后查看這些 輸出,可以與別人分享輸出文件,還可以編寫程序來將這些輸出讀取到內存中并進行處理。

filename = 'programming.txt'
with open(filename, 'w') as file_object:file_object.write("I love programming.")

第一個實參也是要打開的文 件的名稱。第二個實參('w' )告訴Python,要以寫入模式 打開這個文件。打開文 件時,可指定讀取模式 ('r' )、寫入模式 ('w' )、附加模式 ('a' )或讀 寫模式 ('r+' )。如果省略了模式實參,Python將以默認的只讀模式打開文件。

注意 Python只能將字符串寫入文本文件。要將數值數據存儲到文本文件中, 必須先使用函數str() 將其轉換為字符串格式。

寫入多行

filename = 'programming.txt'
with open(filename, 'w') as file_object:file_object.write("I love programming.\n")file_object.write("I love creating new games.\n")

要讓每個字符串都單獨占一行

附加到文件

如果要給文件添加內容,而不是覆蓋原有的內容,可以以附加模式 打開文件。以附 加模式打開文件時,Python不會在返回文件對象前清空文件的內容,而是將寫入文 件的行添加到文件末尾。如果指定的文件不存在,Python將為你創建一個空文件。

filename = 'programming.txt'
with open(filename, 'a') as file_object:file_object.write("I love programming.\n")file_object.write("I love creating new games.\n")

三.異常

"""
Python使用稱為異常的特殊對象來管理程序執行期間發生的錯誤。每當發生讓
Python不知所措的錯誤時,它都會創建一個異常對象。如果你編寫了處理該異常的代碼,
程序將繼續運行;如果未對異常進行處理,程序將停止并顯示traceback,其中包含有關異常的報告。
"""
try:print(5/0)
except ZeroDivisionError:print("You can't divide by zero!")
"""
使用try-except代碼塊
"""print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")while True:first_number = input("\nFirst number: ")if first_number == 'q':breaksecond_number = input("Second number: ")if second_number == 'q':breaktry:answer = int(first_number) / int(second_number)except ZeroDivisionError:print("You can't divide by 0!")else:print(answer)
"""
Python嘗試執行try 代碼塊中的
代碼,只有可能引發異常的代碼才需要放在try 語句中。有時候,有一些僅在try
代碼塊成功執行時才需要運行的代碼,這些代碼應放在else 代碼塊中。
"""

四.存儲數據

模塊json 讓你能夠將簡單的Python數據結構轉儲到文件中,并在程序再次運行時 加載該文件中的數據。你還可以使用json 在Python程序之間分享數據。更重要的 是,JSON數據格式并非Python專用的,這讓你能夠將以JSON格式存儲的數據與使用 其他編程語言的人分享。

  • JSON(JavaScript Object Notation)格式最初是為JavaScript開發 的,但隨后成了一種常見格式,被包括Python在內的眾多語言采用。

使用json.dump() 和json.load()

編寫一個存儲一組數的簡短程序,再編寫一個將這些數讀取到內存中的程 序。第一個程序將使用json.dump() 來存儲這組數,而第二個程序將使用 json.load() 。 函數json.dump() 接受兩個實參:要存儲的數據,以及可用于存儲數據的文件對象。

number_writer.py

import json
numbers = [2, 3, 5, 7, 11, 13]
filename = 'numbers.json'
with open(filename, 'w') as f:json.dump(numbers, f)

保存和讀取用戶生成的數據

使用json 保存用戶生成的數據大有裨益,因為如果不以某種方式存儲,用戶的信 息會在程序停止運行時丟失。

import json
username = input("What is your name? ")
filename = 'username.json'
with open(filename, 'w') as f:json.dump(username, f)print(f"We'll remember you when you come back, {username}!")
'''
What is your name? Eric
We'll remember you when you come back, Eric!
'''
import jsonfilename = 'username.json'with open(filename) as f:username = json.load(f)print(f"Welcome back, {username}!")
"""
使用json.load() 將存儲在username.json中的信息讀取到變量
username 中。恢復用戶名后,就可以歡迎用戶回來了
"""
'''
Welcome back, Eric!
'''
import json# 如果以前存儲了用戶名,就加載它。# 否則,提示用戶輸入用戶名并存儲它。
filename = 'username.json'
try:with open(filename) as f:username = json.load(f)
except FileNotFoundError:username = input("What is your name? ")with open(filename, 'w') as f:json.dump(username, f)print(f"We'll remember you when you come back, {username}!")
else:print(f"Welcome back, {username}!")

重構

import json
def get_stored_username():"""如果存儲了用戶名,就獲取它。"""filename = 'username.json'try:with open(filename) as f:username = json.load(f)except FileNotFoundError:return Noneelse:return username
def greet_user():"""問候用戶,并指出其名字。"""username = get_stored_username()if username: print(f"Welcome back, {username}!")else:username = input("What is your name? ")filename = 'username.json'with open(filename, 'w') as f:json.dump(username, f)print(f"We'll remember you when you come back, {username}!")
greet_user()
"""
代碼能夠正確地運行,但通過將其劃分為一系列完成具體工作的函數,還可以改進。這樣的過程稱為重構。
重構讓代碼更清晰、更易于理解、更容易擴展。要重構remember_me.py,
可將其大部分邏輯放到一個或多個函數中。
remember_me.py的重點是問候用戶,因此將其所有代碼都放到一個名為
greet_user() 的函數中
"""

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

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

相關文章

2025最新版Windows通過GoLand遠程連接Linux構建Go項目保姆級教學

以Ubuntu24.04和GoLand2024.1.6為例子,演示如何在Windows上通過GoLand遠程連接Linux進行Go編程。 通過go version指令可以發現當前Ubuntu系統沒有安裝go。 go version 通過指令安裝go,其他系統可以通過wget安裝,要指定安裝的具體go版本&…

Spring Boot 集成 Lua 腳本:實現高效業務邏輯處理

1. 前言 1.1 什么是Lua Lua是一種輕量級、高性能的腳本語言,常用于游戲開發、嵌入式系統、配置文件解析等領域。Lua語法簡潔,易于學習和使用,且具有強大的擴展性。 1.2 Spring Boot與Lua集成的意義 將Lua集成到Spring Boot應用中,可以實現動態配置業務邏輯、簡化復雜業…

Linux筆記---文件系統硬件部分

1. 文件系統 文件系統是操作系統用于明確存儲設備(常見的是磁盤,也有基于NAND Flash的固態硬盤)或分區上的文件的方法和數據結構,即在存儲設備上組織文件的方法。 1.1 基本組成 索引節點(inode)&#xff…

12.31[net]review

復用(Multiplexing)的概念 定義:在傳輸層,復用是指多個應用進程可以使用同一個傳輸層協議(如 TCP 或 UDP)來發送數據。從應用層的角度看,不同的應用進程(如網頁瀏覽器、郵件客戶端等…

網絡安全防護架構有哪些 網絡安全防護措施包括

網絡安全預防措施 網安措施 計算機網絡安全措施主要包括保護網絡安全、保護應用服務安全和保護系統安全三個方面,各個方面都要結合考慮安全防護的物理安全、防火墻、信息安全、Web安全、媒體安全等等。 (一)保護網絡安全。 網絡安全是為保護商務各方網絡端系統之…

物理筆記 | 拓撲相變的物理圖像

1. 一般相變 對于一般的相變是朗道理論預言的由對稱性自發破缺導致的。 比如在一維橫場Ising模型中的量子相變 H ? J ∑ j σ j z σ j 1 z ? h ∑ j σ j x H -J \sum_{j} \sigma_j^z \sigma_{j1}^z - h \sum_{j} \sigma_j^x H?Jj∑?σjz?σj1z??hj∑?σjx? 其相…

紅黑樹介紹

1 問題引入 為什么有AVL樹,還要引入紅黑樹? 在進行多次的插入和刪除時: 1)AVL樹會存在大量的旋轉操作,追求的是嚴格平衡; 2)紅黑樹通過為節點增加顏色來換取增刪節點時旋轉次數…

Java基礎:枚舉類enum入門案例

1.基礎枚舉定義與使用: package com.zxy;public class Main {public static void main(String[] args) { // 獲取枚舉值cars car cars.BMW;switch (car){case BMW :System.out.println("BMW");break;case BENZ :System.out.println("BENZ&…

torch numpy sort排序出現索引順序不正常

問題 torch 調用numpy ,numpy 的sort排序值的順序沒發現問題,但是排序的索引argsort()是有明顯問題。 方案 多一次取索引 arr.argsort().argsort()參考: https://blog.csdn.net/qq_50571974/article/details/123173118

大模型架構記錄5-向量數據庫

一 倒排索引、KNN、PQ 1.1 基礎版本 query -> requery 對問題做處理,處理上下文 對query 做 refined query 1.2 向量數據庫 二 搜索邏輯 2.1 knn 2.2 近似KNN 先和N個空間的均值比較再和空間內部的所有點比較,計算最近值。 優化一: …

Python :數據模型

一. 什么是數據模型? Python數據模型是Python對象系統的抽象,通過一組特殊方法?(如__init__、__len__等)和協議?(如迭代協議、上下文管理協議),定義了對象如何與語言的內置功能(如…

考研數學非數競賽復習之Stolz定理求解數列極限

在非數類大學生數學競賽中,Stolz定理作為一種強大的工具,經常被用來解決和式數列極限的問題,也被譽為離散版的’洛必達’方法,它提供了一種簡潔而有效的方法,使得原本復雜繁瑣的極限計算過程變得直觀明了。本文&#x…

電商平臺數據高效集成:旺店通旗艦版到MySQL方案解析

旺店通旗艦版-商品信息查詢到MySQL的高效數據集成方案 在現代電商平臺中,數據的高效集成和處理是業務成功的關鍵。本文將分享一個實際案例,展示如何通過輕易云數據集成平臺,將旺店通旗艦奇門的數據無縫對接到MySQL數據庫,實現商品…

ACL初級總結

ACL–訪問控制列表 1.訪問控制 在路由器流量流入或者流出的接口上,匹配流量,然后執行相應動作 permit允許 deny拒絕 2.抓取感興趣流 3.ACL匹配規則 自上而下逐一匹配,若匹配到了則按照對應規則執行動作,而不再向下繼續匹配 思科:ACL列表末尾隱含一條拒絕所有的規則 華為:AC…

【微知】plantuml在泳道圖中如何將多個泳道框起來分組并且設置顏色?(box “瀏覽器“ #LightGreen endbox)

泳道分組并且著色 分組用 box和endbox ,顏色用#xxx,標注用"xxx" box "瀏覽器" #LightGreen participant "瀏覽器1" as Browser participant "瀏覽器2" as Browser2 endboxparticipant "服務端" as …

C語言:計算并輸出三個整數的最大值 并對三個數排序

這是《C語言程序設計》73頁的思考題。下面分享自己的思路和代碼 思路&#xff1a; 代碼&#xff1a; #include <stdio.h> int main() {int a,b,c,max,min,mid ; //設置大中小的數分別為max&#xff0c;mid&#xff0c;min&#xff0c;abc為輸入的三個數printf("ple…

【PyMySQL】Python操作MySQL

1、安裝pymysql pip install pymysql2、導包 import pymysql3、連接MySQL數據庫 db pymysql.connect(hostlocalhost # 本地localhost&#xff0c;或服務器IP地址,userroot # 用戶名,passwordpassword # 密碼,databasemysql) #數據庫名4、創建游標 cursor db.cursor()5、增…

藍橋備賽(18)- 紅黑樹和 set 與 map(上)

對于二叉搜索樹 &#xff0c; 平衡二叉樹 &#xff0c; 以及紅黑樹 &#xff0c; 目前只需要了解背后的原理 &#xff0c; 不做代碼實現的要求 &#xff0c; 重要的就是了解各種操作的時間復雜度即可 &#xff0c; 為set 與 map 做鋪墊 一、二叉搜索樹 1.1 基本概念 相較與于堆…

【Synchronized】不同的使用場景和案例

【Synchronized】不同的使用場景和案例 【一】鎖的作用范圍與鎖對象【1】實例方法&#xff08;對象鎖&#xff09;【2】靜態方法&#xff08;類鎖&#xff09;【3】代碼塊&#xff08;顯式指定鎖對象&#xff09;【4】類鎖&#xff08;通過Class對象顯式鎖定&#xff09; 【二】…

大模型在原發性急性閉角型青光眼預測及治療方案制定中的應用研究報告

目錄 一、引言 1.1 研究背景與意義 1.2 研究目的與方法 1.3 國內外研究現狀 二、原發性急性閉角型青光眼概述 2.1 疾病定義與分類 2.2 發病機制與危險因素 2.3 癥狀與診斷方法 三、大模型在原發性急性閉角型青光眼預測中的應用 3.1 大模型原理與優勢 3.2 術前風險預…