1. 程式人生 > >【轉】python中的os模塊

【轉】python中的os模塊

圖片 註意 getmtime 獲取路徑 測試 strong ipc 創建文件 .com

在自動化測試中,經常需要查找操作文件,比如說查找配置文件(從而讀取配置文件的信息),查找測試報告(從而發送測試報告郵件),經常要對大量文件和大量路徑進行操作,這就依賴於os模塊,所以今天整理下比較常用的幾個方法。網上這方面資料也很多,每次整理,只是對自己所學的知識進行梳理,從而加深對某個模塊的使用。

1.當前路徑及路徑下的文件

os.getcwd():查看當前所在路徑。

os.listdir(path):列舉目錄下的所有文件。返回的是列表類型

import os
dir = os.getcwd()#打印當前路徑
list = os.listdir(dir)#獲取路徑下文件
print(dir)
print(list)

2.絕對路徑

os.path.abspath(path):返回path的絕對路徑。

dir1 = os.path.abspath(.)#獲取路徑的絕對路徑,一個點代表當前路徑
dir2 = os.path.abspath(..)#獲取路徑的絕對路徑,兩個點代表當前路徑上一級路徑
print(dir1)
print(dir2)

3.查看路徑的文件夾部分和文件名部分

os.path.split(path):將路徑分解為(文件夾,文件名),返回的是元組類型。可以看出,若路徑字符串最後一個字符是\,則只有文件夾部分有值;若路徑字符串中均無\,則只有文件名部分有值。若路徑字符串有\,且不在最後,則文件夾和文件名均有值。且返回的文件夾的結果不包含\.

os.path.join(path1,path2,...):將path進行組合,若其中有絕對路徑,則之前的path將被刪除。

>>> os.path.split(D:\\pythontest\\ostest\\Hello.py)
(D:\\pythontest\\ostest, Hello.py)
>>> os.path.split(.)
(‘‘, .)
>>> os.path.split(D:\\pythontest\\ostest\\)
(D:\\pythontest\\ostest, ‘‘)
>>> os.path.split(
D:\\pythontest\\ostest) (D:\\pythontest, ostest) >>> os.path.join(D:\\pythontest, ostest) D:\\pythontest\\ostest >>> os.path.join(D:\\pythontest\\ostest, hello.py)#前後組合在一起 D:\\pythontest\\ostest\\hello.py >>> os.path.join(D:\\pythontest\\b, D:\\pythontest\\a)#前面的絕對路徑被刪除 D:\\pythontest\\a

os.path.dirname(path):返回path中的文件夾部分,結果不包含‘\‘

>>> os.path.dirname(D:\\pythontest\\ostest\\hello.py)
D:\\pythontest\\ostest
>>> os.path.dirname(.)
‘‘
>>> os.path.dirname(D:\\pythontest\\ostest\\)#特別註意這個
D:\\pythontest\\ostest
>>> os.path.dirname(D:\\pythontest\\ostest)#後面的ostest被當做文件
D:\\pythontest

os.path.basename(path):返回path中的文件名。

>>> os.path.basename(D:\\pythontest\\ostest\\hello.py)
hello.py
>>> os.path.basename(.)
.
>>> os.path.basename(D:\\pythontest\\ostest\\)
‘‘
>>> os.path.basename(D:\\pythontest\\ostest)
ostest

4.查看文件時間

os.path.getmtime(path):文件或文件夾的最後修改時間,從新紀元到訪問時的秒數。

os.path.getatime(path):文件或文件夾的最後訪問時間,從新紀元到訪問時的秒數。

os.path.getctime(path):文件或文件夾的創建時間,從新紀元到訪問時的秒數。

>>> os.path.getmtime(D:\\pythontest\\ostest\\hello.py)
1481695651.857048
>>> os.path.getatime(D:\\pythontest\\ostest\\hello.py)
1481687717.8506615
>>> os.path.getctime(D:\\pythontest\\ostest\\hello.py)
1481687717.8506615

5.查看文件大小

os.path.getsize(path):文件或文件夾的大小,若是文件夾返回0。

