一、相關
輸入輸出(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
文件內容
四、總結
輸入輸出有太多的方式了,今天所說的只是最簡單的幾種,用於學習基礎。