簡明Python3教程 14.輸入輸出


簡介

一些情況下你不得不讓程序與用戶進行交互。例如,你需要從用戶處得到輸入然后輸出計算結果。我們可以分別通過input()print()函數做到這些。

對於輸出,我們還可以使用str(string)類的各種方法。例如rjust方法可以得到一個指定寬度的右對齊字符串。詳見help(str)

另一種常見的輸入/輸出類型為文件處理。對於很多程序擁有創建,讀寫文件的能力是必不可少的,我們會在這節探究這些內容。

 

得到用戶輸入

#!/usr/bin/python

# user_input.py

def reverse(text):

    return text[::-1]

def is_palindrome(text):

    return text == reverse(text)

something = input('Enter text: ')

if (is_palindrome(something)):

    print("Yes, it is a palindrome")

else:

    print("No, it is not a palindrome")

輸出:

    $ python user_input.py

    Enter text: sir

    No, it is not a palindrome

   

    $ python user_input.py

    Enter text: madam

    Yes, it is a palindrome

   

    $ python user_input.py

    Enter text: racecar

    Yes, it is a palindrome

范例如何工作:

范例中我們使用切片操作反轉文本。之前我們已經學過如何通過seq[a:b](從a開始止於b)對序列切片。

對於切片操作我們還可以指定第三個參數步長,步長默認為1將返回文本的一個連續部分。而給定一個負步長-1將返回反轉后的文本。

input()函數接收一個字符串實參並將其打印給用戶,然后函數等待用戶輸入一些東西,一但用戶按下回車鍵則輸入結束,input函數將返回輸入的文本。

之后我們反轉文本,如果反轉后的文本與原文本相同,則代表它是一個回文(http://en.wiktionary.org/wiki/palindrome)。

 

練習題:

檢測一個文本是否為回文應該忽略標點,空格和大小寫。

例如”Rise to vote, sit.”同樣是一個回文,但是我們當前的例子無法識別它。你能改善這個例子讓它做都這點嗎?

 

文件

通過創建file類對象,使用其read, readlinewrite方法你可以對文件進行讀寫。

具體讀或寫的方式依賴於你打開文件時指定的模式。

最后當你完成文件操作時調用close關閉文件。

范例:

#!/usr/bin/python

# Filename: using_file.py

 

poem = '''/

Programming is fun

When the work is done

if you wanna make your work also fun:

    use Python!

'''

 

f = open('poem.txt', 'w') # 寫模式打開

f.write(poem) # 寫文件

f.close() # 關閉文件

 

f = open('poem.txt') # 如果沒有提供打開模式, 則默認假設為讀模式

while True:

    line = f.readline()

    if len(line) == 0: # 長度為0代表EOF(注: end of file即文件尾)

        break

    print(line, end='')

f.close() # close the file

輸出:

    $ python using_file.py

    Programming is fun

    When the work is done

    if you wanna make your work also fun:

            use Python!

范例如何工作:

首先,我們通過內建函數open打開一個文件,在函數中我們指定了被打開文件的文件名與希望使用的打開模式。

其中打開模式可以為讀模式(‘r’),寫模式(‘w’)或追加模式(‘a’)。另外我們也可以處理文件文件(‘t’)和二進制文件(‘b’)。

實際上還有很多模式可用,詳見help(open)。默認的open將文件對待為文本文件’t’,並以讀模式’r’打開。

在范例中,我們首先以寫文本模式打開文件,使用文件對象的write方法寫文件,並調用close將其關閉。

然后我們再次打開相同的文件用於讀取。這里我們無需指定打開模式因為’讀文本文件’是open的默認模式。

在循環中我們使用readline方法讀取文件的每一行。這個方法返回一整行文本其中包括末尾的換行符。

當返回一個空字符串時,意味着我們已經來到文件尾,因此使用break跳出循環。

默認的,print()函數將自動打印一個換行。因為從文件讀出的文本行末尾已經包含一個換行,所以我們指定參數end=’’抑制換行。

最后我們關閉文件。

現在,檢查poem.txt文件內容以確定程序真的寫入並讀取了文件。

 

Pickle

python提供了一個名為pickle的標准模塊用於將任意python對象存入文件或從文件中讀出。這被稱做永久性存儲對象(persistently)。

范例:

#!/usr/bin/python

# Filename: pickling.py

 

import pickle

 

# the name of the file where we will store the object

shoplistfile = 'shoplist.data'

# the list of things to buy

shoplist = ['apple', 'mango', 'carrot']

 

# Write to the file

f = open(shoplistfile, 'wb')

pickle.dump(shoplist, f) # 轉儲對象到文件

f.close()

 

del shoplist # 銷毀shoplist變量

 

# 從文件找回對象

f = open(shoplistfile, 'rb')

storedlist = pickle.load(f) # 從文件加載對象

print(storedlist)

輸出:

    $ python pickling.py

    ['apple', 'mango', 'carrot']

范例如何工作:

為了將對象存儲到文件,我們必須首先’wb’寫二進制文件模式打開文件然后調用pickle模塊的dump函數。這個過程叫做封藏(pickling)對象。

接下來我們使用pickle的load函數重新找回對象。這個過程叫做解封(unpickling)對象。

 

小結

我們已經討論了各種形式的輸入/輸出,和利用pickle模塊進行文件處理。

接下來,我們將會學習異常處理。

 

 

 

--------------Python書籍推薦-----------------
Python基礎教程-第2版.修訂版 
 
 
PYTHON核心編程
 
 
零基礎學Python


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM