日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python基础概念_9_输入输出

發(fā)布時間:2024/9/27 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python基础概念_9_输入输出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

輸入輸出

10 輸入輸出

10.1 簡介

我們在程序處理時可能會遇到跟用戶進(jìn)行交互的場景。比如有一個程序是根據(jù)用戶輸入的字符來判斷他輸入的是字母還是數(shù)字,然后打印到屏幕。這時我們就要用到input、print函數(shù)來實(shí)現(xiàn)對輸入的處理。

?

其它的輸入輸出場景像我們的文件和目錄的處理,因?yàn)槲募遣僮飨到y(tǒng)里基礎(chǔ)的組成部分,所以對它的創(chuàng)建、修改、刪除是我們必備的技能。接下來我們將做詳細(xì)的介紹。

?

10.2屏幕打印輸出

這里使用print函數(shù)即可。普通方法我們直接在print里輸入要打印的內(nèi)容,如

print('Helloworld')

結(jié)果:

Hello world

當(dāng)然我們也可以通過逗號來實(shí)現(xiàn)輸出的通過空格的拼接,見下:

print('第一個字','第二個字','第三個字')

結(jié)果:

第一個字 第二個字 第三個字

10.3? 讀取鍵盤輸入

我們一般通過input函數(shù)來接收鍵盤的輸入的一行文本。

?

比如這里我們搞個回顯的程序,鍵盤里輸入什么,屏幕里就打印什么:

?

str = input('請輸入:')

這里輸入的是:我是趣味編程

?

print("你輸入的內(nèi)容是: " ,str)

結(jié)果:

你輸入的內(nèi)容是:? 我是趣味編程

10.4 處理文件

我們一般是通過python里封裝的file對象來處理文件。該對象封裝了open(打開文件)、read(讀文件)、write(寫文件)、close(關(guān)閉文件)等常用的文件操作方法。以下我們逐個介紹下這些方法。

10.4.1 打開文件

打開文件的語法一般是:

open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True)

?

參數(shù)解釋:

?? file_name:該參數(shù)是要訪問的文件名稱,可以是某個文件對應(yīng)的完整路徑名也可以是程序所在目錄下的文件名。比如:D:\\tmp\\xiaodao.txt或則xiaodao.txt

?? access_mode:該參數(shù)指定了打開文件的模式:只讀,寫入,追加等。但這個參數(shù)不是必須的,默認(rèn)值是只讀(r)。文件訪問模式的見本節(jié)附錄的列表。

?? buffering:該參數(shù)是指定緩存的設(shè)置方式

1)? 設(shè)置為0時不會被緩存。

2)? 設(shè)置為1,代表訪問文件時會緩存。

3)? 設(shè)置值大于1的整數(shù),則代表的是寄存區(qū)的緩沖大小。

4)? 設(shè)置為負(fù)值,則表示緩沖大小則為系統(tǒng)默認(rèn)值。

?? encoding:該參數(shù)代表字符編碼,是可選參數(shù)一般在文本模式下使用。

?? errors:該參數(shù)代表如何處理編碼錯誤。

1)? 設(shè)置為'strict',代表程序錯誤時拋出ValueError異常(這是默認(rèn)值)。

2)? 設(shè)置為'ignore',代表忽略錯誤,這樣會導(dǎo)致文件操作時數(shù)據(jù)丟失。

?

文件訪問模式列表:

?

?

模式

描述

備注

r

以只讀方式打開文件,文件指針指向文件開頭。

默認(rèn)模式

rb

以二進(jìn)制格式打開文件用于只讀。文件指針指向在文件開頭。

二進(jìn)制文件的默認(rèn)模式

r+

打開一個文件用于讀寫,文件指針指向文件的開頭。

?

rb+

以二進(jìn)制格式打開文件用于讀寫,文件指針指向文件的開頭。

?

w

打開文件只用于寫入,如果文件已存在則覆蓋,如果文件不存在則創(chuàng)建。

?

wb

以二進(jìn)制格式打開文件只用于寫入,如果文件已存在則覆蓋,如果文件不存在則創(chuàng)建。

?

w+

打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

?

wb+

以二進(jìn)制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。

?

a

以追加方式打開一個文件。如果文件已存在,則文件指針指向文件的末尾。即新的內(nèi)容會追加到之前文件之后。如果該文件不存在,則創(chuàng)建新文件后寫入。

?

ab

以二進(jìn)制格式打開一個文件用于追加。如果文件已存在,則文件指針指向文件的末尾。即新的內(nèi)容會追加到之前文件之后。如果該文件不存在,則創(chuàng)建新文件后寫入。

?

a+

打開文件用于讀寫。如果該文件已存在,文件指針指向文件的末尾。即新的內(nèi)容會追加到之前文件之后。如果該文件不存在,則會創(chuàng)建新的文件用來讀寫。

?

ab+

以二進(jìn)制格式打開文件用于讀寫。如果該文件已存在,文件指針指向文件的末尾。即新的內(nèi)容會追加到之前文件之后。如果該文件不存在,則會創(chuàng)建新的文件用來讀寫。

?

?

?

代碼示例:

?

# 打開一個文件

f =open("D:\\tmp\\xiaodao.txt ", "w")

f.write(" Python 是一個比較流行的語言。\n趣味編程是個很用心的團(tuán)隊(duì)!\n")

# 關(guān)閉打開的文件

f.close()

?

10.4.2 讀文件

讀文件即讀取文件的內(nèi)容,調(diào)用f.read(size), 這將讀取一定數(shù)目的數(shù)據(jù), 然后作為字符串或字節(jié)對象返回。這里size 指字節(jié)數(shù),是個可選的參數(shù)。 當(dāng) size 被忽略了或者為負(fù), 則代表讀取并且返回該文件的所有內(nèi)容。

?

代碼示例:

這里假設(shè)有個文件是D:\\tmp\\xiaodao.txt,文件里的內(nèi)容是:

Python 是一個比較流行的語言。

趣味編程是個優(yōu)質(zhì)的團(tuán)隊(duì)。

?

# 打開一個文件

f =open("D:\\tmp\\xiaodao.txt", "r")

str =f.read()

print(str)

# 關(guān)閉打開的文件

f.close()

執(zhí)行結(jié)果:

Python 是一個非常好的語言。

趣味編程是個優(yōu)質(zhì)的團(tuán)隊(duì)。

?

當(dāng)然你也可以通過readline函數(shù)讀取一行的方式來讀文件:

?

# 打開一個文件

f =open("D:\\tmp\\xiaodao.txt", "r")

str =f.readline()

print(str)

# 關(guān)閉打開的文件

f.close()

?

執(zhí)行結(jié)果:

Python 是一個非常好的語言。

注:這里只是讀取了第一行。如果想讀取多行可以使用readlines函數(shù)。

?

f =open("D:\\tmp\\xiaodao.txt", "r")

strs =f.readlines()

forsingle in strs:

??? if len(single) ==0:

??????? break

??? single = ''.join(single).strip('\n')???

??? print(single)

# 關(guān)閉打開的文件

f.close()執(zhí)行結(jié)果:

Python 是一個非常好的語言。

趣味編程是個優(yōu)質(zhì)的團(tuán)隊(duì)

?

注:這里對換行符 “\n”做了處理,因?yàn)槟J(rèn)“\n”會被輸出成空行。

10.4.3 寫文件

寫文件對應(yīng)write函數(shù),該函數(shù)是將字符串寫入文件中。

?

# 打開一個文件

f =open("D:\\tmp\\xiaodao.txt", "w")

num =f.write( " Python 是一個非常好的語言。\n趣味編程是個優(yōu)質(zhì)的團(tuán)隊(duì)\n" )

print(num)

# 關(guān)閉打開的文件

