在自動化測試中,經常需要查詢操作檔案,比如說查詢配置檔案(從而讀取配置檔案的資訊),查詢測試報告(從而傳送測試報告郵件),經常要對大量檔案和大量路徑進行操作,這就依賴於os模組,所以今天整理下比較常用的幾個方法。網上這方面資料也很多,每次整理,只是對自己所學的知識進行梳理,從而加深對某個模組的使用。
1.當前路徑及路徑下的檔案
os.getcwd():檢視當前所在路徑。
os.listdir(path):列舉目錄下的所有檔案。返回的是列表型別。
>>> import os
>>> os.getcwd()
'd:\\pythontest\\ostest'
>>> os.listdir(os.getcwd())
['hello.py', 'test.txt']
2.絕對路徑
os.path.abspath(path):返回path的絕對路徑。
>>> os.path.abspath('.')
'd:\\pythontest\\ostest'
>>> os.path.abspath('..')
'd:\\pythontest'
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')
'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')
0l6.檢視檔案是否存在
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\\hello.py')
true
>>> os.path.exists('d:\\pythontest\\ostest\\hello1.py')
false
7.一些表現形式引數
os中定義了一組檔案、路徑在不同作業系統中的表現形式引數,如:
>>> os.sep
>>> os.extsep
>>> os.pathsep
>>> 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
#返回d:\pythontest\ostest下面最新的檔案
print new_file('d:\\system files\\workspace\\selenium\\email126pro\\email126\\report')
執行結果:
最後再囉嗦一句,關於lambda的用法(python中單行的最小函式):
key=lambda fn:os.path.getmtime(test_dir+'\\'+fn)
#相當於
def key(fn):
return os.path.getmtime(test_dir+'\\'+fn)
py之os模組練習
1.在當前目錄新建目錄img,裡面包含多個檔案,檔名各不相同 x4g5.png 2.將當前img目錄所有以.png結尾的字尾名改為.jpg import random import string import os def gen code len 4 隨機生成4位驗證碼 li random.sam...
c DllImport 找不到指定模組
兩年前的乙個專案,基於身份證閱讀器的開發,之前都是在公司電腦上開發維護等,今天有需要用到自己的筆記本,只有vs2008和mysql5.5,以為足夠,興致勃勃的拿到客戶那裡現場解決問題,f5執行程式,程式丟擲異常 無法載入synidcardapi.dll 找不到指定的模組 網上找了半天資料,大概一下解...
cmd執行Python指令碼提示找不到模組問題
windows關於命令列執行python指令碼,提示找不到模組的問題,我 本人也是在pycharm上執行沒毛病的,後來在本地搞了個jenkins做定時任務,誰知道就提示找不到模組 後來才想起來,把檔案裡的所有匯入包的路徑都從專案根路徑開始匯入,我的問題就這麼解決了,完美。之前遇到過同樣的問題,在這裡...