1. 程式人生 > >從Python中os模組中實用的檔案和目錄操作方法到Python內建變數

從Python中os模組中實用的檔案和目錄操作方法到Python內建變數

Python常用檔案和目錄操作函式

 

序號 方法及描述
1

os.access(path, mode)


檢驗許可權模式
2

os.chdir(path)


改變當前工作目錄
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 (不包含), 錯誤會忽略
11

os.fchdir(fd)


通過檔案描述符改變當前工作目錄
12

os.fchmod(fd, mode)


改變一個檔案的訪問許可權,該檔案由引數fd指定,引數mode是Unix下的檔案訪問許可權。
13

os.fchown(fd, uid, gid)


修改一個檔案的所有權,這個函式修改一個檔案的使用者ID和使用者組ID,該檔案由檔案描述符fd指定。
14

os.fdatasync(fd)


強制將檔案寫入磁碟,該檔案由檔案描述符fd指定,但是不強制更新檔案的狀態資訊。
15

os.fdopen(fd[, mode[, bufsize]])


通過檔案描述符 fd 建立一個檔案物件,並返回這個檔案物件
19

os.fsync(fd)


強制將檔案描述符為fd的檔案寫入硬碟。
20

os.ftruncate(fd, length)


裁剪檔案描述符fd對應的檔案, 所以它最大不能超過檔案大小。
21

os.getcwd()


返回當前工作目錄
22

os.getcwdu()


返回一個當前工作目錄的Unicode物件
28

os.listdir(path)


返回path指定的資料夾包含的檔案或資料夾的名字的列表。
33

os.makedirs(path[, mode])


遞迴資料夾建立函式。像mkdir(), 但建立的所有intermediate-level資料夾需要包含子資料夾。
35

os.mkdir(path[, mode])


以數字mode的mode建立一個名為path的資料夾.預設的 mode 是 0777 (八進位制)。
38

os.open(file, flags[, mode])


開啟一個檔案,並且設定需要的開啟選項,mode引數是可選的
43

os.read(fd, n)


從檔案描述符 fd 中讀取最多 n 個位元組,返回包含讀取位元組的字串,檔案描述符 fd對應檔案已達到結尾, 返回一個空字串。
45

os.remove(path)


刪除路徑為path的檔案。如果path 是一個資料夾,將丟擲OSError; 檢視下面的rmdir()刪除一個 directory。
46

os.removedirs(path)


遞迴刪除目錄。
47

os.rename(src, dst)


重新命名檔案或目錄,從 src 到 dst
48

os.renames(old, new)


遞迴地對目錄進行更名,也可以對檔案進行更名。
49

os.rmdir(path)


刪除path指定的空目錄,如果目錄非空,則丟擲一個OSError異常。
56

os.tempnam([dir[, prefix]])


返回唯一的路徑名用於建立臨時檔案。
57

os.tmpfile()


返回一個開啟的模式為(w+b)的檔案物件 .這檔案物件沒有資料夾入口,沒有檔案描述符,將會自動刪除。
58

os.tmpnam()


為建立一個臨時檔案返回一個唯一的路徑
60

os.unlink(path)


刪除檔案路徑
61

os.utime(path, times)


返回指定的path檔案的訪問和修改的時間。
63

os.write(fd, str)


寫入字串到檔案描述符 fd中. 返回實際寫入的字串長度
64

os.path 模組


獲取檔案的屬性資訊。

重點關注:

常用函式如下:

os.getcwd() #返回當前工作目錄,即cmd或終端中目錄,而不是python命令或者執行py檔案所在的位置。
os.chdir(path) #改變當前工作目錄
os.path.abspath(path) #獲取當前當前檔案的絕對路勁 
os.path.dirname() #獲取當前檔案上一層目錄
os.path.basename(a) #獲取檔名稱

os.path.abspath()返回絕對路徑,但不處理符號連結(注意linux中的符號連結不同於windows中的快捷方式)

os.path.realpath()先處理路徑中的符號連結,再返回絕對路徑。

返回指定檔案的標準路徑,而非軟連結所在的路徑 Return the canonical path of the specified filename, eliminating any symbolic links encountered in the path.

在開發過程中,如果想要獲取當前資料夾路徑有兩種方式:

常用的是

(1)

import os 
print(os.getcwd())

這種方法在當工作目錄變化會發生變化,不夠穩定。

(2)

import os
print(os.path.dirname(os.path.abspath(__file__))) #列印當前檔案的絕對路勁,獲取當前檔案上一層目錄

這種方法測試是穩定的。

Python內建全域性變數

我們知道python自帶一些內建的全域性變數,比如__name__,__file__等。(注意:直接在終端中執行無__file__變數)。

在python中vars()函式可以檢視內建全域性變數,以字典方式返回內建全域性變數。

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(vars())
#輸出
# {'__builtins__': <module 'builtins' (built-in)>, '__spec__': None, '__package__': None, '__doc__': None, '__name__': '__main__', '__cached__': None, '__file__': 'H:/py/index.py', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000000AC32C66A58>}

__doc__ :獲取檔案的註釋

#!/usr/bin/env python
# -*- coding:utf8 -*-
"""
這裡是檔案的註釋
"""
print(__doc__)  #__doc__    :獲取檔案的註釋
#輸出
# 這裡是檔案的註釋

__file__ 【重點】獲取當前檔案的路徑

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__file__)  #__file__ :獲取當前檔案的路徑
#輸出
# H:/py/index.py

__package__ :獲取匯入檔案的路徑,多層目錄以點分割,注意:對當前檔案返回None

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__package__)  #注意:對當前檔案返回None
from lib.ska import mk  #匯入mk模組檔案
print(mk.__package__) #__package__ :獲取匯入檔案的路徑,多層目錄以點分割,注意:對當前檔案返回None
#輸出
# None
# lib.ska
# lib.ska

__cached__ :獲取匯入檔案的快取路徑

#!/usr/bin/env python
# -*- coding:utf8 -*-
from lib.ska import mk  #匯入mk模組檔案
print(mk.__cached__) #__cached__ :獲取匯入檔案的快取路徑
#輸出
# H:\py\lib\ska\__pycache__\mk.cpython-35.pyc

__name__ 【重點】獲取匯入檔案的路徑加檔名稱,路徑以點分割,注意:獲取當前檔案返回__main__ 

#!/usr/bin/env python
# -*- coding:utf8 -*-
print(__name__) #注意:獲取當前檔案返回__main__
from lib.ska import mk  #匯入mk模組檔案
print(mk.__name__)  #獲取匯入檔案的路徑加檔名稱,路徑以點分割
#輸出
# __main__
# lib.ska.mk

為了區分 主執行程式碼和被呼叫檔案,Python引入了變數:__name__。

1)當檔案是被呼叫時,__name__的值為模組名;

2)當檔案被執行時,__name__的值為 ‘__main__’。

__name__  全域性變數寫在入口檔案裡,只有執行入口檔案時的返回值才是__main__  ,如果入口檔案被匯入到別的檔案裡,此時入口檔案的__name__返回值就不在是__main__,而是如果檔案的路徑加入口檔名稱,所以我們可以用__name__全域性變數來防止別人盜鏈入口檔案。

__builtins__ 【重點】內建函式在這裡面

附錄:

在python中,檢視內建函式、內建常量 
import builtins 
print(dir(builtins)) 

檢視關鍵字 
import keyword 
print(keyword.kwlist)