今天學習了一下Python的os模塊,主要是針對文件夾和文件路徑的一系列操作。
與Python內置函數相比這里這里的函數功能更多樣化,功能也更強大。但是學習過程中我發現很多函數都是只適用於unix系統,可能因為它是開源系統,涉及權限的api都是開放的緣故吧。但也正是如此,當我們再Windows上學習Python時,本來這個板塊就難以理解,還具有不可操作性。學起來感覺很受打擊。
所以這里把Windows上能用,且適用的函數記錄下來,以便於以后復習:
1,os.lseek(fd,pos,how) 方法用於設置文件描述符 fd 當前位置為 pos, how 方式修改。(與內置函數類似但是多了一個文件描述符,pos:0代表開頭,1代表當前,2代表結尾,how用一個int型表示方式。例10表示從pos往后數10個字節的位置。)
2.os.listdir() 方法用於返回指定的文件夾包含的文件或文件夾的名字的列表。這個列表以字母順序。 它不包括 '.' 和'..' 即使它在文件夾中。(使用方法os.listdir(path)在Linux中dir或者ls命令也是相同的效果)
3.os.lstat() 方法用於類似 stat() 返回文件的信息,但是沒有符號鏈接。在某些平台上,這是fstat的別名,例如 Windows。
4,os.fstat() 方法用於返回文件描述符fd的狀態,類似 stat()。
Unix,Windows上可用。
fstat 方法返回的結構:
-
st_dev: 設備信息
-
st_ino: 文件的i-node值
-
st_mode: 文件信息的掩碼,包含了文件的權限信息,文件的類型信息(是普通文件還是管道文件,或者是其他的文件類型)
-
st_nlink: 硬連接數
-
st_uid: 用戶ID
-
st_gid: 用戶組 ID
-
st_rdev: 設備 ID (如果指定文件)
-
st_size: 文件大小,以byte為單位
-
st_blksize: 系統 I/O 塊大小
-
st_blocks: 文件的是由多少個 512 byte 的塊構成的
-
st_atime: 文件最近的訪問時間
-
st_mtime: 文件最近的修改時間
-
st_ctime: 文件狀態信息的修改時間(不是文件內容的修改時間)
(以上兩個的使用方法相同,os.fstat(fd) ,fd表示文件描述符 且返回內型也相同都是文件信息file=os.fstat(fd) 然后將其打印出來print(file.st_uid))
5,
os.mkdir() 方法用於以數字權限模式創建目錄。默認的模式為 0777 (八進制)。
語法
mkdir()方法語法格式如下:
os.mkdir(path[, mode])
參數
-
path -- 要創建的目錄
-
mode -- 要為目錄設置的權限數字模式
(mkdir就是linux中建立文件夾的命令)
6,os.getcwd() 方法用於返回當前工作目錄。
7,os.getcwdu() 方法用於返回一個當前工作目錄的Unicode對象。
8,os.fsync() 方法強制將文件描述符為fd的文件寫入硬盤(個人覺得這是一個很好的函數就相當與保存鍵Ctrl +s。使用方法為os.fsync())
9,os.chdir() 方法用於改變當前工作目錄到指定的路徑。(os.chdir(path) 將當前程序的文件直接換為path,這樣就省去了要大量使用的絕對路徑的必要。)
10,os.fchdir() 方法通過文件描述符改變當前工作目錄。(os.fchdir(fd)這個函數與上面的函數主要區別是通過文件描述符改變。主要是當打開了多個文件時可能有會用到)
11,
os.open() 方法用於打開一個文件,並且設置需要的打開選項,模式參數mode參數是可選的,默認為 0777。
語法
open()方法語法格式如下:
os.open(file, flags[, mode]);
參數
-
file -- 要打開的文件
-
flags -- 該參數可以是以下選項,多個使用 "|" 隔開:
- os.O_RDONLY: 以只讀的方式打開
- os.O_WRONLY: 以只寫的方式打開
- os.O_RDWR : 以讀寫的方式打開
- os.O_NONBLOCK: 打開時不阻塞
- os.O_APPEND: 以追加的方式打開
- os.O_CREAT: 創建並打開一個新文件
- os.O_TRUNC: 打開一個文件並截斷它的長度為零(必須有寫權限)
- os.O_EXCL: 如果指定的文件存在,返回錯誤
- os.O_SHLOCK: 自動獲取共享鎖
- os.O_EXLOCK: 自動獲取獨立鎖
- os.O_DIRECT: 消除或減少緩存效果
- os.O_FSYNC : 同步寫入
- os.O_NOFOLLOW: 不追蹤軟鏈接
12,os.read() 方法用於從文件描述符 fd 中讀取最多 n 個字節,返回包含讀取字節的字符串,文件描述符 fd對應文件已達到結尾, 返回一個空字符串。(os.read(fd,n)
13,os.remove() 方法用於刪除指定路徑的文件。如果指定的路徑是一個目錄,將拋出OSError。(os.remove(path))
14,os.rename() 方法用於命名文件或目錄,從 src 到 dst,如果dst是一個存在的目錄, 將拋出OSError。 os.rename(origalname,newname)
15,
os.rmdir() 方法用於刪除指定路徑的目錄。僅當這文件夾是空的才可以, 否則, 拋出OSError
16,
os.write() 方法用於寫入字符串到文件描述符 fd 中. 返回實際寫入的字符串長度。
在Unix中有效。(本來以為是很有用的但是只能在unix中有效,但是os.write(fd,b'str'))及輸入二進制的時候不會報錯,但是實際上是不能輸出的