f.close()

?

執(zhí)行結(jié)果:

31

?

注:這里字符串

“Python 是一個非常好的語言。\n趣味編程是個優(yōu)質(zhì)的團(tuán)隊(duì)\n”會被寫入到文件中,同時輸出提供多少個字節(jié)被寫入。注意這里漢字在統(tǒng)計(jì)時算一個字節(jié)。所以是31。

10.4.4 定位文件

如果我想知道當(dāng)前文件指針相對于文件頭偏于的字符數(shù)可以通過tell函數(shù)。

如果我們想改變當(dāng)前文件指針的位置時可以通過seek函數(shù)來定位文件。該函數(shù)的語法見下:

f.seek(offset,from_what)

參數(shù)說明:

?? offset是相對于參考點(diǎn)向前移動offset個字符數(shù)。如果offset是負(fù)值,則表示向后移動offset個字符數(shù)

?

?? from_what是文件指針的參考點(diǎn)

1)? 0代表從文件開頭計(jì)算,默認(rèn)為0

2)? 1代表從當(dāng)前指針?biāo)谖恢糜?jì)算

3)? 2代表從文件末尾計(jì)算

?

注:針對文本文件,python3里只能從文件開頭遍歷。但對于二進(jìn)制文件沒有限制。

?

代碼示例:

f =open("G:\\tmp\\xiaodao.txt", "r")?

f.read()?

print(f.tell())? #54,指針在文檔的末端(統(tǒng)計(jì)從0開始,漢字占2個字符,所以是54)

f.seek(0);print(f.tell()) #0代表指針在文檔開頭?

f.seek(8,0);print(f.tell()); #指針從文檔頭向后移動到第8個字符數(shù)。注意指針是從0開始算的,所以是自然順序的底9位。

print(f.read(5))#結(jié)果是:是一個非常

f.seek(10,2);print(f.tell());#這里會報(bào)錯,具體見結(jié)果頁面。

執(zhí)行結(jié)果:

當(dāng)前文件指針位置:??? ???54

當(dāng)前文件指針位置:?????? 0

當(dāng)前文件指針位置:?????? 8

從當(dāng)前指針位置取5個字符:??????? 是一個非常

Traceback (mostrecent call last):

? File "FileOperate.py", line 26, in<module>

??? f.seek(10,2); print(f.tell());

io.UnsupportedOperation:can't do nonzero end-relative seeks

?

10.4.5 關(guān)閉文件

該操作是文件的關(guān)閉文件并釋放系統(tǒng)的資源。代碼見 9.3.3章節(jié)里的的示例。

10.4.6 重命名文件

重新命名文件。一般我們通過os模塊里的rename函數(shù)進(jìn)行設(shè)置。語法見下:

os.rename(current_file_name,new_file_name)

?

參數(shù)解釋:

?? current_file_name是當(dāng)前文件名

?? new_file_name是新的文件名

?

?

代碼示例:

importos

os.rename("G:\\tmp\\xiaodao.txt","G:\\tmp\\xiaodaobiancheng.txt")

?

執(zhí)行結(jié)果:

文件xiaodao.txt被重命名為xiaodaobiancheng.txt

10.4.7 刪除文件

刪除文件, 一般我們通過os模塊里的rename函數(shù)進(jìn)行設(shè)置。語法見下:

os.remove(file_name)

?

?

參數(shù)解釋:

?? file_name是指文件名

?

?

代碼示例:

importos

os.remove("G:\\tmp\\xiaodaobiancheng.txt")

?

執(zhí)行結(jié)果:

文件xiaodaobiancheng.txt被刪除了。

10.5 處理目錄

目錄即是文件夾是文件的容器,對目錄的處理一般我們用os模塊里的內(nèi)置方法來創(chuàng)建、重命名、刪除即可。

10.5.1 創(chuàng)建目錄

創(chuàng)建目錄即在指定目錄下創(chuàng)建個目錄,對應(yīng)方法是mkdir。

