第15天:Python 輸入輸出


圖片

在前幾篇文章中,咱們其實已經接觸了 Python 的輸入輸出功能,本篇文章中咱們再來詳細學習一下。
html

1 格式化輸出

Python  輸出值的方式有兩種:表達式語句和 print 函數(文件對象的輸出使用 write 方法,標準文件輸出能夠參考 sys.stdout  ,詳細文檔:https://docs.python.org/zh-cn/3/faq/extending.html#how-do-i-catch-the-output-from-pyerr-print-or-anything-that-prints-to-stdout-stderr)。python

若是咱們想要將輸出的值轉成字符串,能夠使用 repr() 或 str() 函數來實現,其中 repr() 函數產生一個解釋器易讀的表達形式,str() 函數返回一個用戶易讀的表達形式。json

若是咱們不僅是想打印使用空格分隔的值,而是想對輸出進行格式化控制,能夠採用兩種方式:一種是本身處理整個字符串,另外一種是採用 str.format() 方式,下面介紹下 str.format() 的使用。數據結構

1)基本使用app

>>> print('{}網址:"{}!"'.format('Python技術', 'www.justdopython.com'))Python技術網址:"www.justdopython.com!"

括號及其裏面的字符 (稱做格式化字段) 將會被 format() 中的參數替換ide

2)在括號中的數字用於指向傳入對象在 format() 中的位置函數

>>> print('{0} 和 {1}'.format('Hello', 'Python'))Hello 和 Python>>> print('{0} {1}'.format('Hello', 'Python'))Hello Python>>> print('{1} {0}'.format('Hello', 'Python'))Python Hello

3)若是在 format() 中使用了關鍵字參數,那麼它們的值會指向使用該名字的參數學習

>>> print('{name}網址:{site}'.format(name='Python技術', site='www.justdopython.com'))Python技術網址:www.justdopython.com

4)位置及關鍵字參數能夠任意的結合網站

>>> print('電商網站 {0}, {1}, {other}。'.format('淘寶', '京東', other='拼多多'))電商網站 淘寶, 京東, 拼多多。

5)用 ** 標誌將字典以關鍵字參數的方式傳入spa

>>> "repr() shows quotes: {!a}; str() doesn't: {!s}".format('test1', 'test2')"repr() shows quotes: 'test1'; str() doesn't: test2"

6)字段名後容許可選的 : 和格式指令

# 將 PI 轉爲三位精度>>> import math>>> print('The value of PI is approximately {0:.3f}.'.format(math.pi))The value of PI is approximately 3.142.

7)在字段後的 : 後面加一個整數會限定該字段的最小寬度

>>> table = {'Sjoerd': 123, 'Jack': 456, 'Dcab': 789}>>> for name, phone in table.items():print('{0:10} ==> {1:10d}'.format(name, phone))Jack       ==>       456Dcab       ==>       789Sjoerd     ==>       123

8)若是有個很長的格式化字符串,不想分割它能夠傳入一個字典,用中括號( [] )訪問它的鍵;

>>> table = {'Sjoerd': 123, 'Jack': 456, 'Dcab': 789789789789}>>> print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ' 'Dcab: {0[Dcab]:d}'.format(table))Jack: 456; Sjoerd: 123; Dcab: 789789789789

還能夠用 ** 標誌將這個字典以關鍵字參數的方式傳入。

>>> table = {'Sjoerd': 123, 'Jack': 456, 'Dcab': 789789789789}>>> print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))Jack: 456; Sjoerd: 123; Dcab: 789789789789

2 讀取鍵盤輸入

Python 提供了 input() 內置函數從標準輸入讀入一行文本,默認的標準輸入是鍵盤,input() 能夠接收一個 Python 表達式做爲輸入,並將運算結果返回。示例以下:

>>> str = input("請輸入:");>>> print ("輸入的內容是: ", str)請輸入:Hello Python你輸入的內容是:  Hello Python

3 文件讀寫

函數 open() 返回文件對象,一般的用法須要兩個參數:open(filename, mode)。

第一個參數  filename 是要訪問的文件名,第二個參數 mode 是描述如何使用該文件(可取值主要包括:'r' 讀取文件;'w'  只是寫入文件,已經存在的同名文件將被刪掉;'a' 打開文件進行追加,自動添加到末尾;'r+' 打開文件進行讀取和寫入;'rb+'  以二進制格式打開一個文件用於讀寫...),mode 參數是可選的,默認爲 'r'。

3.1 文件對象方法

  • read()

要讀取文件內容,調用 read(size) ,size爲可選參數。

>>> f = open('tmp.txt', 'r')>>> str = f.read(5)>>> print(str)>>> f.close()Hello
  • readline()

讀取一行,換行符爲 \n 。

>>> f = open('tmp.txt', 'r')>>> str = f.readline()>>> print(str)>>> f.close()
  • readlines()

讀取文件中包含的全部行,可設置可選參數 size 。

>>> f = open('tmp.txt', 'r')>>> str = f.readlines(1)>>> print(str)>>> f.close()['Hello Python']
  • write()

write(string) 將 string 的內容寫入文件。

>>> f = open('tmp.txt', 'w')>>> num = f.write('Hello Python')>>> print(num)>>> f.close()12
  • seek()

seek(offset, from_what) 改變文件當前的位置。offset 移動距離;from_what 起始位置,0 表示開頭,1 表示當前位置,2 表示結尾,默認值爲 0 ,即開頭。

>>> f = open('tmp.txt', 'rb+')>>> f.write(b'0123456789abcdef')# 移動到文件的第 6 個字節>>> f.seek(5)>>> print(f.read())b'56789abcdef'
  • tell()

tell() 返回文件對象當前所處的位置,它是從文件開頭開始算起的字節數。

>>> f = open('tmp.txt', 'r')>>> f.seek(5)>>> print(f.tell())5
  • close()

當你處理完一個文件後,調用 close() 來關閉文件並釋放系統的資源。也能夠使用 with 關鍵字處理文件對象,實現文件用完後自動關閉。

>>> with open('tmp.txt', 'r') as f: ...     read_data = f.read()>>> print(f.closed)True

3.2 操做 json 格式數據

  • json.dumps(obj) 序列化,obj 轉換爲 json 格式的字符串;

  • json.dump(obj, fp) 序列化,將 obj 轉換爲 json 格式的字符串,將字符串寫入文件;

  • json.loads(str) 反序列化,將 json 格式的字符串反序列化爲一個 Python 對象;

  • json.load(fp) 反序列化,從文件中讀取含 json 格式的數據,將之反序列化爲一個 Python 對象。

>>> import json>>> data = {'id':'1', 'name':'jhon', 'age':12}>>> with open('t.json', 'w') as f:...    json.dump(data, f)>>> with open("t.json", 'r') as f:...    d = json.load( f)>>> print(d){'id': '1', 'name': 'jhon', 'age': 12}

總結

本節給你們介紹了 Python 輸入輸出,對 Python 工程師提供了支撐,可以根據實際狀況選擇合適的輸入輸出方式。

參考:

[1] https://docs.python.org/zh-cn/3/library/string.html#formatspec

[2] https://docs.pythontab.com/python/python3.5/inputoutput.html#tut-files

系列文章

         

 第11天:Python 字典

         第10天:Python 類與對象

相關文章
相關標籤/搜索