操做系統的做用python
操做系統(OS)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。操做系統須要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操做網絡與管理文件系統等基本事務。操做系統也提供一個讓用戶與系統交互的操做界面。shell
Linux操做系統組成express
一個典型的Linux操做系統組成爲:Linux內核,文件系統,命令行shell,圖形界面和桌面環境,幷包各類工具和應用軟件。網絡
Linux內核: Linux操做系統的核心代碼ide
文件系統:一般指稱管理磁盤數據的系統,可將數據以目錄或文件的型式存儲。每一個文件系統都有本身的特殊格式與功能函數
shell命令: 接收用戶命令,而後調用相應的應用程序,並根據用戶輸入的指令來反饋給用戶指定的信息。工具
做用 | 命令 |
切換工做目錄 | cd |
查看文件 | ls, ls -l, ls -a |
複製文件 | cp -r |
移動文件 | mv |
刪除文件 | rm -rf,rmdir |
建立文件夾 | mkdir -p |
建立文件 | touch |
查看文件內容 | cat |
定義學習
程序分類編碼
文件是保存在持久化存儲設備(硬盤、U盤、光盤..)上的一段數據。從格式編碼角度分爲文本文件(打開後會自動解碼爲字符)、二進制文件(視頻、音頻等)。在Python裏把文件視做一種類型的對象,相似以前學習過的其它類型。spa
在python3中引入了字節串的概念,與str不一樣,字節串以字節序列值表達數據,更方便用來處理二進程數據。所以在python3中字節串是常見的二進制數據展示方式。
【1】打開文件
file_object = open(file_name, access_mode='r', buffering=-1) 功能:打開一個文件,返回一個文件對象。 參數:file_name 文件名; access_mode 打開文件的方式,若是不寫默認爲‘r’ 文件模式 操做 r 以讀方式打開 文件必須存在 w 以寫方式打開 文件不存在則建立,存在清空原有內容 a 以追加模式打開 r+ 以讀寫模式打開 文件必須存在 w+ 以讀寫模式打開文件 不存在則建立,存在清空原有內容 a+ 以讀寫模式打開 追加模式 rb 以二進制讀模式打開 同r wb 以二進制寫模式打開 同w ab 以二進制追加模式打開 同a rb+ 以二進制讀寫模式打開 同r+ wb+ 以二進制讀寫模式打開 同w+ ab+ 以二進制讀寫模式打開 同a+ buffering 1表示有行緩衝,默認則表示使用系統默認提供的緩衝機制。 返回值:成功返回文件操做對象。
打開文件示例:
1 # 打開文件 2 3 # f = open('a.py','r+') # 要求文件存在 4 # f = open('a.py','w') # 文件不存在建立存在清空 5 # f = open('a.py','a') # 文件不存在建立,存在追加 6 7 # f = open('a.py','rb') # 加b後續的讀寫都以字節串操做 8 9 """ 10 全部文件均可以用二進制方式打開(b) 11 可是二進制格式文件則不能用文本方式打開(後續讀寫出錯) 12 """ 13 f = open('mm.jpg','r') 14 15 # 經過f 進行讀寫操做 16 17 # 關閉 文件對象 18 f.close()
【2】讀取文件
read([size])
功能:來直接讀取文件中字符
參數:若是沒有給定size參數(默認值爲-1)或者size值爲負,文件將被讀取直至末尾,給定size最多讀取給定數目個字符(字節)。
返回值:返回讀取到的內容
注意:文件過大時不建議直接讀取到文件結尾,讀到文件結尾會返回空字符串。
readline([size])
功能:用來讀取文件中一行
參數:若是沒有給定size參數(默認值爲-1)或者size值爲負,表示讀取一行,給定size表示最多讀制定的字符(字節)。
返回值:返回讀取到的內容
readlines([sizeint])
功能:讀取文件中的每一行做爲列表中的一項
參數:若是沒有給定size參數(默認值爲-1)或者size值爲負,文件將被讀取直至末尾,給定size表示讀取到size字符所在行爲止。
返回值:返回讀取到的內容列表
文件對象自己也是一個可迭代對象,在for循環中能夠迭代文件的每一行
for line in f: print(line)
讀寫文件示例:
1 # 打開文件 2 f = open('Install.txt','r') 3 4 # 讀取文件 5 # data = f.read() 6 # print(data) 7 8 # 循環讀取文件內容 9 # while True: 10 # # 若是讀到文件結尾 read()會讀到空字符串 11 # data = f.read(1024) 12 # # 讀到結尾跳出循環 13 # if not data: 14 # break 15 # print(data) 16 17 # 讀取文件一行內容 18 # data = f.readline(5) 19 # print(data) 20 # data = f.readline(5) 21 # print(data) 22 23 # 讀取內容造成列表 24 # data = f.readlines(20) # 讀取前20個字節所在的全部行 25 # print(data) 26 27 # 使用for循環讀取每一行 28 for line in f: 29 print(line) # 每次迭代到一行內容 30 31 32 # 關閉 33 f.close()
【3】寫入文件
write(string)
功能:把文本數據或者二進制數據塊的字符串寫入到文件中去
參數:要寫入的內容
writlines(str_list)
功能:接受一個字符串列表做爲參數,將他們寫入文件
參數:要寫入的內容文件
寫入文件示例:
1 # 打開文件 2 # f = open('a.py','a') 3 f = open('a.py','w') 4 5 # 寫操做 6 # f.write("hello 死鬼\n") 7 # f.write("哎呀,幹啥\n") 8 9 # 將列表中每一項分別寫入文件內 10 l = ['hello world\n','hello kitty\n'] 11 f.writelines(l) 12 13 14 # f.close()
【4】關閉文件
打開一個文件後咱們就能夠經過文件對象對文件進行操做了,當操做結束後使用close()關閉這個對象能夠防止一些誤操做,也能夠節省資源。
file_object.close()
【5】with操做
python中的with語句使用於對資源進行訪問的場合,保證無論處理過程當中是否發生錯誤或者異常都會執行規定的「清理」操做,釋放被訪問的資源,好比有文件讀寫後自動關閉、線程中鎖的自動獲取和釋放等。
with語句的語法格式以下:
with context_expression [as target(s)]: with-body
經過with方法能夠不用close(),由於with生成的對象在語句塊結束後會自動處理,因此也就不須要close了,可是這個文件對象只能在with語句塊內使用。
with open('file','r+') as f: f.read()
注意
緩衝:系統自動的在內存中爲每個正在使用的文件開闢一個緩衝區,從內存向磁盤輸出數據必須先送到內存緩衝區,再由緩衝區送到磁盤中去。從磁盤中讀數據,則一次從磁盤文件將一批數據讀入到內存緩衝區中,而後再從緩衝區將數據送到程序的數據區。
刷新緩衝區條件:
flush()
該函數調用後會進行一次磁盤交互,將緩衝區中的內容寫入到磁盤
代碼示例:
1 # f = open('a.py','w',1) # 行緩衝 2 f = open('a.py','w') 3 4 while True: 5 data = input(">>") 6 if not data: 7 break 8 f.write(data + '\n') 9 f.flush() # 刷新緩衝區 10 11 f.close()
定義
打開一個文件進行操做時系統會自動生成一個記錄,記錄中描述了咱們對文件的一系列操做。其中包括每次操做到的文件位置。文件的讀寫操做都是從這個位置開始進行的。
基本操做
tell()
功能:獲取文件偏移量大小
seek(offset[,whence])
功能:移動文件偏移量位置
參數:offest表明相對與某個位置移動的字節數。負數表示向前移動,正數表示向後移動。whence是基準位置的默認值爲0,表明從文件開頭算起,1表明從當前位置算起,2表明從文件末尾算起。
代碼示例:
1 # 以r,w打開文件偏移量在開頭,以a打開文件偏移量在結尾 2 f = open("mm.jpg",'rb+') 3 print(f.tell()) 4 5 # f.write("Hello world") 6 # 7 # print(f.tell()) 8 9 # 以開頭爲基準向後移動5個字符 10 f.seek(1024,0) 11 12 f.write('你好'.encode()) 13 # data = f.read() 14 # print(data) 15 16 f.close()
【1】定義
系統中每個IO操做都會分配一個整數做爲編號,該整數即這個IO操做的文件描述符
【2】獲取文件描述符
fileno()
經過IO對象獲取對應的文件描述符
獲取文件大小
os.path.getsize(file)
查看文件列表
os.listdir(dir)
查看文件是否存在
os.path.exists(file)
判斷文件類型
os.path.isfile(file)
刪除文件
os.remove(file)