?

代碼示例:

import os

os.mkdir("D:\\tmp\\xiaodao")

?

執(zhí)行結(jié)果:

D盤的tmp下會創(chuàng)建個xiaodao的文件夾。

10.5.2 更改當(dāng)前目錄

更改當(dāng)前目錄即改變當(dāng)前的工作目錄,對應(yīng)方法是chdir。

?

代碼示例:

importos

print("當(dāng)前的工作目錄是:\t"+os.getcwd())

#更改到目錄D:\tmp\xiaodao

os.chdir("D:\\tmp\\xiaodao\\")

print("更改當(dāng)前目錄后該目錄下的文件有:\t"+str(os.listdir()))

os.rename("FolderOperate_bak.py","FolderOperate.py")

?

執(zhí)行結(jié)果:

當(dāng)前的工作目錄是:?????? d:\tmp

更改當(dāng)前目錄后該目錄下的文件有: ['FolderOperate_bak.py']

D盤的tmp下會創(chuàng)建個xiaodao的文件夾。

?

重命名目錄即重新命名指定目錄下的目錄,對應(yīng)方法是chdir。

?

10.5.3 重命名目錄

重命名目錄是重新命名目錄的名稱,方法跟重命名文件一樣,用到os模塊里的rename方法。

?

代碼示例:

importos

os.rename("D:\\tmp\\xiaodao\\","D:\\tmp\\xiaodaobiancheng\\")

?

執(zhí)行結(jié)果:

將目錄xiaodao重命名為xiaodaobiancheng

10.5.4 遍歷目錄

遍歷目錄即通過os里內(nèi)的walk方法訪問級聯(lián)的目錄結(jié)構(gòu)。

?

代碼示例:

?

importos

importos.path

rootdir= "G:\\tmp\\xiaodao"? # 指明被遍歷的文件夾

forparent,dirnames,filenames in os.walk(rootdir): #三個參數(shù):分別返回1.父目錄 2.所有文件夾名字(不含路徑) 3.所有文件名字

??? for dirname in? dirnames:#輸出文件夾信息

??????? print ("當(dāng)前目錄是:\t" + parent)

??????? print?("子目錄有:\t" + dirname)

??? for filename in filenames:#輸出文件信息

??????? print ("文件的對應(yīng)的目錄是:\t" +parent)

??????? print ("文件名是:\t" + filename)

??????? print ("完整的文件路徑名是:\t" +os.path.join(parent,filename)) #輸出文件路徑信息

?

執(zhí)行結(jié)果:

當(dāng)前目錄是:???? G:\tmp\xiaodao

子目錄有:?????? test

文件的對應(yīng)的目錄是:???? G:\tmp\xiaodao

文件名是:??? ???FolderOperate.py

完整的文件路徑名是:???? G:\tmp\xiaodao\FolderOperate.py

文件的對應(yīng)的目錄是:???? G:\tmp\xiaodao

文件名是:?????? FolderOperate_bak.py

完整的文件路徑名是:???? G:\tmp\xiaodao\FolderOperate_bak.py

文件的對應(yīng)的目錄是:???? G:\tmp\xiaodao\test

文件名是:?????? Hello.py

完整的文件路徑名是:???? G:\tmp\xiaodao\test\Hello.py

windows命令行下執(zhí)行tree命令的效果與walk如上代碼執(zhí)行的對比:

?

D:\tmp\xiaodao>tree/f

卷 新加卷 的文件夾PATH 列表

卷序列號為621B-58A0

D:.

│? FolderOperate.py

│? FolderOperate_bak.py

└─test

??????? Hello.py

?

10.5.5 刪除目錄

刪除目錄將目錄刪除掉,一般我們通過調(diào)用os的rmdir和shutil的rmtree來實(shí)現(xiàn)。不過rmdir僅適合目錄為空的情況。

?

代碼示例:

importos

