python之檔案,
檔案開啟函數:f = open
表1-1:open函數中模式參數常用值
| 開啟模式 |
描述 |
| ‘r’ |
讀模式 |
| ‘w’ |
寫入模式 |
| ‘a’ |
追加模式 |
| ‘b’ |
二進位模式 |
| ‘+‘ |
讀/寫入模式 |
表1-2:檔案對象方法
| 檔案對象方法 |
執行操作 |
| f.close() |
關閉檔案 |
| f.read(size = -1) |
從檔案中讀取size個字元,當未給定size或給定負值的時候,讀取剩餘的所有字元,然後作為字串返回 |
| f.readline() |
以寫入模式開啟,如果檔案存在,則在末尾追加寫入 |
| f.write(str) |
將字串str寫入檔案 |
| f.writelines(seq) |
向檔案寫入字串序列seq,seq應該是一個返回字串的可迭代對象 |
| f.seek(offset,from) |
在檔案中移動檔案指標,從from(0代表檔案起始位置,1代表當前位置,2代表檔案末尾)位移offset個位元組 |
| f.tell() |
返回當前在檔案中的位置 |
檔案讀寫操作:
1 #!/usr/bin/python2 2 # -*- coding: utf-8 -*- 3 4 def save_file(boy,girl,count): 5 file_name_boy = '/home/wei/wei/test/' + 'boy_' + str(count) + '.txt' 6 file_name_girl = '/home/wei/wei/test/' + 'gilr_' + str(count) + '.txt' 7 8 boy_file = open(file_name_boy, 'w') 9 girl_file = open(file_name_girl, 'w')10 11 boy_file.writelines(boy)12 girl_file.writelines(girl)13 boy_file.close()14 girl_file.close()15 def file_split(filename):16 file = open(filename)17 boy = []18 girl = []19 20 count = 121 for each_line in file:22 if each_line[:6] != '======':23 (role, line_spoken) = each_line.split(':', 1)24 if role == 'a':25 boy.append(line_spoken)26 if role == 'b':27 girl.append(line_spoken)28 else:29 save_file(boy,girl,count)30 boy = []31 girl = []32 count += 133 save_file(boy,girl,count)34 file.close()35 36 file_split(r'/home/wei/wei/test/test.txt')
os模組:
概述:python os模組包含普遍的作業系統功能
常用方法:
1 os.access(path, mode) # 檢驗許可權模式 2 os.chdir(path) # 改變當前工作目錄 3 os.chflags(path, flags) # 設定路徑的標記為數字標記。 4 os.chmod(path, mode) # 更改許可權 5 os.chown(path, uid, gid) # 變更檔所有者 6 os.chroot(path) # 改變當前進程的根目錄 7 os.close(fd) # 關閉檔案描述符 fd 8 os.closerange(fd_low, fd_high) # 關閉所有檔案描述符,從 fd_low (包含) 到 fd_high (不包含), 錯誤會忽略 9 os.curdir # 返回目前的目錄:('.')10 os.dup(fd) # 複製檔案描述符 fd11 os.dup2(fd, fd2) # 將一個檔案描述符 fd 複製到另一個 fd212 os.environ # 擷取系統內容變數13 os.fchdir(fd) # 通過檔案描述符改變當前工作目錄14 os.fchmod(fd, mode) # 改變一個檔案的存取權限,該檔案由參數fd指定,參數mode是Unix下的檔案存取權限。15 os.fchown(fd, uid, gid) # 修改一個檔案的所有權,這個函數修改一個檔案的使用者ID和使用者組ID,該檔案由檔案描述符fd指定。16 os.fdatasync(fd) # 強制將檔案寫入磁碟,該檔案由檔案描述符fd指定,但是不強制更新檔案的狀態資訊。17 os.fdopen(fd[, mode[, bufsize]]) # 通過檔案描述符 fd 建立一個檔案對象,並返回這個檔案對象18 os.fpathconf(fd, name) # 返回一個開啟的檔案的系統配置資訊。name為檢索的系統配置的值,它也許是一個定義系統值的字串,這些名字在很多標準中指定(POSIX.1, Unix 95, Unix 98, 和其它)。19 os.fstat(fd) # 返迴文件描述符fd的狀態,像stat()。20 os.fstatvfs(fd) # 返回包含檔案描述符fd的檔案的檔案系統的資訊,像 statvfs()21 os.fsync(fd) # 強制將檔案描述符為fd的檔案寫入硬碟。22 os.ftruncate(fd, length) # 裁剪檔案描述符fd對應的檔案, 所以它最大不能超過檔案大小。23 os.getcwd() # 返回當前工作目錄24 os.getcwdu() # 返回一個當前工作目錄的Unicode對象25 os.isatty(fd) # 如果檔案描述符fd是開啟的,同時與tty(-like)裝置相連,則返回true, 否則False。26 os.lchflags(path, flags) # 設定路徑的標記為數字標記,類似 chflags(),但是沒有軟連結27 os.lchmod(path, mode) # 修改串連檔案許可權28 os.lchown(path, uid, gid) # 變更檔所有者,類似 chown,但是不追蹤連結。29 os.link(src, dst) # 建立永久連結,名為參數 dst,指向參數 src30 os.listdir(path) # 返回path指定的檔案夾包含的檔案或檔案夾的名字的列表。31 os.lseek(fd, pos, how) # 設定檔案描述符 fd當前位置為pos, how方式修改: SEEK_SET 或者 0 設定從檔案開始的計算的pos; SEEK_CUR或者 1 則從當前位置計算; os.SEEK_END或者2則從檔案尾部開始. 在unix,Windows中有效32 os.lstat(path) # 像stat(),但是沒有軟連結33 os.linesep # 當前平台使用的行終止符,win下為"\t\n",Linux下為"\n"34 os.major(device) # 從原始的裝置號中提取裝置major號碼 (使用stat中的st_dev或者st_rdev field)。35 os.makedev(major, minor) # 以major和minor裝置號組成一個原始裝置號36 os.makedirs(path[, mode]) # 遞迴檔案夾建立函數。像mkdir(), 但建立的所有intermediate-level檔案夾需要包含子檔案夾。37 os.minor(device) # 從原始的裝置號中提取裝置minor號碼 (使用stat中的st_dev或者st_rdev field )。38 os.mkdir(path[, mode]) # 以數字mode的mode建立一個名為path的檔案夾.預設的 mode 是 0777 (八進位)。39 os.mkfifo(path[, mode]) # 建立具名管道,mode 為數字,預設為 0666 (八進位)40 os.mknod(filename[, mode=0600, device]) # 建立一個名為filename檔案系統節點(檔案,裝置特別檔案或者命名pipe)。41 os.open(file, flags[, mode]) # 開啟一個檔案,並且設定需要的開啟選項,mode參數是可選的42 os.openpty() # 開啟一個新的偽終端對。返回 pty 和 tty的檔案描述符。43 os.pathconf(path, name) # 返回相關檔案的系統配置資訊。44 os.pathsep # 用於分割檔案路徑的字串45 os.pardir # 擷取目前的目錄的父目錄字元串名:('..')46 os.pipe() # 建立一個管道. 返回一對檔案描述符(r, w) 分別為讀和寫47 os.popen(command[, mode[, bufsize]]) # 從一個 command 開啟一個管道48 os.path.abspath(path) # 返回path正常化的絕對路徑49 os.path.split(path) # 將path分割成目錄和檔案名稱二元組返回50 os.path.dirname(path) # 返回path的目錄。其實就是os.path.split(path)的第一個元素51 os.path.basename(path) # 返回path最後的檔案名稱。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素52 os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False53 os.path.isabs(path) # 如果path是絕對路徑,返回True54 os.path.isfile(path) # 如果path是一個存在的檔案,返回True。否則返回False55 os.path.isdir(path) # 如果path是一個存在的目錄,則返回True。否則返回False56 os.path.join(path1[, path2[, ...]]) # 將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略57 os.path.getatime(path) # 返回path所指向的檔案或者目錄的最後存取時間58 os.path.getmtime(path) # 返回path所指向的檔案或者目錄的最後修改時間59 os.name # 字串指示當前使用平台。win->'nt'; Linux->'posix'60 os.read(fd, n) # 從檔案描述符 fd 中讀取最多 n 個位元組,返回包含讀取位元組的字串,檔案描述符 fd對應檔案已達到結尾, 返回一個Null 字元串。61 os.readlink(path) # 返回軟連結所指向的檔案62 os.remove(path) # 刪除路徑為path的檔案。如果path 是一個檔案夾,將拋出OSError; 查看下面的rmdir()刪除一個 directory。63 os.removedirs(path) # 遞迴刪除目錄。若目錄為空白,則刪除,並遞迴到上一級目錄,如若也為空白,則刪除,依此類推64 os.rename(src, dst) # 重新命名檔案或目錄,從 src 到 dst65 os.renames(old, new) # 遞迴地對目錄進行更名,也可以對檔案進行更名。66 os.rmdir(path) # 刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。67 os.sep # 作業系統特定的路徑分隔字元,win下為"\\",Linux下為"/"68 os.stat(path) # 擷取path指定的路徑的資訊,功能等同於C API中的stat()系統調用。69 os.stat_float_times([newvalue]) # 決定stat_result是否以float對象顯示時間戳記70 os.statvfs(path) # 擷取指定路徑的檔案系統統計資訊71 os.symlink(src, dst) # 建立一個軟連結72 os.system("bash command") # 運行shell命令,直接顯示73 os.tcgetpgrp(fd) # 返回與終端fd(一個由os.open()返回的開啟的檔案描述符)關聯的進程組74 os.tcsetpgrp(fd, pg) # 設定與終端fd(一個由os.open()返回的開啟的檔案描述符)關聯的進程組為pg。75 os.tempnam([dir[, prefix]]) # 返回唯一的路徑名用於建立臨時檔案。76 os.tmpfile() # 返回一個開啟的模式為(w+b)的檔案對象 .這檔案對象沒有檔案夾入口,沒有檔案描述符,將會自動刪除。77 os.tmpnam() # 為建立一個臨時檔案返回一個唯一的路徑78 os.ttyname(fd) # 返回一個字串,它表示與檔案描述符fd 關聯的終端裝置。如果fd 沒有與終端裝置關聯,則引發一個異常。79 os.unlink(path) # 刪除檔案路徑80 os.utime(path, times) # 返回指定的path檔案的訪問和修改的時間。81 os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) # 輸出在檔案夾中的檔案名稱通過在樹中遊走,向上或者向下。82 os.write(fd, str) # 寫入字串到檔案描述符 fd中. 返回實際寫入的字串長度