>>> os.path.getsize(D:\\pythontest\\ostest\\hello.py)
58L
>>> os.path.getsize(D:\\pythontest\\ostest)
0L

6.查看文件是否存在

os.path.exists(path):文件或文件夾是否存在,返回True 或 False。

>>> os.listdir(os.getcwd())
[hello.py, test.txt]
>>> os.path.exists(D:\\pythontest\\ostest\\hello.py)
True>>> os.path.exists(D:\\pythontest\\ostest\\Hello1.py)
False

7.一些表現形式參數

os中定義了一組文件、路徑在不同操作系統中的表現形式參數,如:

dir3 = os.sep # windows系統返回 ‘\‘符號
dir4 = os.extsep #windows系統返回‘.‘ 符號
dir5 = os.pathsep#返回‘;‘符號
dir6 = os.linesep #返回‘\r\n‘

8.實例說明

在自動化測試過程中,常常需要發送郵件,將最新的測試報告文檔發送給相關人員查看,這是就需要查找最新文件的功能。

舉例:查找文件夾下最新的文件。

技術分享圖片

import os
def new_file(test_dir):
    #列舉test_dir目錄下的所有文件(名),結果以列表形式返回。
    lists=os.listdir(test_dir)
    #sort按key的關鍵字進行升序排序,lambda的入參fn為lists列表的元素,獲取文件的最後修改時間,所以最終以文件時間從小到大排序
    #最後對lists元素,按文件修改時間大小從小到大排序。
    lists.sort(key=lambda fn:os.path.getmtime(test_dir+\\+fn))
    #獲取最新文件的絕對路徑,列表中最後一個值,文件夾+文件名
    file_path=os.path.join(test_dir,lists[-1])
    return file_path

#返回路徑下面最新的文件
print(new_file(rF:\Myself\xxx\git\xxx\day5))

輸出結果如下

F:\Myself\xxx\git\xxx\day5\商品管理.py

關於lambda的用法(python中單行的最小函數):

key=lambda fn:os.path.getmtime(test_dir+\\+fn)
#相當於
def key(fn):
    return os.path.getmtime(test_dir+\\+fn)

其他主要操作:

# res=os.listdir(‘.‘)#列出某個目錄下的所有文件,一個點.表示當前目錄
# print(res)

# os.remove()
# os.rename()
# os.mkdir(r‘C:\xxx\hjkh‘)#創建文件夾 r代表原路徑,不轉義
# os.makedirs(r‘test1\niuyy\gg‘) #沒有的話,會創建父目錄
# os.mkdir(r‘tst1\niuyy\gg‘) #不創建父目錄,報錯
# res=os.path.exists(r‘D:\A-python學習\python3\python代碼\day5\test1‘)
# print(res)
# res1=os.path.isfile(r‘D:\A-python學習\python3\python代碼\day5\test1‘) #是否是文件
# res2=os.path.isdir(r‘D:\A-python學習\python3\python代碼\day5\test1‘) #是否是文件夾
# print(res1)
#將文件的路徑和文件名分開
# res=os.path.split(r‘D:\A-python學習\python3\python代碼\day5\test1‘)
# res=os.path.dirname(r‘D:\A-python學習\python3\python代碼\day5\test1‘)#取父目錄,上一級目錄

# res=os.getcwd()#獲取當前的目錄
# res=os.chdir(‘..\day4‘) #更改當前目錄,..上一級目錄
# res=os.environ #查看電腦操作系統的環境變量
# res=os.path.join(‘test‘,‘a.txt‘) #拼接路徑test\a.txt
# res=os.path.abspath(‘..‘)#根據相對路徑,取絕對路徑

# res=os.system(‘ipconfig‘)#執行操作系統命令,如ipconfig,#執行命令是不需要拿到結果用這個
# print(res) #返回0證明命令執行成功,1表示不成功

res=os.popen(ipconfig).read() #執行命令是需要拿到結果用這個

更多請參考:

https://www.cnblogs.com/kaituorensheng/archive/2013/03/18/2965766.html

http://www.runoob.com/python3/python3-os-file-methods.html

【轉】python中的os模塊