os.rmdir("D:\\tmp\\xiaodaobiancheng")

?

執(zhí)行結(jié)果:

Traceback (mostrecent call last):

? File "FileOperate.py", line 38, in<module>

???os.rmdir("G:\\tmp\\xiaodaobiancheng")

OSError: [WinError145] 目錄不是空的。: 'D:\\tmp\\xiaodaobiancheng'

?

這里我們可以通過rmtree來實(shí)現(xiàn)非空目錄的級聯(lián)刪除:

importshutil

shutil.rmtree('D:\\tmp\\xiaodaobiancheng')

?

執(zhí)行結(jié)果:

目錄D:\\tmp\\xiaodaobiancheng和它里面的文件均被刪除。

?

10.6 總結(jié)

通過本章的學(xué)習(xí),我們了解了Python里的輸入、輸出以及文件的常用處理方法。接下來的章節(jié)我們來學(xué)習(xí)下如何處理程序異常。


總結(jié)

以上是生活随笔為你收集整理的Python基础概念_9_输入输出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.97色 | 欧美精品乱码99久久蜜桃 | 在线观看日本网站 | 亚洲自拍p | 成人18视频免费69 | 91成人在线观看喷潮动漫 | 国产高清免费在线播放 | 亚洲精品在线视频 | 欧美三根一起进三p | 久久久啊啊啊 | 天天色视频 | 久操国产| av色婷婷| 色骚综合| 少妇真实被内射视频三四区 | 99久久精品免费看国产交换 | 无码人妻丰满熟妇区五十路百度 | 精品国产三级片在线观看 | 黄色av网站在线免费观看 | 隣の若妻さん波多野结衣 | 羞羞的视频在线观看 | 欧美精品观看 | 亚洲午夜精品在线 | 日韩久草| 日本www色| 国产福利91精品一区二区三区 | 亚洲福利一区 | 中国 免费 av | 狼人精品一区二区三区在线 | 国产99久久久国产精品 | 午夜免费福利在线 | 爱爱视频欧美 | 亚洲国产精品免费在线观看 | 小泽玛利亚一区二区三区 | 波多野在线视频 | 久久精品亚洲无码 | 天堂av8在线 | 欧美情爱视频 | 精品亚洲一区二区三区四区五区 | 亚洲天堂网一区 | 三级a级片 | 亚洲深爱 | 狼干综合 | 亚洲性喷水 | 青草99| www.亚洲天堂.com | 久久久久人妻一区精品色 | 男人的天堂久久久 | 日韩欧美a级片 | 国产综合av| 封神榜二在线高清免费观看 | 男人日女人b视频 | 热热av| 一级视频黄色 | 国产午夜大地久久 | 色桃av| 国产精品对白刺激久久久 | 麻豆亚洲av熟女国产一区二 | 亚洲乱码在线观看 | 三级av毛片 | 波多野结衣一区在线 | 亚洲图片二区 | 老鸭窝av在线 | 超碰人人艹 | 成年人免费在线观看视频网站 | 成人av综合 | 亚洲最大av网| 我和我的太阳泰剧在线观看泰剧 | xxx国产在线观看 | 久久精品3| 人人艹人人爽 | 国产欧美中文字幕 | 亚洲免费福利 | 天天搞夜夜爽 | 国产黄色自拍 | 美女露胸无遮挡 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 日本不卡在线 | 三级爱爱 | 午夜宅男在线 | 97人妻人人澡人人爽人人精品 | 三上悠亚亚洲一区 | 欧美亚洲图片小说 | 亚洲综合网在线观看 | 999免费| 欧美大白屁股 | 中文字幕 自拍 | 91日韩在线视频 | 黄色a网| av色播 | 中文字幕一区二区人妻视频 | 日韩成人在线网站 | 久久久精品在线 | αv在线| www.国产在线 | 四虎5151久久欧美毛片 | 老色批av | 欧美日本一区二区三区 | 成人短视频在线观看 |