1. 程式人生 > >python之os模塊

python之os模塊

1-1 演示 解釋 list 通過 組合 nbsp mac 比較

一、Python OS模塊介紹

OS模塊簡單的來說它是一個Python的系統編程的操作模塊,可以處理文件和目錄這些我們日常手動需要做的操作。

可以查看OS模塊的幫助文檔:

>>> import os #導入os模塊
>>> help(os) #查看os模塊幫助文檔,裏面詳細的模塊相關函數和使用方法

二、OS模塊重要函數和變量:

1 )、os.sep 更改操作系統中的路徑分隔符。
2 )、os.getcwd()獲取當前路徑,這個在Python代碼中比較常用。
3 )、os.listdir() 列出當前目錄下的所有文件和文件夾。
4 )、os.remove() 方法可以刪除指定的文件。
5 )、os.system() 方法用來運行shell命令。
6 )、os.chdir() 改變當前目錄,到指定目錄中。

三、OS模塊函數作用詳解

os.system函數可以運行shello命令,Linux系統中就是終端模擬器中的命令。
也有一些函數可以執行外部程序,包括execv,它會退出Python解釋器,並且將控制權交給被執行的程序。

os.sep變量主要用於系統路徑中的分隔符。
Windows系統通過是“\\”,Linux類系統如Ubuntu的分隔符是“/”,而蘋果Mac OS系統中是“:”。

四、OS模塊案例代碼演示

技術分享圖片

總結:OS模塊在系統文件和目錄操作中使用的比較多,也是我們的常用模塊,大家一定要掌握的知識,這是Python標準庫中一個典型的跨平臺模塊,支持Windows和Linux等系統操作,無需修改任何代碼,也不會產生錯誤。

在自動化測試中,經常需要查找操作文件,比如說查找配置文件(從而讀取配置文件的信息),查找測試報告(從而發送測試報告郵件),經常要對大量文件和大量路徑進行操作,這就依賴於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‘)
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\\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)
轉載自:http://www.iplaypy.com/module/os.html https://www.cnblogs.com/yufeihlf/p/6179547.html

python之os模塊