open() 的基本語法是:
file_object = open(file_name, access_mode='r',buffering=-1)
access_mode,'r','w','a','U'分別表明讀取, 寫入和追加,通用換行符支持
使用 'r' 或 'U' 模式打開的文件必須是已經存在的
文件模式 操做
r 以讀方式打開
Edit By Vheavens
Edit By Vheavens
rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w 以寫方式打開 (必要時清空)
a 以追加模式打開 (從 EOF 開始, 必要時建立新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )
a. Python 2.3 中新增
readlines() 方法並不像其它兩個輸入方法同樣返回一個字符串. 它會讀取全部(剩餘的)行然
後把它們做爲一個字符串列表返回.
os 模塊屬性 描述
linesep 用於在文件中分隔行的字符串
sep 用來分隔文件路徑名的字符串
pathsep 用於分隔文件路徑的字符串
curdir 當前工做目錄的字符串名稱
pardir (當前工做目錄的)父目錄字符串名稱
無論你使用的是什麼平臺, 只要你導入了 os 模塊, 這些變量自動會被設置爲正確的值, 減小
了你的麻煩.
文件對象的內建方法 操做
file.close() 關閉文件
file.fileno() 返回文件的描述符(file descriptor ,FD, 整數值)
file.flush() 刷新文件的內部緩衝區
file.isatty() 判斷 file 是不是一個類 tty 設備
file.nexta() 返回文件的下一行(相似於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.xreadlinesc() 用於迭代, 能夠替換 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 應該是一個返回字符串的可迭代對象; 在2.2 前, 它只是字符串的列表
文件的內建屬性:
文件對象的屬性 描述
file.closed True 表示文件已經被關閉, 不然爲 False
file.encodinga 文件所使用的編碼 - 當 Unicode 字符串被寫入數據時, 它們將自動使用file.encoding 轉換爲字節字符串; 若file.encoding 爲 None 時使用系統默認編碼
file.mode 文件打開時使用的訪問模式
file.name 文件名
file.newlinesa 未讀取到行分隔符時爲 None , 只有一種行分隔符時爲一個字符串,當文件有多種類型的行結束符時,則爲一個包含全部當前所遇到的行結束符的列表
file.softspace 爲0 表示在輸出一數據後,要加上一個空格符,1表示不加。這個屬性通常程序員用不着,由程序內部使用。
sys 模塊經過 sys.argv 屬性提供了對命令行參數的訪問
命令行參數是調用某個程序時除程序覺得的其餘參數,好比在文本的環境下執行程序就要在cmd下輸入程序名和命令行參數。大多 IDE環境都提供一個用來輸入"命令行參數"的窗口; 這些參數最後會像命令行上執行那樣被傳遞給程序.
sys.argv 是命令行參數的列表
len(sys.argv) 是命令行參數的個數(也就是 argc)
sys.argv[0]永遠是文件名。
文件系統
表9.5 os 模塊的文件/目錄訪問函數
函數 描述
文件處理
mkfifo()/mknod() 建立命名管道/建立文件系統節點
remove()/unlink() Delete file 刪除文件
rename()/renames() 重命名文件
*statc() 返回文件信息
symlink() 建立符號連接
utime() 更新時間戳
tmpfile() 建立並打開('w+b')一個新的臨時文件
walk()生成一個目錄樹下的全部文件名
目錄/文件夾
chdir()/fchdir()改變當前工做目錄/經過一個文件描述符改變當前工做目錄
chroot()d 改變當前進程的根目錄
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()a 從 major 和 minor 設備號建立一個原始設備號
Edit By Vheavens
Edit By Vheavens
major() /minor()a從原始設備號得到 major/minor 設備號
表 9.6 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() 兩個路徑名是否指向同個文件
pickle 和 marshal 模塊
pickle 模塊中的兩個主要函數是 dump() 和 load()。dump()函數接受一個文件句柄和一個數據對象做爲參數, 把數據對象以特定格式保存到給定文件裏. 當咱們使用 load()函數從文件中取出已保存的對象時, pickle 知道如何恢復這些對象到它們原本的格式.