Python中的文件輸入輸出問題
Python文件輸入輸出
本文以.txt文件為例,說明Python從.txt文件中讀取內(nèi)容和向.txt文件寫入內(nèi)容的方法。
a.txt文件內(nèi)容:
犬吠水聲中,桃花帶雨濃。
樹深時(shí)見鹿,溪午不聞鐘。
野竹分青靄,飛泉掛碧峰。
無人知所去,愁倚兩三松。
文件輸入
讀取文件:
open(filename, mode)
open返回一個(gè)文件對象。
第一個(gè)參數(shù)是一個(gè)包含文件名的字符串。
第二個(gè)參數(shù)是描述文件的使用模式,mode='r’表示只讀,mode='w’表示只寫,mode=‘r+’表示可讀可寫,mode=‘a’表示打開文檔并把要寫的內(nèi)容附在文檔末尾,不會(huì)刪除文檔已有內(nèi)容。
默認(rèn)模式為’r’。
poem = open('./a.txt', 'r') print(poem) # 輸出 # <_io.TextIOWrapper name='./a.txt' mode='r' encoding='UTF-8'>
poem = open('./a.txt', 'r') print(list(poem)) # 輸出 # ['犬吠水聲中,桃花帶雨濃。\n', '樹深時(shí)見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']
通常我們使用with關(guān)鍵字來讀取文件對象,with關(guān)鍵字可以在with語句結(jié)束后自動(dòng)關(guān)閉文件,避免一直占用計(jì)算機(jī)內(nèi)存資源。
with open('./a.txt', 'r') as f: ? ? d = f.read() ? ? print(d) print(f.closed) # 輸出 # 犬吠水聲中,桃花帶雨濃。 # 樹深時(shí)見鹿,溪午不聞鐘。 # 野竹分青靄,飛泉掛碧峰。 # 無人知所去,愁倚兩三松。 # True
除了讀取文件中的所有內(nèi)容,我們還可以一行一行的讀取文件。
with open('./a.txt') as f: ? ? for line in f: ? ? ? ? print(line) # 輸出 # 犬吠水聲中,桃花帶雨濃。 # 樹深時(shí)見鹿,溪午不聞鐘。 # 野竹分青靄,飛泉掛碧峰。 # 無人知所去,愁倚兩三松。
因?yàn)樵诿恳恍心┪蔡幎紟в袚Q行符,因此每行之間都有一行為空??梢则?yàn)證一下:
with open('./a.txt') as f: ? ? d = f.readlines() ? ? print(d) # 輸出 # ['犬吠水聲中,桃花帶雨濃。\n', '樹深時(shí)見鹿,溪午不聞鐘。\n', '野竹分青靄,飛泉掛碧峰。\n', '無人知所去,愁倚兩三松。\n']
我們可以通過str.strip([chars])函數(shù)來刪除字符串末尾的換行符。
strip()函數(shù)可以刪除字符串首尾的指定字符或者字符串,參數(shù)chars指定了要?jiǎng)h除的字符的集合。
如果沒有指定,則默認(rèn)為空格或者換行符。
但是strip()只能刪除開頭或者結(jié)尾的字符或字符串,不能刪除中間部分的字符。
with open('./a.txt') as f: ? ? for line in f: ? ? ? ? print(line.strip()) # 輸出 # 犬吠水聲中,桃花帶雨濃。 # 樹深時(shí)見鹿,溪午不聞鐘。 # 野竹分青靄,飛泉掛碧峰。 # 無人知所去,愁倚兩三松。
因?yàn)樽址遣豢勺儗ο?,因此,strip()函數(shù)并不是在原來的字符串中直接進(jìn)行刪除,而是將刪除首尾字符后的字符串作為一個(gè)新對象并返回。
可以驗(yàn)證一下:
a = ' ?special ?' # 創(chuàng)建一個(gè)字符串對象并將變量a指向它 print(id(a)) # 打印a在內(nèi)存中的地址 a = a.strip() # 將刪除首尾空格后的字符串作為一個(gè)新對象,并將a指向它 print(id(a)) # 打a串在內(nèi)存中的地址 # 輸出 # 140251513494960 # 140251513470680
可得看到,刪除前后的字符串地址并不相同,說明它們是不同的對象。
文件輸出
with open('./a.txt', 'a') as f: ? ? f.write('作者:李白\n') with open('./a.txt', 'r') as f: ? ? for line in f: ? ? ? ? print(line.strip()) # 輸出 # 犬吠水聲中,桃花帶雨濃。 # 樹深時(shí)見鹿,溪午不聞鐘。 # 野竹分青靄,飛泉掛碧峰。 # 無人知所去,愁倚兩三松。 # 作者:李白
Python輸入輸出語法
Python 是一門易于學(xué)習(xí)、功能強(qiáng)大的編程語言。它提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?。Python 優(yōu)雅的語法和動(dòng)態(tài)類型以及解釋型語言的本質(zhì),使它成為多數(shù)平臺上寫腳本和快速開發(fā)應(yīng)用的理想語言。下面我們來介紹一下python的輸入輸出用法并舉幾個(gè)案例深入學(xué)習(xí)一下。
輸入和輸出
1、輸出
- 在Python中使用print()函數(shù)進(jìn)行輸出。
- 輸出字符串時(shí)可用單引號或雙引號括起來;
- 輸出變量時(shí),可不加引號;
- 變量與字符串同時(shí)輸出或多個(gè)變量同時(shí)輸出時(shí),需用“,”隔開各項(xiàng)。
print 默認(rèn)輸出是換行的,如果要實(shí)現(xiàn)不換行需要在變量末尾加上 end=“”
例:使用print()函數(shù)輸出數(shù)據(jù)。
print("這是一個(gè)輸出示例") # print()函數(shù)使用雙引號輸出示例 url = 'www.xxx.com' # 創(chuàng)建變量url,賦值為'www.xxx.com' print('我們的網(wǎng)址是', url) # print()函數(shù)使用單引號輸出變量url
運(yùn)行結(jié)果如下。
2、輸入
Python提供了input()函數(shù)用于獲取用戶鍵盤輸入的字符。
input()函數(shù)讓程序暫停運(yùn)行,等待用戶輸入數(shù)據(jù),當(dāng)獲取用戶輸入后,Python將其以字符串的形式存儲在一個(gè)變量中,方便后面使用。
例:使用input()函數(shù)實(shí)現(xiàn)輸入。
password = input("請輸入密碼:") # 輸入數(shù)據(jù)賦給變量password print('您剛剛輸入的密碼是:', password) # 輸出數(shù)據(jù)
運(yùn)行結(jié)果如下。
案例
例1:求兩數(shù)之和
編寫程序,要求輸入兩個(gè)整數(shù),求兩數(shù)之和后輸出。
(1)可使用int()函數(shù)將輸入的字符串轉(zhuǎn)化為整型數(shù)據(jù)。
(2)可使用float()函數(shù)將字符串轉(zhuǎn)化為浮點(diǎn)型數(shù)據(jù)。
a = input("請輸入第一個(gè)整數(shù):") # 輸入變量a的值 b = input("請輸入第二個(gè)整數(shù):") # 輸入變量b的值 a = int(a) # 將變量a轉(zhuǎn)換為整型數(shù) b = int(b) # 將變量b轉(zhuǎn)換為整型數(shù) c = a + b # 兩數(shù)相加賦給c print("兩數(shù)之和為:", c) # 輸出c的值
運(yùn)行結(jié)果如下。
例2:求三角形的面積
編寫程序,要求輸入三角形的三條邊(假設(shè)給定的三條邊符合構(gòu)成三角形的條件:任意兩邊之和大于第三邊),計(jì)算三角形的面積并輸出。
import math # 導(dǎo)入math模塊 a = int(input("請輸入三角形的第一條邊:")) # 輸入第一條邊并將其轉(zhuǎn)換為整型 b = int(input("請輸入三角形的第二條邊:")) # 輸入第二條邊并將其轉(zhuǎn)換為整型 c = int(input("請輸入三角形的第三條邊:")) # 輸入第三條邊并將其轉(zhuǎn)換為整型 s = 1 / 2 * (a + b + c) # 計(jì)算s area = math.sqrt(s * (s - a) * (s - b) * (s - c)) # 調(diào)用sqrt函數(shù)計(jì)算面積 print("此三角形面積為:", area) # 輸出三角形面積
運(yùn)行結(jié)果如下。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
虛擬環(huán)境及venv和virtualenv的區(qū)別說明
這篇文章主要介紹了虛擬環(huán)境及venv和virtualenv的區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02詳解Python中最常用的10個(gè)內(nèi)置函數(shù)
Python作為一種多用途編程語言,擁有豐富的內(nèi)置函數(shù)庫,這些函數(shù)可以極大地提高開發(fā)效率,本文將介紹Python中最常用的10個(gè)內(nèi)置函數(shù),我們將深入了解每個(gè)函數(shù),并提供示例代碼以幫助您更好地理解它們,需要的朋友可以參考下2023-11-11virtualenv實(shí)現(xiàn)多個(gè)版本Python共存
virtualenv用于創(chuàng)建獨(dú)立的Python環(huán)境,多個(gè)Python相互獨(dú)立,互不影響,它能夠:1. 在沒有權(quán)限的情況下安裝新套件 2. 不同應(yīng)用可以使用不同的套件版本 3. 套件升級不影響其他應(yīng)用2017-08-08pygame開發(fā):馬賽邏輯小游戲的代碼實(shí)現(xiàn)
這篇文章主要介紹了pygame開發(fā),通過本文,您可以使用pygame開發(fā)一個(gè)馬賽邏輯小游戲~有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09Pandas進(jìn)行數(shù)據(jù)編碼的十種方式總結(jié)
在機(jī)器學(xué)習(xí)中,很多算法都需要我們對分類特征進(jìn)行轉(zhuǎn)換(編碼),即根據(jù)某一列的值,新增(修改)一列。本文為大家總結(jié)了Pandas中十種數(shù)據(jù)編碼的方式,需要的可以參考一下2022-04-04python+influxdb+shell編寫區(qū)域網(wǎng)絡(luò)狀況表
這篇文章主要為大家詳細(xì)介紹了python+influxdb+shell編寫區(qū)域網(wǎng)絡(luò)狀況表,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07python+openCV對視頻進(jìn)行截取的實(shí)現(xiàn)
這篇文章主要介紹了python+openCV對視頻進(jìn)行截取的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11