with語句的工作原理
enter()/exit()這兩個方法
with後面返回的物件要求必須有這兩個方法,而檔案物件f剛好是有這兩個方法的。
object.enter(self)
進入與此物件相關的執行時上下文。with語句將將此方法的返回值繫結到語句的as子句中指定的目標(如果有設定的話)
object.exit(self, exc_type, exc_value, traceback)
退出與此物件相關的執行時上下文。引數描述導致上下文退出的異常。如果上下文執行時沒有異常發生,那麼三個引數都將置為none。
如果有異常發生,並且該方法希望抑制異常(即阻止它被傳播),則它應該返回true。否則,異常將在退出該方法時正常處理。
注意:檔案讀寫初級:
一般訪問檔案資源時我們會這樣處理:
f =
open
(r'c:\mytest.txt'
,'r'
) data = f.read(
) f.close(
)
存在兩個問題:
如果在讀寫時出現異常而忘了異常處理。
忘了關閉檔案控制代碼
檔案讀寫中級:
以下的加強版本的寫法:
f =
open
(r'c:\mytest.txt'
,'r'
)try
: data = f.read(
)finally
: f.close(
)
以上的寫法就可以避免因讀取檔案時異常的發生而沒有關閉問題的處理了。**長了一些。
檔案讀寫高階:
使用with有更優雅的寫法:
with
open
(r'c:\test.txt'
,'r'
)as f:
data = f.read(
)
說明:
with後面接的物件返回的結果賦值給f。此例當中open函式返回的檔案物件賦值給了f;with會自已獲取上下檔案的異常資訊。
推薦下面的部落格鏈結,徹底弄懂python 編碼。
徹底弄懂python 編碼
|方法 說明
os.path.abspath(path) 返回絕對路徑
os.path.basename(path) 返回檔名
os.path.commonprefix(list) 返回list(多個路徑)中,所有path共有的最長的路徑
os.path.dirname(path) 返回檔案路徑
os.path.exists(path) 如果路徑 path 存在,返回 true;如果路徑 path 不存在,返回 false。
os.path.lexists 路徑存在則返回true,路徑損壞也返回true
os.path.expanduser(path) 把path中包含的""和"user"轉換成使用者目錄
os.path.expandvars(path) 根據環境變數的值替換path中包含的"nam
e"和"
name"和"
name"和
""os.path.getatime(path) 返回最近訪問時間(浮點型秒數)
os.path.getmtime(path) 返回最近檔案修改時間
os.path.getctime(path) 返回檔案 path 建立時間
os.path.getsize(path) 返回檔案大小,如果檔案不存在就返回錯誤
os.path.isabs(path) 判斷是否為絕對路徑
os.path.isfile(path) 判斷路徑是否為檔案
os.path.isdir(path) 判斷路徑是否為目錄
os.path.islink(path) 判斷路徑是否為鏈結
os.path.ismount(path) 判斷路徑是否為掛載點
os.path.join(path1[, path2[, …]]) 把目錄和檔名合成乙個路徑
os.path.normcase(path) 轉換path的大小寫和斜槓
os.path.normpath(path) 規範path字串形式
os.path.realpath(path) 返回path的真實路徑
os.path.relpath(path[, start]) 從start開始計算相對路徑
os.path.samefile(path1, path2) 判斷目錄或檔案是否相同
os.path.sameopenfile(fp1, fp2) 判斷fp1和fp2是否指向同一檔案
os.path.samestat(stat1, stat2) 判斷stat tuple stat1和stat2是否指向同乙個檔案
os.path.split(path) 把路徑分割成 dirname 和 basename,返回乙個元組
os.path.splitdrive(path) 一般用在 windows 下,返回驅動器名和路徑組成的元組
os.path.splitext(path) 分割路徑,返回路徑名和副檔名的元組
os.path.splitunc(path) 把路徑分割為載入點與檔案
os.path.walk(path, visit, arg) 遍歷path,進入每個目錄都呼叫visit函式,visit函式必須有3個引數(arg, dirname, names),dirname表示當前目錄的目錄名,names代表當前目錄下的所有檔名,args則為walk的第三個引數| |
os.sep:取代作業系統特定的路徑分隔符
os.name:指示你正在使用的工作平台。比如對於windows,它是』nt』,而對於linux/unix使用者,它是』posix』。
os.getcwd:得到當前工作目錄,即當前python指令碼工作的目錄路徑。
os.getenv()和os.putenv:分別用來讀取和設定環境變數
os.listdir():返回指定目錄下的所有檔案和目錄名
os.remove(file):刪除乙個檔案
os.stat(file):獲得檔案屬性
os.chmod(file):修改檔案許可權和時間戳
os.mkdir(name):建立目錄
os.rmdir(name):刪除目錄
os.removedirs(r「c:\python」):刪除多個目錄
os.system():執行shell命令
os.exit():終止當前程序
os.linesep:給出當前平台的行終止符。例如,windows使用』\r\n』,linux使用』\n』而mac使用』\r』
os.listdir(dirname):列出dirname下的目錄和檔案
os.getcwd():獲得當前工作目錄
os.curdir:返回當前目錄(』.』)
os.chdir(dirname):改變工作目錄到dirname
Task09 檔案與檔案系統
開啟檔案 1.open file,mode r buffering none,encoding none,errors none,newline none,closefd true file 必需,檔案路徑 相對或者絕對路徑 mode 可選,檔案開啟模式 buffering 設定緩衝 encodin...
Task09 檔案與檔案系統
開啟中文字元的文件時,會出現亂碼,python自帶的開啟檔案是否可以指定文字編碼?還是只能用相關函式?答 python自帶的開啟檔案可以指定文字編碼,在open 函式中設定引數encoding為utf8即可。編寫程式查詢最長的單詞 輸入文件 res test.txt 題目說明 input file ...
Task09 檔案與檔案系統 md
檔案與檔案系統 開啟檔案 常見的mode如下表所示 開啟模式 執行操作 r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w 開啟乙個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯。即原有內容會被刪除。如果該檔案不存在,建立新檔案。x 寫模式,新建乙個檔案,如果該檔案...