Python學習筆記(九)--------Python中的輸入與輸出

一、相關

輸入輸出(input/output,I/O),讀作“eye-oh”,描述的是在計算機上輸入輸出數據的操作系統、程序或設備。一般的輸入輸出設備有打印機、硬盤、鍵盤和鼠標。實際上,有些設備只有輸入功能,如鍵盤和鼠標;有些設備只有輸出功能,如打印機;還有些設備具有輸入輸出2種功能,如硬盤、磁碟和可寫性只讀光盤(CD-ROM)。

本篇僅描述鍵盤、磁盤、顯示屏之間的輸入輸出操作。

二、簡單的輸入輸出

1.print:打印到屏幕

說道輸入輸出,我最先想到的便是print函數了,我們第一次接觸編程輸出“Hello world”時,都會用到這個函數。這個函數我們比較熟悉,不再做詳細描述。

print("My name is Baldwin")
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
My name is Baldwin

Process finished with exit code 0

2.input:從鍵盤輸入

內置函數input()可以從標準輸入中讀取一行文本數據(默認標準輸入是鍵盤輸入)

inputStr = input("Enter your name here:")
print("Your name is :", inputStr)
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
Enter your name here:Baldwin
Your name is : Baldwin

Process finished with exit code 0

 input函數的參數可以填入我們的提示詞。

3.open(文件操作)

獲取File對象

想對文件進行操作,首先我們需要通過open函數獲取某個文件對象,然後才能操作該文件,open函數獲取對象通式如下

open(filename, mode)

fileName:你需要打開的文件的路徑和文件名

mode:打開文件的模式,包括:只讀,寫入,追加等,不填寫模式的話,默認模式爲只讀。關於mode,請參考以下表格

模式 描述
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

程序輸出(寫數據到文件)

輸出數據到文件,首先要求我們獲取文件對象時,應當給予寫權限,具體是哪一個權限,可以按照上表查詢,以下以“r+”(讀寫)權限爲例,temo.txt文件我們放在了與模組文件同一個文件夾下,所以路徑直接寫文件名即可,若在其他位置,請修改文件名。

file = open("temp.txt", "r+")  # 已在同級目錄下創建temp.txt文件  讀寫模式獲取對象
file.write("Hello World")      # 寫入數據

程序輸入(從文件讀取數據)

同樣的,讀取數據需要有讀權限,file對象有許多種函數,其中可用的也有很多,我們在此以read爲例,具體其他函數下面會有詳解

file = open("temp.txt", "r+")  # 已在同級目錄下創建temp.txt文件
# file.write("Hello World")
fileStr = file.read()
print(fileStr)
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
Hello World

Process finished with exit code 0

file函數詳解

文件對象函數詳解
函數名 函數描述 參數描述
file.read() 讀取一定數目的數據, 然後作爲字符串或字節對象返回 size 是一個可選的數字類型的參數。 當 size 被忽略了或者爲負, 那麼該文件的所有內容都將被讀取並且返回。
file.readline() 從文件中讀取單獨的一行。換行符爲 '\n'。f.readline() 如果返回一個空字符串, 說明已經已經讀取到最後一行。
file.readlines() file.readlines() 將返回該文件中包含的所有行。 如果設置可選參數 sizehint, 則讀取指定長度的字節, 並且將這些字節按行分割
file.write() 將 string 寫入到文件中, 然後返回寫入的字符數。
file.tell() 返回文件對象當前所處的位置, 它是從文件開頭開始算起的字節數。
file.seek() 改變文件當前的位置, 可以使用 f.seek(offset, from_what) 函數 wu
file.close() 關閉文件並釋放系統的資源,如果嘗試再調用該文件,則會拋出異常。  

三、pickle 模塊

1.相關

pickle提供了一個簡單的持久化功能。可以將對象以文件的形式存放在磁盤上。

pickle模塊只能在python中使用,python中幾乎所有的數據類型(列表,字典,集合,類等)都可以用pickle來序列化,

pickle序列化後的數據,可讀性差,人一般無法識別。

參數protocol是序列化模式,默認值爲0,表示以文本的形式序列化。protocol的值還可以是1或2,表示以二進制的形式序列化。

總結:加工數據的,可以用來存取結構化數據。

2.主要函數

dumps(object) :返回一個字符串,它包含一個 pickle 格式的對象;

loads(string) :返回包含在 pickle 字符串中的對象;

dump(object, file) :將對象寫到文件,這個文件可以是實際的物理文件,但也可以是任何類似於文件的對象,這個對象具有 write() 方法,可以接受單個的字符串參數;

load(file) :返回包含在 pickle 文件中的對象。

3.實踐

import pickle

myStr = "My name is Baldwin"
fileWB = open("temp.txt", "wb")
pickle.dump(myStr, fileWB)       # 將數據存入文件,序列化
fileWB.close()                   # 此處關閉連接,否則下一個連接進不去

fileRB = open("temp.txt", "rb")
getStr = pickle.load(fileRB)    # 讀取數據,反序列化
fileRB.close()
print(myStr)
print(getStr)
E:\WorkSpaces\PycharmProjects\PyDemo\venv\Scripts\python.exe E:/WorkSpaces/PycharmProjects/PyDemo/cn/yzstu/__init__.py
My name is Baldwin
My name is Baldwin

Process finished with exit code 0

文件內容

四、總結

輸入輸出有太多的方式了,今天所說的只是最簡單的幾種,用於學習基礎。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章