欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python3基礎(chǔ)之輸入和輸出實例分析

 更新時間:2014年08月18日 08:53:58   投稿:shichen2014  
這篇文章主要介紹了Python3基礎(chǔ)之輸入和輸出實例分析,很重要的知識點,需要的朋友可以參考下

通常來說,一個Python程序可以從鍵盤讀取輸入,也可以從文件讀取輸入;而程序的結(jié)果可以輸出到屏幕上,也可以保存到文件中便于以后使用。本文就來介紹Python中最基本的I/O函數(shù)。

一、控制臺I/O

1.讀取鍵盤輸入

內(nèi)置函數(shù)input([prompt]),用于從標準輸入讀取一個行,并返回一個字符串(去掉結(jié)尾的換行符):

s = input("Enter your input:")

注:在Python 3.x版本中取消了 raw_input() 函數(shù)

2.打印到屏幕

最簡單的輸出方法是用print語句,你可以給它傳遞零個或多個用逗號隔開的表達式:

print([object, ...][, sep=' '][, end='endline_character_here'][, file=redirect_to_here]) 

方括號內(nèi)是可選的,sep表示分割符,end表示結(jié)束符,file表示重定向文件。如果要給sep、end、file指定值必須使用關(guān)鍵字參數(shù)。

print('hello', 'world', sep='%')  # 輸出 hello%world 
print('hello', 'world', end='*')  # 輸出 hello world*,并且不換行 

二、文件I/O

讀寫文件之前,先用open()函數(shù)打開一個文件,它會返回一個文件對象(file object):

f = open(filename,mode)

如果不指定mode參數(shù),文件將默認以‘r'模式打開。模式中的字符有:

r:只讀
w:只寫,如果文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件
+:讀寫(不能單獨使用)
a:打開文件用于追加,只寫,不存在則創(chuàng)建新文件
b:以二進制模式打開(不能單獨使用)

所以可能的模式大概有r、w、r+、w+、rb、wb、rb+、wb+、a、a+、ab、ab+,注意只有w和a可以創(chuàng)建文件。

通常情況下,文件都是以文本模式(text mode)打開的,也就是說,從文件中讀寫的是以一種特定的編碼格式進行編碼(默認的是 UTF-8)的字符串。如果文件以二進制模式(binary mode)打開,數(shù)據(jù)將以字節(jié)對象的形式進行讀寫:

f = open('a.txt','wb+') 
f.write('I like apple!')  # 報錯 
f.write(b'I like apple!') # 以bytes對象的形式進行讀寫 

Bytes對象是0到127的不可修改的整數(shù)序列,或純粹的 ASCII 字符,它的用途是存儲二進制數(shù)據(jù)。

可以通過在一個字符串前面加上'b'來創(chuàng)建一個bytes literal;
也可以通過bytes() 函數(shù)創(chuàng)建一個 bytes 對象。

注意:如果bytes() 函數(shù)的初始化器是一個字符串,那么必須提供一種編碼。

b1 = b'This is string' 
b2 = bytes('This is string', 'UTF-8')  # 必須指定編碼格式 

字符串對象與字節(jié)對象是不兼容的,要將 bytes 轉(zhuǎn)變?yōu)?str, bytes 對象必須要進行解碼,使用decode() 方法:

b = bytes('This is string', 'UTF-8') 
print(b, b.decode(), sep='\n') 
# 輸出: 
# b'This is string' 
# This is string 

文件對象的方法(假設(shè)f是一個文件對象):

f.read(size) :讀取size個字節(jié)的數(shù)據(jù),然后作為字符串或 bytes 對象返回。size是一個可選參數(shù),如果不指定size,則讀取文件的所有內(nèi)容。
f.readline() :讀取一行。在字符串末尾會留下?lián)Q行符 (\n),如果到文件尾,返回空字符串。
f.readlines() :讀取所有行,儲存在列表中,每個元素是一行,相當于list(f)。
f.write(string) :將 string 寫入到文件中,返回寫入的字符數(shù)。如果以二進制模式寫文件,需要將string轉(zhuǎn)換為 bytes 對象。
f.tell() :返回文件對象當前所處的位置,它是從文件開頭開始算起的字節(jié)數(shù)。
f.seek(offset, from_what) :改變文件對象所處的位置。offset是相對參考位置的偏移量,from_what 取值 0(文件頭, 默認)、1(當前位置)、2(文件尾)表示參考位置。
f.close() :關(guān)閉文件對象。

這些都是很常用的方法,當然文件對象不止這些方法。根據(jù)打開的模式不同,open() 返回的文件對象類型也不同:

TextIOWrapper:文本模式,返回TextIOWrapper對象。
BufferedReader:讀二進制,即rb,返回BufferedReader對象。
BufferedWriter:寫和追加二進制,即wb、ab,返回BufferedWriter對象。
BufferedRandom:讀/寫模式,即含有+的模式,返回BufferedRandom對象。
可以在這些文件對象上運行 dir() 或 help(),查看它們所有的方法。

補充:

1、在文本模式下,seek()方法只會相對于文件起始位置進行定位。(除了定位文件尾可以用 seek(0, 2)之外)
2、可以循環(huán)迭代一個文件對象一行一行讀?。?/p>

for line in f: 
print(line, end='') 

三、格式化輸出

一般來說,我們希望更多的控制輸出格式,而不是簡單的以空格分割。這里有兩種方式:

第一種是由你自己控制。使用字符串切片、連接操作以及 string 包含的一些有用的操作。
第二種是使用str.format()方法。
下面給一個示例:

# 第一種方式:自己控制 
for x in range(1, 11): 
  print(str(x).rjust(2), str(x*x).rjust(3), end=' ') 
  print(str(x*x*x).rjust(4)) 
 
# 第二種方式:str.format() 
for x in range(1, 11): 
  print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)) 
 
# 輸出都是: 
# 1  1  1 
# 2  4  8 
# 3  9  27 
# 4 16  64 
# 5 25 125 
# 6 36 216 
# 7 49 343 
# 8 64 512 
# 9 81 729 
# 10 100 1000 

第一種方式中,字符串對象的 str.rjust() 方法的作用是將字符串靠右,并默認在左邊填充空格,類似的方法還有 str.ljust() 和 str.center() 。這些方法并不會寫任何東西,它們僅僅返回新的字符串,如果輸入很長,它們并不會截斷字符串。我們注意到,同樣是輸出一個平方與立方表,使用str.format()會方便很多。

str.format()的基本用法如下:

>>> print('We are the {} who say "{}!"'.format('knights', 'Ni')) 
We are the knights who say "Ni!" 

括號及括號里的字符將會被 format() 中的參數(shù)替換.。括號中的數(shù)字用于指定傳入對象的位置:

>>> print('{0} and {1}'.format('Kobe', 'James')) 
Kobe and James 
>>> print('{1} and {0}'.format('Kobe', 'James')) 
James and Kobe 

如果在 format() 中使用了關(guān)鍵字參數(shù),那么它們的值會指向使用該名字的參數(shù):

>>> print('The {thing} is {adj}.'.format(thing='flower', adj='beautiful')) 
The flower is beautiful. 

可選項':'和格式標識符可以跟著 field name,這樣可以進行更好的格式化:

>>> import math 
>>> print('The value of PI is {0:.3f}.'.format(math.pi)) 
The value of PI is 3.142. 

在':'后傳入一個整數(shù),可以保證該域至少有這么多的寬度,用于美化表格時很有用:

>>> table = {'Jack':4127, 'Rose':4098, 'Peter':7678} 
>>> for name, phone in table.items(): 
...   print('{0:10} ==> {1:10d}'.format(name, phone)) 
...  
Peter   ==>    7678 
Rose    ==>    4098 
Jack    ==>    4127 

我們還可以將參數(shù)解包進行格式化輸出。例如,將table解包為關(guān)鍵字參數(shù):

