open() 方法:
Python open() 方法用於打開一個文件,並返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。
注意:使用 open() 方法一定要保證關閉文件對象,即調用 close() 方法。
open() 函數常用形式是接收兩個參數:文件名(file)和模式(mode)。
open(file, mode='r')
完整的語法格式為:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數說明:
- file: 必需,文件路徑(相對或者絕對路徑)。
- mode: 可選,文件打開模式
- buffering: 設置緩沖
- encoding: 一般使用utf8
- errors: 報錯級別
- newline: 區分換行符
- closefd: 傳入的file參數類型
- opener:
文件打開模式:
| 打開模式 | 執行操作 |
|---|---|
| 'r' | 以只讀方式打開文件(默認) |
| 'w' | 以寫入的方式打開文件,會覆蓋已存在的文件 |
| 'x' | 如果文件已經存在,使用此模式打開將引發異常 |
| 'a' | 以寫入模式打開,如果文件存在,則在末尾追加寫入 |
| 'b' | 以二進制模式打開文件 |
| 't' | 以文本模式打開(默認) |
| '+' | 可讀寫模式(可添加到其他模式中使用) |
| 'U' | 通用換行符支持 |
文件對象方法:
| 文件對象方法 | 執行操作 |
|---|---|
| f.close() | 關閉文件 |
| f.read([size=-1]) | 從文件讀取size個字符,當未給定size或給定負值的時候,讀取剩余的所有字符,然后作為字符串返回 |
| f.readline([size=-1]) | 從文件中讀取並返回一行(包括行結束符),如果有size有定義則返回size個字符 |
| f.write(str) | 將字符串str寫入文件 |
| f.writelines(seq) | 向文件寫入字符串序列seq,seq應該是一個返回字符串的可迭代對象 |
| f.seek(offset, from) | 在文件中移動文件指針,從from(0代表文件起始位置,1代表當前位置,2代表文件末尾)偏移offset個字節 |
| f.tell() | 返回當前在文件中的位置 |
| f.truncate([size=file.tell()]) | 截取文件到size個字節,默認是截取到文件指針當前位置 |
os模塊中關於文件/目錄常用的函數使用方法:
| 函數名 | 使用方法 |
|---|---|
| getcwd() | 返回當前工作目錄 |
| chdir(path) | 改變工作目錄 |
| listdir(path='.') | 列舉指定目錄中的文件名('.'表示當前目錄,'..'表示上一級目錄) |
| mkdir(path) | 創建單層目錄,如該目錄已存在拋出異常 |
| makedirs(path) | 遞歸創建多層目錄,如該目錄已存在拋出異常,注意:'E:\a\b'和'E:\a\c'並不會沖突 |
| remove(path) | 刪除文件 |
| rmdir(path) | 刪除單層目錄,如該目錄非空則拋出異常 |
| removedirs(path) | 遞歸刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空則拋出異常 |
| rename(old, new) | 將文件old重命名為new |
| system(command) | 運行系統的shell命令 |
| walk(top) | 遍歷top路徑以下所有的子目錄,返回一個三元組:(路徑, [包含目錄], [包含文件]) |
| 以下是支持路徑操作中常用到的一些定義,支持所有平台 | |
| os.curdir | 指代當前目錄('.') |
| os.pardir | 指代上一級目錄('..') |
| os.sep | 輸出操作系統特定的路徑分隔符(Win下為'\',Linux下為'/') |
| os.linesep | 當前平台使用的行終止符(Win下為'\r\n',Linux下為'\n') |
| os.name | 指代當前使用的操作系統(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java') |
os.path模塊中關於路徑常用的函數使用方法:
| 函數名 | 使用方法 |
|---|---|
| basename(path) | 去掉目錄路徑,單獨返回文件名 |
| dirname(path) | 去掉文件名,單獨返回目錄路徑 |
| join(path1[, path2[, ...]]) | 將path1, path2各部分組合成一個路徑名 |
| split(path) | 分割文件名與路徑,返回(f_path, f_name)元組。如果完全使用目錄,它也會將最后一個目錄作為文件名分離,且不會判斷文件或者目錄是否存在 |
| splitext(path) | 分離文件名與擴展名,返回(f_name, f_extension)元組 |
| getsize(file) | 返回指定文件的尺寸,單位是字節 |
| getatime(file) | 返回指定文件最近的訪問時間(浮點型秒數,可用time模塊的gmtime()或localtime()函數換算) |
| getctime(file) | 返回指定文件的創建時間(浮點型秒數,可用time模塊的gmtime()或localtime()函數換算) |
| getmtime(file) | 返回指定文件最新的修改時間(浮點型秒數,可用time模塊的gmtime()或localtime()函數換算) |
| 以下為函數返回 True 或 False | |
| exists(path) | 判斷指定路徑(目錄或文件)是否存在 |
| isabs(path) | 判斷指定路徑是否為絕對路徑 |
| isdir(path) | 判斷指定路徑是否存在且是一個目錄 |
| isfile(path) | 判斷指定路徑是否存在且是一個文件 |
| islink(path) | 判斷指定路徑是否存在且是一個符號鏈接 |
| ismount(path) | 判斷指定路徑是否存在且是一個掛載點 |
| samefile(path1, paht2) | 判斷path1和path2兩個路徑是否指向同一個文件 |
來源:https://fishc.com.cn/forum-243-1.html
https://www.runoob.com/python3/python3-file-methods.html
