撩課-Python面試寶典-第九篇
一. Python程式中, 檔案的處理步驟是什麼?
- 開啟
open(“檔案”,“模式”)
-
讀寫
2.1 讀f.read(位元組數)
位元組數預設是檔案內容長度
下標會自動後移
f.readline([limit])
讀取一行資料
limit: 限制的最大位元組數
f.readlines()
會自動的將檔案按換行符進行處理
將處理好的每一行組成一個列表返回
for in
可以直接遍歷 f 本身
也可以遍歷行列表2.2 寫
f.write(“內容”)
返回值是寫入的位元組長度 -
關閉
f.close()
關閉檔案為什麼需要關閉?
開啟狀態, 會佔用系統資源
會把緩衝區內容清空到磁碟檔案中
二. 文字開啟時設定的模式有哪些? 分別代表什麼意思?
- 基礎模式
r
以只讀方式開啟檔案, 這是預設模式
檔案的指標將會放在檔案的開頭
注意: 檔案不存在, 會報錯
w
以只寫方式開啟檔案
檔案的指標將會放在檔案的開頭
所以, 寫入的新內容, 會覆蓋舊的內容
注意: 檔案不存在, 會自動建立一個新檔案
a
以追加方式(只寫)開啟檔案
檔案的指標將會放在檔案結尾
所以, 寫入的內容, 會新增到檔案末尾
注意:檔案不存在, 會自動建立一個新檔案
組合模式-增加b
rb
wb
ab以二進位制格式進行操作檔案讀寫
如果檔案是二進位制檔案, 則選擇此項
例如: 圖片, 視訊, 音訊 …
- 組合模式-增加+
r+
w+
a+
rb+
rw+
ra+
代表都是以 “讀寫模式” 進行開啟
其他特性基本和 + 前面的模式一致
但是關於部分操作, 有細節區別
三. os模組中提供的常用檔案操作?
- 模組
import os
- 資訊獲取操作
.closed: 返回true如果檔案已被關閉,否則返回false .name: 返回檔案的名稱
- 其他操作
3.1 重新命名 os.rename(‘old_name’, 'new_name') 3.2 刪除 os.remove('檔名') 3.3 建立資料夾 os.mkdir("資料夾名稱") 3.4 獲取當前目錄 os.getcwd() 3.5 改變預設目錄 os.chdir("目標目錄") 3.6 獲取目錄列表 os.listdir("./")
四. 程式碼實現: 大檔案拷貝操作
注意: 不能一次性讀取大檔案內容, 容易造成記憶體峰值
import os
os.chdir("files")
# 1. 只讀模式, 開啟要複製的檔案
# 追加模式, 開啟副本檔案
source_file = open("d.txt", "r", encoding="utf-8")
dst_file = open("d_bat.txt", "a", encoding="utf-8")
# 2. 從原始檔中讀取內容
# 寫入到目標檔案中,
# 錯誤寫法: 針對於大檔案, 不應一次性讀取全部內容
# # content = source_file.read()
# # dst_file.write(content)
while True:
content = source_file.read(1024)
if len(content) == 0:
break
print("----", content)
dst_file.write(content)
# 3. 關閉原始檔和目標檔案
source_file.close()
dst_file.close()
五. 程式碼實現: 假設一個資料夾中有很多不同格式的檔案, 要求: 將不同格式的檔案, 劃分到不同格式的資料夾下;
例如: a.png b.txt c.avi d.png
劃分後:
png資料夾: a.png d.png
txt資料夾: b.txt
avi資料夾: c.avi
import os
import shutil
# 目標路徑
path = "files2"
if not os.path.exists(path):
exit()
os.chdir(path)
file_list = os.listdir("./")
# print(file_list)
# 1. 遍歷所有的檔案(名稱)
for file_name in file_list:
# print(file_name)
# 2. 分解檔案的字尾名
# 2.1 獲取最後一個.的索引位置 xx.oo.txt
index = file_name.rfind(".")
if index == -1:
continue
# print(index)
# 2.2 根據這個索引位置, 當做起始位置, 來擷取後續的所有字串內容
extension = file_name[index + 1:]
print(extension)
# 3. 檢視一下, 是否存在同名的目錄
# 4. 如果不存在這樣的目錄 -> 直接建立一個這樣名稱的目錄
# 5, 目錄存在 -> 移動過去
if not os.path.exists(extension):
os.mkdir(extension)
shutil.move(file_name, extension)
相關推薦
撩課-Python面試寶典-第九篇
一. Python程式中, 檔案的處理步驟是什麼? 開啟 open(“檔案”,“模式”) 讀寫 2.1 讀 f.read(位元組數) 位元組數預設是檔案內容長度 下標會自動後移 f.readline([limit]) 讀取一行資料 limit: 限
03-撩課-Python面試寶典-第三篇
一. 程式碼實現: 計算1到100之間, 所有的奇數之和 result = 0 for i in range(1, 101): result += i print(result) 二. 程式碼實現: 接收使用者輸入數字, 求出從0至這個數字的累加和; 例如: 使
05-撩課-Python面試寶典-第五篇
一. 給定一個圓心和半徑, 以及一個點座標, 判定該點是否在圓內; 例如: 使用者輸入圓心: (1, 2) 半徑: 2.5 測試點為(2, 2) 結果: 判定測試點是在圓內 思路: 結合勾股定理, 計算測試點距離圓心的距離test_distance;
04-撩課-Python面試寶典-第四篇
一. for迴圈和while迴圈中的else代表什麼意思? 當for迴圈和while迴圈順利的遍歷完成時, 就會執行else分支 如果迴圈過程中, 碰到continue, 只要沒有打斷迴圈, 就會繼續執行else 例如: for i in range(1, 11):
06-撩課-Python面試寶典-第六篇
一. 函式的概念是什麼? 在Python中如何定義?使用場景是什麼? 概念 寫了一段程式碼實現了某個小功能; 然後把這些程式碼集中到一塊, 起一個名字; 下一次就可以根據這個名字再次使用這個程式碼塊, 這就是函式 定義 def 函式名稱(引
撩課-Python面試寶典-第八篇
一. 解釋下什麼是閉包? 有怎樣的場景作用? 概念 在函式巢狀的前提下 內層函式引用了外層函式的變數(包括引數) 外層函式, 又把 內層函式 當做返回值進行返回 這個內層函式+所引用的外層變數, 稱為 “閉包” 標準格式 def test1(a): b =
04-撩課-Java面試寶典-第四篇
31.靜態變數和例項變數的區別? 靜態變數也叫類變數, 這種變數前加了static修飾符。 可以直接用類名呼叫, 也可以用物件呼叫, 而且所有物件的同一個類變數 都是共享同一塊記憶體空間。 例項變數也叫物件變數, 這種變數沒有加static修飾符。 只能通過物件呼叫, 而且所
03-撩課-Java面試寶典-第三篇
21.final, finally, finalize的區別 1、final修飾符(關鍵字)。 被final修飾的類, 就意味著不能再派生出新的子類, 不能作為父類而被子類繼承。 因此一個類不能既被abstract宣告, 又被final宣告。將變數或方法宣告為final, 可以保證他們在
05-撩課-Java面試寶典-第五篇
41.Iterator、ListIterator 和 Enumeration的區別? 迭代器是一種設計模式, 它是一個物件, 它可以遍歷並選擇序列中的物件, 而開發人員不需要了解 該序列的底層結構。 迭代器通常被稱為“輕量級”物件, 因為建立它的代價小。 Java中的Iterator功能
07-撩課-Java面試寶典-第七篇
61.什麼是併發修改異常? 什麼是併發修改異常: 當我們在遍歷實現了collection介面 與iterator介面的集合時(List、Set、Map), 我們可以通過遍歷索引 也可以通過迭代器進行遍歷。 在我們使用迭代器進行遍歷集合的時候, 會獲取到當前集合的迭代物件。 在裡面有封裝
06-撩課-Java面試寶典-第六篇
51.HashMap的實現原理 HashMap的主幹是一個Entry陣列。 Entry是HashMap的基本組成單元, 每一個Entry包含一個key-value鍵值對。 HashMap基於hashing原理, 我們通過put()和get()方法儲存和獲取物件。 當我們將鍵值對傳
10-撩課-Java面試寶典-第十篇
81.Servlet的會話機制? HTTP 是一種無狀態協議, 這意味著每次客戶端檢索網頁時, 都要單獨開啟一個伺服器連線, 因此伺服器不會記錄下 先前客戶端請求的任何資訊。 它與FTP、Telnet等協議不同, FTP等協議可以記住使用者的連線資訊。 會話(Session)是指一個終
13-撩課-Java面試寶典-第十三篇
撩課Java+系統架構點選開始學習 96.JDBC操作資料庫的步驟 ? 1、載入資料庫驅動 2、建立並獲取資料庫連結 3、建立jdbc statement物件 4、設定sql語句 5、設定sql語句中的引數(使用preparedStatement) 6、通過statemen
19-撩課-Java面試寶典-第十九篇
126.Struts2中的攔截器有什麼用?列舉框架提供的攔截器名稱? 1)攔截器是struts2核心組成部分, 它提供了一種機制,使得開發者 可以定義一個特定的功能模組, 這個模組會在Action執行之前或者之後執行 也可以在Action執行之前阻止Action執行。 2)常用的
01-撩課-Python面試寶典-第一篇
一. 儘可能詳細的描述出一個應用軟體, 比如QQ, 在計算機中執行時涉及的軟硬體, 以及說明我們程式設計的側重點? 電腦開機, 從硬碟中(外部儲存裝置)載入作業系統(系統軟體)到記憶體(內部儲存裝置), 並執行作業系統 下載QQ軟體(網路請求)到本地電腦磁碟中(
11-撩課-Java面試寶典-第十一篇
學習地址: 撩課-JavaWeb系列1之基礎語法-前端基礎 撩課-JavaWeb系列2之XML 撩課-JavaWeb系列3之MySQL 撩課-JavaWeb系列4之JDBC 撩課-JavaWeb系列5之web伺服器-idea 86.如何獲得高效的資料庫邏輯結構? 從關係資料庫的表中
12-撩課-Java面試寶典-第十二篇
學習地址: 撩課-JavaWeb系列1之基礎語法-前端基礎 撩課-JavaWeb系列2之XML 撩課-JavaWeb系列3之MySQL 撩課-JavaWeb系列4之JDBC 撩課-JavaWeb系列5之web伺服器-idea 91.如何提升資料查詢的效率? 1.首先檢查表的結構是否合
16-撩課-Java面試寶典-第十六篇
撩課Java+系統架構點選開始學習 111.什麼是樂觀鎖(Optimistic Locking)? 悲觀鎖,正如其名, 它指的是對資料被外界 包括本系統當前的其他事務, 以及來自外部系統的事務處理 修改持保守態度, 因此,在整個資料處理過程中, 將資料處於鎖定狀態。 悲觀鎖的實現,
20-撩課-Java面試寶典-第二十篇
131.Spring是什麼? 他解決的是業務邏輯層和其他各層的鬆耦合問題, 因此它將面向介面的程式設計思想 貫穿整個系統應用。 Spring是一個輕量級的IoC和AOP容器框架。 目的是解決企業應用開發的複雜性, 使用基本的JavaBean來完成 以前只可能由EJB完成的事情, 並提
23-撩課-Java面試寶典-第二十三篇
146、什麼是Spring MVC ?簡單介紹下你對springMVC的理解? Spring MVC是一個基於MVC架構的 用來簡化web應用程式開發的應用開發框架, 它是Spring的一個模組, 無需中間整合層來整合 , 它和Struts2一樣都屬於表現層的框架。 在web模型中, M