Python 3 學習筆記之——鍵盤輸入和讀寫檔案

seniusen發表於2018-10-24

1. 鍵盤輸入

  • Python提供了 input() 內建函式從標準輸入讀入一行文字,預設的標準輸入是鍵盤。input 可以接收一個 Python 表示式作為輸入,並將運算結果返回。
str = input("請輸入:");
print ("你輸入的內容是: ", str)

>>>
請輸入:菜鳥教程
你輸入的內容是:  菜鳥教程

2. 讀寫檔案

  • open() 將會返回一個 file 物件,基本語法格式如下:

  • open(filename, mode)

    • filename:包含了你要訪問的檔名稱的字串值。
    • mode:決定了開啟檔案的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個引數是非強制的,預設檔案訪問模式為只讀®。

  • f.read() 為了讀取一個檔案的內容,呼叫 f.read(size), 這將讀取一定數目的資料, 然後作為字串或位元組物件返回。size 是一個可選的數字型別的引數。當 size 被忽略了或者為負, 那麼該檔案的所有內容都將被讀取並且返回。
>>> f = open('test.txt', 'r')
>>> a = f.read()
>>> a
'1 2 3\n4 5 6\nHello, seniusen!\n'
  • f.readline() 會從檔案中讀取單獨的一行。換行符為 ‘\n’。f.readline() 如果返回一個空字串, 說明已經已經讀取到最後一行。
>>> f = open('test.txt', 'r')
>>> b = f.readline()
>>> b
'1 2 3\n'
>>> b[0]
'1'
>>> b[1]
' '
>>> b[2]
'2'

>>> b = f.readline()
>>> b
'4 5 6\n'
>>> b = f.readline()
>>> b
'Hello, seniusen!\n'
>>> b = f.readline()
>>> b
''
  • f.readlines() 將返回該檔案中包含的所有行。如果設定可選引數 sizehint, 則讀取指定長度的位元組, 並且將這些位元組按行分割。
>>> f = open('test.txt', 'r')
>>> for i in f.readlines():
...     print(i)
... 
1 2 3

4 5 6

Hello, seniusen!
  • 另一種方式是迭代一個檔案物件然後讀取每行。
>>> f = open('test.txt', 'r')
>>> for line in f:
...     print(line)
... 
1 2 3

4 5 6

Hello, seniusen!
  • f.write(string) 將 string 寫入到檔案中, 然後返回寫入的字元數。如果要寫入一些不是字串的東西, 那麼將需要先進行轉換。

  • f.tell() 返回檔案物件當前所處的位置, 它是從檔案開頭開始算起的位元組數。

  • 如果要改變檔案當前的位置, 可以使用 f.seek(offset, from_what) 函式。from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示檔案的結尾,from_what 值為預設為0,即檔案開頭。

    • seek(x, 0) :從起始位置即檔案首行首字元開始移動 x 個字元
    • seek(x, 1) :表示從當前位置往後移動 x 個字元
    • seek(-x, 2):表示從檔案的結尾往前移動 x 個字元
  • 當你處理完一個檔案後, 呼叫 f.close() 來關閉檔案並釋放系統的資源。

  • 當處理一個檔案物件時, 使用 with 關鍵字是非常好的方式。在結束後, 它會幫你正確的關閉檔案。

>>> f = open('test.txt', 'r')
>>> f.tell()
0
>>> b = f.readline()
>>> f.tell()
6
>>> f.seek(2, 0)
2
>>> f.read(1)
'2'
>>> f.close()
>>> f
<_io.TextIOWrapper name='test.txt' mode='r' encoding='UTF-8'>
>>> f.closed
True

>>> with open('test.txt') as f:
...     print(f.readline())
... 
1 2 3

>>> f.closed
True

參考資料 菜鳥教程

獲取更多精彩,請關注「seniusen」!

相關文章