Python的文件。
通過內建函數open() 和file()打開一個文件。這兩個方法是等價的,file()方法提供了工廠函數形式的打開文件的方法。語法如下:
file_object= open(file_name, access_mode='r', buffering=-1)
文件模式 操作
r 以讀方式打開
rU 或Ua 以讀方式打開, 同時提供通用換行符支持 (PEP278)
w 以寫方式打開 (必要時清空)
a 以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w)
a+ 以讀寫模式打開 (參見 a)
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w)
ab 以二進制追加模式打開 (參見 a)
rb+ 以二進制讀寫模式打開 (參見 r+)
wb+ 以二進制讀寫模式打開 (參見 w+)
ab+ 以二進制讀寫模式打開 (參見 a+ )
文件對象的內建方法:
文件對象的內建方法列表
文件對象的方法 操作
file.close() 關閉文件
file.fileno() 返回文件的描述符(filedescriptor ,FD, 整數值)
file.flush() 刷新文件的內部緩沖區
file.isatty() 判斷 file 是否是一個類 tty 設備
file.next () 返回文件的下一行(類似于file.readline() ), 或在沒有其它行時
引發 StopIteration 異常
file.read(size=-1) 從文件讀取 size 個字節, 當未給定 size 或給定負值的時候, 讀
取剩余的所有字節, 然后作為字符串返回
file.readintob (buf, size) 從文件讀取 size 個字節到 buf 緩沖器(已不支持)
file.readline(size=-1) 從文件中讀取并返回一行(包括行結束符), 或返回最大 size
個字符
file.readlines(sizhint=0) 讀取文件的所有行并作為一個列表返回(包含所有的行結束
符); 如果給定sizhint 且大于 0 , 那么將返回總和大約為sizhint字節的行(大小由緩沖器容量的下一個值決定)( 比如說緩沖器的大小只能為 4K 的倍數,如果sizhint 為 15k,則最后返回的可能是 16k———譯者按)
file.xreadlines () 用于迭代, 可以替換readlines() 的一個更高效的方法
file.seek(off,whence=0) 在文件中移動文件指針, 從whence ( 0 代表文件其始, 1 代
表當前位置, 2 代表文件末尾)偏移 off 字節
file.tell() 返回當前在文件中的位置
file.truncate(size=file.tell()) 截取文件到最大 size 字節, 默認為當前文件位置
file.write(str) 向文件寫入字符串
file.writelines(seq) 向文件寫入字符串序列 seq ; seq 應該是一個返回字符串的
可迭代對象;
文件對象的屬性
文件對象的屬性 描述
file.closed True 表示文件已經被關閉, 否則為 False
file.encodinga 文件所使用的編碼 - 當Unicode 字符串被寫入數據時, 它們將自動使
用 file.encoding 轉換為字節字符串; 若file.encoding 為 None 時使
用系統默認編碼
file.mode 文件打開時使用的訪問模式
file.name 文件名
file.newlines 未讀取到行分隔符時為 None , 只有一種行分隔符時為一個字符串, 當
文件有多種類型的行結束符時,則為一個包含所有當前所遇到的行結束
符的列表
file.softspace 為 0 表示在輸出一數據后,要加上一個空格符,1 表示不加。這個屬性
sys模塊:
標準輸出文件,標準輸入文件,標準錯誤文件。
可以通過sys模塊來訪問這三個標準文件,分別是:sys.stdout,sys.stdin, sys.stderr.
PRint 語句一般是輸出到sys.stdout。
raw_input()是從sys.stdin獲取輸入。
命令行參數:
python程序通過命令行執行時,可以輸入參數。在python程序中通過sys.argv屬性獲取這些參數。 sys.argv返回命令行組成的字符串序列,每個字符串以空格為分隔符。程序名稱為第一個,在序列中下標為0。后續參數以此類推。
os、os.path模塊
os模塊提供了操作系統級文件操作方法。比如創建目錄,修改文件屬性,刪除文件,列出文件列表。詳細如下:
函數 描述
文件處理
mkfifo()/mknod() 創建命名管道/創建文件系統節點
remove()/unlink() Delete file 刪除文件
rename()/renames() 重命名文件
*statc () 返回文件信息
symlink() 創建符號鏈接
utime() 更新時間戳
tmpfile() 創建并打開('w+b')一個新的臨時文件
walk() 生成一個目錄樹下的所有文件名
目錄/文件夾
chdir()/fchdir()a 改變當前工作目錄/通過一個文件描述符改變當前工作目錄
chroot() 改變當前進程的根目錄
listdir() 列出指定目錄的文件
getcwd()/getcwdu() 返回當前工作目錄/功能相同, 但返回一個Unicode 對象
mkdir()/makedirs()創建目錄/創建多層目錄
rmdir()/removedirs() 刪除目錄/刪除多層目錄
訪問/權限
access() 檢驗權限模式
chmod() 改變權限模式
chown()/lchown()a 改變 owner和 group ID/功能相同, 但不會跟蹤鏈接
umask() 設置默認權限模式
文件描述符操作
open() 底層的操作系統 open(對于文件, 使用標準的內建open() 函數)
read()/write() 根據文件描述符讀取/寫入數據
dup()/dup2() 復制文件描述符號/功能相同, 但是是復制到另一個文件描述符
設備號
makedev() 從 major 和 minor設備號創建一個原始設備號
major() /minor() 從原始設備號獲得 major/minor 設備號
os.path模塊提供了對文件路徑的常用操作。
函數 描述
分隔
basename() 去掉目錄路徑, 返回文件名
dirname() 去掉文件名, 返回目錄路徑
join() 將分離的各部分組合成一個路徑名
split() 返回(dirname(), basename()) 元組
splitdrive() 返回 (drivename, pathname) 元組
splitext() 返回(filename, extension) 元組
信息
getatime() 返回最近訪問時間
getctime() 返回文件創建時間
getmtime() 返回最近文件修改時間
getsize() 返回文件大小(以字節為單位)
查詢
exists() 指定路徑(文件或目錄)是否存在
isabs() 指定路徑是否為絕對路徑
isdir() 指定路徑是否存在且為一個目錄
isfile() 指定路徑是否存在且為一個文件
islink() 指定路徑是否存在且為一個符號鏈接
ismount() 指定路徑是否存在且為一個掛載點
samefile() 兩個路徑名是否指向同個文件
Python中數據的永久存儲
涉及模塊,marshal, pickle/cpickle, shelve, DBM風格模塊
marshal:可以將簡單對象序列化,如數字,序列,映射和代碼對象。
pickle:除簡單對象外,還可以處理遞歸對象,多次引用的對象以及用戶定義對象。
dbm類模塊:只能處理字符串的序列化。
shelve:可以將python對象和字符串。shelve模塊使用 anydbm 模塊尋找
合適的 DBM 模塊, 然后使用cPickle 來完成對儲存轉換過程. shelve 模塊允許對數據庫文件進行并發的讀訪問, 但不允許共享讀/寫訪問.
問題1:shevle模塊是否需要同時安裝pickle和dbm模塊?
文件的其他相關模塊:
模塊 內容
base64 提供二進制字符串和文本字符串間的編碼/解碼操作
binascii 提供二進制和 ASCII編碼的二進制字符串間的編碼/解碼操作
bz2 訪問 BZ2 格式的壓縮文件
csv 訪問 csv 文件(逗號分隔文件)
filecmp 用于比較目錄和文件
fileinput 提供多個文本文件的行迭代器
getopt/optparse 提供了命令行參數的解析/處理
glob/fnmatch 提供 Unix 樣式的通配符匹配的功能
gzip/zlib 讀寫 GNU zip( gzip) 文件(壓縮需要 zlib 模塊)
shutil 提供高級文件訪問功能
c/StringIO 對字符串對象提供類文件接口
tarfile 讀寫 TAR 歸檔文件, 支持壓縮文件
tempfile 創建一個臨時文件(名)
uu 格式的編碼和解碼
zipfile 用于讀取 ZIP 歸檔文件的工具
新聞熱點
疑難解答