【Python】 Python輸入和輸出

來源:互聯網
上載者:User

標籤:python

輸出格式美化

Python兩種輸出值得方式:運算式語句和print()函數(第三種方式是使用檔案對象的write()方法 標準輸出檔案可以用sys.stdout引用)

如果你希望輸出對的形式更加多樣,可以使用str.format()函數來格式化輸出值

如果你希望將輸出的值轉成字串,可以使用repr()或str()函數來實現。
str()函數返回一個使用者易讀的表達形式。
repr()產生一個解譯器易讀的表達形式。

s = ‘Hello,world.‘str(s)>>>‘Hello,world.‘repr(s)>>>"‘Hello,world.‘"str(1/7)>>>‘0.14285714285714285‘x = 10*3.25y  = 200*200s = ‘The value of x is ‘ + repr(x) + ‘, and y is ‘ + repr(y) + ‘...‘print(s)The value of x is 32.5, and y is 40000...hello = ‘hello,world\n‘hellos = repr(hello)print(hellos)>>>‘hello,world‘

輸出平方 立方表

#rjust()方法可以將字串靠右,並在左邊填充空格。for i in range(1,11):    print(repr(x).rjust(2),repr(x*x),rjust(3),end=‘ ‘)    print(repr(x*x*x).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 1000for 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  72910 100 1000

str.format()用法:
{}及裡面的字元會被format()中的參數替換。在括弧中的數字用於指向傳入對象在format()中的位置

>>> print(‘{0} and {1}‘.format(‘spam‘, ‘eggs‘))spam and eggs>>> print(‘{1} and {0}‘.format(‘spam‘, ‘eggs‘))eggs and spam

如果在format()中使用了關鍵字函數,那麼它們 的值會指向使用該名字的參數

>>> print(‘This {food} is {adjective}.‘.format(...       food=‘spam‘, adjective=‘absolutely horrible‘))This spam is absolutely horrible.

位置以及關鍵字參數可以任意的結合

>> print(‘The story of {0}, {1}, and {other}.‘.format(‘Bill‘, ‘Manfred‘,                                                       other=‘Georg‘))The story of Bill, Manfred, and Georg.

‘!a’ (使用 ascii()), ‘!s’ (使用 str()) 和 ‘!r’ (使用 repr()) 可以用於在格式化某個值之前對其進行轉化:

>>> import math>>> print(‘The value of PI is approximately {}.‘.format(math.pi))The value of PI is approximately 3.14159265359.>>> print(‘The value of PI is approximately {!r}.‘.format(math.pi))The value of PI is approximately 3.141592653589793.

可選項”:”和格式標識符可以跟著欄位名。這就允許對值進行更好的格式化。下面的例子將Pi保留到小數點後三位:

import mathprint(‘{0:3f}‘.format(math.pi))>>>3.142

在’:’後傳入一個整數,可以保證該域至少有這麼多的寬度,用於美化表格時很有用。

如果你有一個很長的格式化字串, 而你不想將它們分開, 那麼在格式化時通過變數名而非位置會是很好的事情。

最簡單的就是傳入一個字典, 然後使用方括弧 ‘[]’ 來訪問索引值 :

>>> table = {‘Sjoerd‘: 4127, ‘Jack‘: 4098, ‘Dcab‘: 8637678}>>> print(‘Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ‘          ‘Dcab: {0[Dcab]:d}‘.format(table))Jack: 4098; Sjoerd: 4127; Dcab: 8637678

也可以通過在 table 變數前使用 ‘**’ 來實現相同的功能:

>>> table = {‘Sjoerd‘: 4127, ‘Jack‘: 4098, ‘Dcab‘: 8637678}>>> print(‘Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}‘.format(**table))Jack: 4098; Sjoerd: 4127; Dcab: 8637678
舊式字串格式化
>>> import math>>> print(‘The value of PI is approximately %5.3f.‘ % math.pi)The value of PI is approximately 3.142.
讀和寫檔案

open()將會返回一個file對象,基本文法格式如下
open(filename,mode)

f = open(‘/tmp/workfile’,’w’)
第一個參數使要開啟的檔案名稱
第二個參數描述檔案如何使用的字元。mode可以使’r’如果檔案唯讀。’w’只用於寫(如果存在同名檔案則將被刪除)。’a’用於追加檔案內容。所寫的任何資料都會被自動增加到末尾.’r+’同時用於讀寫.
mode參數是可選的,’r’是預設值

檔案對象的方法f.read()

為了讀取一個檔案的內容,調用f.read(size).
將讀取一定數目的資料,然後作為字串或位元組對象返回.
size是一個可選的數字類型的參數.當size被忽略或者為負,那麼該檔案的所有內容都將被讀取並且返回.

f.read()>>>‘This is the entire file.\n‘
f.readline()

讀取單獨一行.如果返回Null 字元串說明已經讀到最後一行

>>> f.readline()‘This is the first line of the file.\n‘>>> f.readline()‘Second line of the file\n‘>>> f.readline()‘‘
f.readlines()

返回該檔案中所有的行

>>> f.readlines()[‘This is the first line of the file.\n‘, ‘Second line of the file\n‘]

另一種方式是迭代一個檔案對象然後讀取每行:

>>> for line in f:...     print(line, end=‘‘)...This is the first line of the file.Second line of the file

這個方法很簡單, 但是並沒有提供一個很好的控制。 因為兩者的處理機制不同, 最好不要混用。

f.write()

f.write(string)將string寫入到檔案中,然後返回寫入的字元數

f.write(‘This is a test\n‘)>>>15

如果寫入的不是字串,需要先轉換

>>> value = (‘the answer‘, 42)>>> s = str(value)>>> f.write(s)18
f.close()

在處理完一個檔案後,調用f.close()來關閉檔案並釋放系統的資源,如果嘗試再調用該檔案,則會拋出異常
也可以使用with語句.結束後會協助你正確的關閉檔案,寫起來也比try finally簡短

with open(‘/tmp/workfile‘,‘r‘) as f:    read_data = f.read()f.closed>>>True
pickle 模組

python的pickle模組實現了基本的資料序列和還原序列化。
通過pickle模組的序列化操作我們能夠將程式中啟動並執行對象資訊儲存到檔案中去,永久儲存.
通過pickle模組的還原序列化操作我們能夠從檔案中建立上一次程式儲存的對象.

基本介面:

pickle.dump(obj,file,[,protocol])

有了pickle這個對象,就能對file以讀取的形式開啟:

x = pickle.load(file)#從file中讀取一個字串,並將它重構為原來的python對象

file:類檔案對象,有read()和readline()介面

執行個體1:

#使用pickle模組將資料對象儲存到檔案import pickledata1 = {‘a‘:[1,2.0,3,4+6j],         ‘b‘:(‘string‘,u‘Unicode string‘)         ‘c‘:None}selfref_list = [1,2,3]selfref_list.append(selfref_list)output = open(‘data.pk1‘,‘wb‘)pickle.dump(data1,output)pickle.dump(selfref_list,output,-1)output.close()

執行個體2:

import pprint,picklepkl_file = open(‘data.pk1‘,‘rb‘)data1 = pickle.load(pk1_file)pprint.pprint(data1)data2 = pickle.load(pk1_file)pprint.pprint(data2)pkl_file.close()

【Python】 Python輸入和輸出

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.