「學習筆記——Python」Python輸入和輸出

來源:互聯網
上載者:User
7 Python 輸入和輸出

呈現程式輸出結果的方式有很多,可以以可讀方式列印出來,也可以寫入檔案以便將來使用。這一章,將會講述這些可能的方式。

Table of Contents
  • 1 輸入格式
  • 2 讀寫檔案
1 輸入格式

很多時候,我們不僅僅想只列印出結果,還對輸出格式有所需求。有兩種方式可以完成這一點,一是使用字串的分割,合并,等 功能自己確定輸出格式,你可以得到你想要的任何布局。二是使用 str.format() 函數。 這裡有一個問題,如何把各種各樣的值轉化為字串呢?Python 提供了 repr() 和 str() 來將任何值轉化為字串。 str() 函數會返回人類易讀的格式, 而repr()則會返回供解譯器讀取的格式。但是,如果轉化不成人類易讀的方式,兩個函數 的輸出就會一樣。

>>> print str('hello\n')hello>>> print repr('hello\n')'hello\n'

下面是兩種列印列表的方式:

>>> for i in range(1,11):...     print repr(i).rjust(2), repr(i*i).rjust(3),...     print repr(i*i*i).rjust(4)...  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  72910 100 1000
>>> for i in range(1,11):...     print '{0:2d} {1:3d} {2:4d}'.format(i,i*i,i*i*i)...  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  72910 100 1000

注意2,3,4是指占幾列,列之間的空格是python自動加上的,除str.rjust()之外,還有str.ljust(),str.center(), 它們預設不會截斷,除非你用 r.ljust(n)[:n] 指定. : 前的數字表示這一列的內容顯示format後的第幾個參數,後面的數字表示占幾列

還有一個方法,str.zfill(),可以在數字左邊加0.

>>> '12'.zfill(4)'0012'

str.format() 使用的基本方式就是

>>> 'this is a {} called {}'.format('language','python')'this is a language called python'

{}內的內容決定了這個位置是什麼

>>> 'this is a {} called {}'.format('language','python')'this is a language called python'>>> 'this is a {0} called {1}'.format('language','python')'this is a language called python'>>> 'this is a {1} called {0}'.format('language','python')'this is a python called language'>>> 'this is a {1} called {1}'.format('language','python')'this is a python called python'

如果{}內出現了關鍵字,其內容由format後的定義決定

>>> 'my favourite language is {lan}'.format(lan = 'python')'my favourite language is python'

舊的字串格式 str.format() 是一種新的字串格式化方式,以前的代碼都使用 %, 和sprintf差不多

>>> pi = 3.1415926>>> 'test float format:%5.2f' % pi'test float format: 3.14'
2 讀寫檔案

open() 返回一個檔案對象,經常帶有兩個參數:open(filename, mode) mode 可以為:

  • r: 唯讀
  • w: 唯寫
  • a: 添加
  • r+: 讀寫
  • mode 也可以預設,預設為r
>>> open('fileToTest.hi', 'r')<open file 'fileToTest.hi', mode 'r' at 0xb6e6ad30>

上述代碼會返回一個檔案對象,我們可以用它進行檔案操作

>>> fileobj = open('fileToTest.hi', 'r')>>> fileobj.read()'this is a file to be test by python\nthis is second line\nthis is end line'>>> fileobj.read()''

把檔案內容讀完後,再去讀就會返回Null 字元串

還可以一行一行讀

>>> fileobj = open('fileToTest.hi', 'r')>>> fileobj.readline()'this is a file to be test by python\n'>>> fileobj.readline()'this is second line\n'>>> fileobj.readline()'this is end line'

或者返回多行構成的list

>>> fileobj = open('fileToTest.hi', 'r')>>> fileobj.readlines()['this is a file to be test by python\n', 'this is second line\n', 'this is end line']

另一種逐行讀取的方式是:

>>> fileobj = open('fileToTest.hi', 'r')>>> for line in fileobj:...     print line... this is a file to be test by pythonthis is second linethis is end line

可以使用 f.wirte(string) 寫入檔案

>>> fw = open('fileToTest.hi', 'w')>>> fw.write('Hello,pyhon\nhi,jack')>>> fw.close()

寫入之後要用f.close()關閉檔案對象,否則f.write(str)沒有真正寫入檔案。

如果一個值不是字串,可以用str()先轉化為字串,再用f.wirte()寫入。

f.tell()返迴文件對象當前位置,f.seek(offset, fromWhat) 用於設定當前位置

>>> fr = open('fileToTest.hi', 'r')>>> fr.tell()0L>>> fr.read()'hihio,pyhon\nhi,jack'>>> fr.tell()19L>>> fr.read()''>>> fr.seek(0,0)>>> fr.read()'hihio,pyhon\nhi,jack'

如果僅僅是讀寫字串,那麼沒什麼大問題,但是如果檔案中儲存的是整數,或者更複雜的資料結構,比如字典。就會 遇到麻煩,因為讀寫都是針對字串而言的。鑒於這個原因,python提供了名為 pickle 的模組。可以將任何類型的 python 對象轉化為字串,這個過程稱為 picking. 反過來也可以將字串轉化為任何類型的對象,這個過程稱為 unpicking.

例如:x 是一個對象, f 是一個用於寫的檔案對象, picking過程就是:

pickle.dump(x, f)

unpicking過程:

x = pickle.load(f)

下面做一個測驗

>>> fw = open('foo.c', 'w')>>> x = {'asdf','qwert'}>>> import pickle>>> pickle.dump(x,fw)>>> fw.close()>>> fr = open('foo.c', 'r')>>> y = pickle.load(fr)>>> yset(['qwert', 'asdf'])
原文連結:http://docs.python.org/2/tutorial/inputoutput.html
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.