python中os模塊在windows下的使用


 

 

今天學習了一下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'))及輸入二進制的時候不會報錯,但是實際上是不能輸出的

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM