Python Module_os_操作系統
目錄

目錄
前言
軟件環境
os模塊內建屬性
osname 獲取執行平臺的類型
oslinesep 輸出當前平臺使用的行終止符
ossep 輸出操作系統特定的路徑分隔符
ospathsep 輸出用于分割文件路徑的字符串
Other
os模塊內建方法
文件或目錄的路徑操作方法
osgetcwd 獲取當前工作目錄
ospathexists 判斷一個路徑是否存在
ospathisfile 判斷指定對象是否為文件
ospathisdir 判斷指定對象是否為目錄
ospathsplit 分裂上層目錄和下層目錄文件
ospathdirnamepath 返回path的目錄
ospathbasenamepath 返回path最后的文件目錄名
ospathjoin 合并目錄名和文件名目錄名
ospathsplitext 分離文件名和擴展名
ospathabspath 獲得絕對路徑
文件或目錄信息的查詢創建刪除修改
ospathgetsize 獲得文件或目錄的大小
osstat 獲取文件目錄信息
oslistdir 獲取指定目錄下的文件和目錄名列表
oswalk 生成一個目錄樹下的所有文件名
ospathwalktopfuncarg 生成一個目錄樹下的所有文件名
osmkdir 創建一個目錄
osmakedirsdirname1dirname2 遞歸創建多層目錄
osrmdir 刪除指定的目錄
osremovedirsdirname1 遞歸刪除目錄
osremove 刪除一個文件
osrename 重命名一個文件或目錄
oschdir 改變當前腳本工作目錄
執行系統指令的方法
ossystem 執行Shell指令
ospopen 運行shell命令并生成類文件對象
修改時間屬性的方法
osutime 修改時間屬性
修改文件或目錄權限的方法
osaccess 查詢文件權限模式
oschmod 改變文件權限模式
Other
前言
Python標準庫中的OS模塊,提供一種可移植的方式(程序與平臺無關)來使用依賴于操作系統的功能。簡而言之,os模塊提供了許多能夠直接操縱不同的操作系統的Python接口。一個操作系統所能提供的常用命令行接口,在os模塊中基本都能做到。本篇主要是對os模塊中常用屬性和方法的記錄。想了解更詳細的使用推薦使用Python中文文檔,點這里。
軟件環境
系統
RHEL 7
軟件
Pyhon 27
os模塊內建屬性
os.name 獲取執行平臺的類型
操作系統相關模塊的名字。目前已經注冊以下的名字:’posix’、’nt’、’os2’、’ce’、’java’、’riscos’。
如果執行平臺是window,則os.name == "nt",如果是Linux/Unix,則os.name == 'posix'。
>>> os.name 'posix'
1
2
POSIX :表示可移植操作系統接口(Portable Operating System Interface ,縮寫為 POSIX ),POSIX標準定義了操作系統應該為應用程序提供的接口標準,是IEEE為要在各種UNIX操作系統上運行的軟件而定義的一系列API標準的總稱,其正式稱呼為IEEE 1003,而國際標準名稱為ISO/IEC 9945。
os.linesep 輸出當前平臺使用的行終止符
也稱之為換行符,windows下為”\t\n”,Linux下為”\n
>>> os.linesep '\n'
1
2
os.sep 輸出操作系統特定的路徑分隔符
目錄層之間的分隔符
>>> os.sep '/'
1
2
os.pathsep 輸出用于分割文件路徑的字符串
>>> os.pathsep ':' root@localhost workspace]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/workspace:/root/bin #在Linux中路徑以':'來分隔
1
2
3
4
Other
os.curdir 返回當前目錄: (‘.’)
os.pardir 獲取當前目錄的父目錄字符串名:(‘..’)
os.R_OK/os.W_OK/os.X_OK 文件權限模式。他們的值分別是:4/2/1
os.environ 獲取系統環境變量
os模塊內建方法
文件或目錄的路徑操作方法
os.getcwd() 獲取當前工作目錄
獲取當前工作目錄的絕對路徑。
>>> os.getcwd() '/opt/workspace'`
1
2
os.path.exists() 判斷一個路徑是否存在
如果path存在,返回True;如果path不存在,返回False。常用于在對一個文件做操作之前的判斷依據。
>>> os.path.exists("/opt/workspace/tab.py") True
1
2
os.path.isfile() 判斷指定對象是否為文件
是返回True,否則False
>>> os.path.isfile("tab.py") True >>> os.path.isfile("testMkdir") False
1
2
3
4
os.path.isdir() 判斷指定對象是否為目錄
是True,否則False。
>>> os.path.isdir("testMkdir") True >>> os.path.isdir("tab.py") False
1
2
3
4
os.path.split() 分裂上層目錄和下層目錄|文件
生成一個包含兩個元素的元組。
>>> os.path.split("/opt/workspace/tab.py") ('/opt/workspace', 'tab.py') #tab.py為文件 >>> os.path.split("/opt/workspace/testMkdir") #testMkdir為目錄 ('/opt/workspace', 'testMkdir')
1
2
3
4
os.path.dirname(path) 返回path的目錄
就是os.path.split(path)的第一個元素
>>> os.path.dirname("/opt/workspace/tab.py") # 本質 == os.path.split("/opt/workspace/tab.py")[0] '/opt/workspace'
1
2
os.path.basename(path) 返回path最后的文件|目錄名
即os.path.split(path)的第二個元素。
注意:如何路徑以’/’或’\’結尾,就會返回空值。
>>> os.path.basename("/opt/workspace/tab.py") #本質 == os.path.split("/opt/workspace/tab.py")[1] 'tab.py' >>> os.path.basename("/opt/workspace/testMkdir") 'testMkdir' >>> os.path.basename("/opt/workspace/") ''
1
2
3
4
5
6
os.path.join() 合并目錄名和文件名|目錄名
>>> os.path.basename("/opt/workspace/tab.py") 'tab.py' >>> os.path.dirname("/opt/workspace/tab.py") '/opt/workspace' >>> os.path.join(os.path.dirname("/opt/workspae/tab.py"),os.path.basename("/opt/workspace/tab.py")) '/opt/workspae/tab.py'
1
2
3
4
5
6
os.path.splitext() 分離文件名和擴展名
>>> os.path.splitext("tab.py") ('tab', '.py')
1
2
os.path.abspath() 獲得絕對路徑
返回一個文件或目錄的絕對路徑,可以很方便的得到一個文件或目錄的絕對路徑。
>>> os.path.abspath("tab.py") '/opt/workspace/tab.py'
1
2
文件或目錄信息的查詢、創建、刪除、修改
os.path.getsize() 獲得文件或目錄的大小
>>> os.path.getsize("tab.py") 417 >>> os.path.getsize("testMkdir") 6
1
2
3
4
os.stat() 獲取文件/目錄信息
>>> os.stat("/opt") posix.stat_result(st_mode=16877, st_ino=164, st_dev=64768L, st_nlink=4, st_uid=0, st_gid=0, st_size=31, st_atime=1460805310, st_mtime=1460805067, st_ctime=1460805067) >>> os.stat("/opt/workspace/tab.py") posix.stat_result(st_mode=33152, st_ino=203490123, st_dev=64768L, st_nlink=1, st_uid=0, st_gid=0, st_size=417, st_atime=1460805594, st_mtime=1460805500, st_ctime=1460805500)
1
2
3
4
os.listdir() 獲取指定目錄下的文件和目錄名列表
listdir(…)
listdir(path) -> list_of_strings
Return a list containing the names of the entries in the directory.
path: path of directory to list
The list is in arbitrary order.
NOTE:It does not include the special
entries ‘.’ and ‘..’ even if they are present in the directory.
注意:路徑并不能含有’.’ or ‘..’ 。
>>> dirName = "/opt/workspace" >>> os.listdir(dirName) ['ifTest.py', 'forTest.py', 'forTest1.py', 'whileTest.py', 'continueTest.py', 'pyModule.py', 'randomTest.py', 'funcTest1.py', '.servStatus.py.swp', 'forTest2.py', 'ifTest1.py', 'pyModule.pyc', 'tab.py', 'tab.pyc', 'choiceTest.py', 'funTest2.py', 'funcTest3.py']
1
2
3
os.walk() 生成一個目錄樹下的所有文件名
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
1.top表示要遍歷的目錄樹的路徑
2.topdown的默認值是”True”,表示首先返回目錄樹下的文件,然后在遍歷目錄樹的子目錄.Topdown的值為”False”時,則表示先遍歷目錄樹的子目錄,返回子目錄下的文件,最后返回根目錄下的文件
3.onerror的默認值是”None”,表示忽略文件遍歷時產生的錯誤。如果不為空,則提供一個自定義函數提示錯誤信息后繼續遍歷或拋出異常中止遍歷
for root, dirs, files in os.walk("/opt", topdown=False): for name in files: print(os.path.join(root, name)) #打印文件絕對路徑 for name in dirs: print(os.path.join(root, name)) #打印目錄絕對路徑
1
2
3
4
5
os.path.walk(top,func,arg) 生成一個目錄樹下的所有文件名
1.top表示需要遍歷的目錄樹的路徑
2.func表示回調函數,對遍歷路徑進行處理.所謂回調函數,是作為某個函數的參數使用,當某個時間觸發時,程序將調用定義好的回調函數處理某個任務.回調函數必須提供3個參數:第1個參數為walk()的參數tag,第2個參數表示目錄列表,第3個參數表示文件列表
3.arg是傳遞給回調參數func的元組.回調函數的一個參數必須是arg,為回調函數提供處理參數.參數arg可以為空
def visitDir(arg,dirname,names): for filespath in names: print os.path.join(dirname,filespath) path="/opt" os.path.walk(path,VisitDir,())
1
2
3
4
5
注意:os.path.walk()與os.walk()產生的文件名列表并不相同。os.path.walk()產生目錄樹下的目錄路徑和文件路徑,而os.walk()只產生文件路徑
os.mkdir() 創建一個目錄
>>> os.mkdir("testMkdir") >>> os.listdir(os.getcwd()) ['tab.py', 'ipython-4.1.2.tar.gz', 'ipython-4.1.2', 'traitlets-4.1.0', 'ipython_genutils-0.1.0', 'pexpect-4.0.1', 'ptyprocess-0.5', 'pickleshare-0.5', 'path.py-8.1.1', 'testMkdir']
1
2
3
os.makedirs(‘dirname1/dirname2’) 遞歸創建多層目錄
>>> os.makedirs("/opt/workspace/dirname1/dirname2") >>> os.listdir("/opt/workspace") ['tab.py', 'ipython-4.1.2.tar.gz', 'ipython-4.1.2', 'traitlets-4.1.0', 'ipython_genutils-0.1.0', 'pexpect-4.0.1', 'ptyprocess-0.5', 'pickleshare-0.5', 'path.py-8.1.1', 'testMkdir', 'dirname1']
1
2
3
os.rmdir() 刪除指定的目錄
>>> os.rmdir("testDir")
1
os.removedirs(‘dirname1’) 遞歸刪除目錄
若dirname2為空,則刪除,并遞歸到上一級dirname1目錄,如若也為空,則也刪除,依此類推。
>>> os.removedirs("/opt/workspace/dirname1/dirname2")
1
os.remove() 刪除一個文件
注意:只能夠刪除文件,而不能刪除一個目錄。
>>> os.remove('ifTest.py')
1
os.rename() 重命名一個文件或目錄
>>> os.rename("test","JustTest") #test為一個文件 >>> os.rename("ipython-4.1.2","sdasd") #ipython-4.1.2為一個目錄
1
2
os.chdir() 改變當前腳本工作目錄
>>> os.getcwd() '/opt/workspace' >>> os.chdir("/") >>> os.getcwd() '/'
1
2
3
4
5
執行系統指令的方法
os.system() 執行Shell指令
可以執行不同平臺下的Shell指令,顯示執行結果并返回執行狀態。若為Windows,則為CMD;若是Linux,則為Bash。
注意:返回的是執行狀態,執行結果只會顯示在終端上。
os.system(…)
os.system(command) -> exit_status
Execute the command (a string) in a subshell.
>>> result = os.system("ls") ipython-4.1.2.tar.gz path.py-8.1.1 ptyprocess-0.5 testMkdir ipython_genutils-0.1.0 pexpect-4.0.1 sdasd traitlets-4.1.0 JustTest pickleshare-0.5 tab.py >>> result
1
2
3
4
5
os.popen() 運行shell命令并生成類文件對象
生成的變量可以賦給變量,再用read()等類文件對象內置方法讀取和操作。
>>> result = os.popen("ls") >>> result.read() 'ipython-4.1.2.tar.gz\nipython_genutils-0.1.0\nJustTest\npath.py-8.1.1\npexpect-4.0.1\npickleshare-0.5\nptyprocess-0.5\nsdasd\ntab.py\ntestMkdir\ntraitlets-4.1.0\n'
1
2
3
修改時間屬性的方法
os.utime() 修改時間屬性
>>> stinfo = os.stat("/opt/workspace/tab.py") >>> stinfo.st_atime 1460805594.4710202 >>> stinfo.st_mtime 1460805500.175018 >>>os.utime('/opt/workspace/tab.py',(1375448978,1369735977)) >>> stinfo = os.stat("/opt/workspace/tab.py") >>> stinfo.st_atime 1375448978.0 >>> stinfo.st_mtime 1369735977.0
1
2
3
4
5
6
7
8
9
10
11
修改文件或目錄權限的方法
os.access() 查詢文件權限模式
一般需要結合os.R_OK/os.W_OK/os.X_OK文件權限模式來處理。
>>> os.access("tab.py",os.W_OK) True >>> os.access("tab.py",os.R_OK) True >>> os.access("tab.py",os.X_OK) False
1
2
3
4
5
6
os.chmod() 改變文件權限模式
>>> os.chmod("tab.py",os.X_OK) >>> os.access("tab.py",os.X_OK) True
1
2
3
Other
os.path.commonprefix(list) 返回list中,所有path共有的最長的路徑,從左向右,相同字符
os.path.abspath(path) 返回path規范化的絕對路徑
os.path.isabs(path) 如果path是絕對路徑,返回True
os.path.normcase(path) 在Linux下,該函數會原樣返回path,在windows平臺上會將路徑中所有字符轉換為小寫,并將所有斜杠轉換為反斜杠
Python Windows
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。