table = {'Jack':4127, 'Rose':4098, 'Peter':7678} 
print('Jack is {Jack}, Rose is {Rose}, Peter is {Peter}.'.format(**table)) 
# 輸出:Jack is 4127, Rose is 4098, Peter is 7678. 

補充:

% 操作符也可以實現(xiàn)字符串格式化。它將左邊的參數(shù)作為類似 sprintf() 式的格式化字符串,而將右邊的代入:

import math 
print('The value of PI is %10.3f.' %math.pi) 
# 輸出:The value of PI is   3.142. 

因為這種舊式的格式化最終會從Python語言中移除,應(yīng)該更多的使用 str.format() 。

附:文本模式與二進制模式

1、在Windows系統(tǒng)中,文本模式下,默認是將Windows平臺的行末標識符 \r\n 在讀時轉(zhuǎn)為 \n ,而在寫時將 \n 轉(zhuǎn)為 \r\n 。 這種隱藏的行為對于文本文件是沒有問題的,但是對于二進制數(shù)據(jù)像 JPEG 或 EXE 是會出問題的。在使用這些文件時請小心使用二進制模式。

2、在類Unix/Linux系統(tǒng)中,行末標識符為 \n,即文件以 \n 代表換行。所以Unix/Linux系統(tǒng)中在文本模式和二進制模式下并無區(qū)別。

本文所述實例讀者可以實際動手操作測試一下,以加深印象,從而進一步牢固掌握Python基礎(chǔ)。

相關(guān)文章

  • 使用python解析json字段的3種方式實例

    使用python解析json字段的3種方式實例

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,下面這篇文章主要給大家介紹了關(guān)于使用python解析json字段的3種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • python中異常報錯處理方法匯總

    python中異常報錯處理方法匯總

    之前在學習python的時候有整理過python異常處理的文章,不夠簡單也不夠完整,所以決定再整理一篇,算做補充,大家學習一下,就可以自己思考解決方法了,希望對大家能夠有所幫助
    2016-11-11
  • 如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致

    如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致

    這篇文章主要介紹了如何在sae中設(shè)置django,讓sae的工作環(huán)境跟本地python環(huán)境一致,需要的朋友可以參考下
    2017-11-11
  • Python 注解方式實現(xiàn)緩存數(shù)據(jù)詳解

    Python 注解方式實現(xiàn)緩存數(shù)據(jù)詳解

    這篇文章主要介紹了Python 注解方式實現(xiàn)緩存數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2021-10-10
  • 基于樹莓派的語音對話機器人

    基于樹莓派的語音對話機器人

    這篇文章主要為大家詳細介紹了基于樹莓派的語音對話機器人,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • python回調(diào)函數(shù)的使用方法

    python回調(diào)函數(shù)的使用方法

    在計算機程序設(shè)計中,回調(diào)函數(shù),或簡稱回調(diào)(Callback),是指通過函數(shù)參數(shù)傳遞到其它代碼的,某一塊可執(zhí)行代碼的引用。這一設(shè)計允許了底層代碼調(diào)用在高層定義的子程序
    2014-01-01
  • Python學習之函數(shù) def

    Python學習之函數(shù) def

    這篇文章主要介紹了Python的函數(shù) def,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-10-10
  • Django認證系統(tǒng)user對象實現(xiàn)過程解析

    Django認證系統(tǒng)user對象實現(xiàn)過程解析

    這篇文章主要介紹了Django認證系統(tǒng)user對象實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • python解包概念及實例

    python解包概念及實例

    在本篇文章里小編給大家分享的是一篇關(guān)于python解包知識點總結(jié),對此有興趣的朋友們可以學習參考下。
    2021-02-02
  • Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例詳解

    Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例詳解

    這篇文章主要介紹了Python利用PIL實現(xiàn)多張圖片合成gif動畫的案例,文章通過代碼示例介紹的非常詳細,對大家的學習或工作有一定的幫助,感興趣的小伙伴可以自己動手試一下
    2023-11-11

最新評論