サマリー:1.模塊簡介os模塊主要包含普遍的操作系統(tǒng)相關(guān)操作,如果開發(fā)者希望自己開發(fā)的Python應用能夠與平臺無關(guān),尤其需要關(guān)注os這個模塊。2.模塊使用2.1 os模塊1. os.name,輸出字符串指示正在使用的平臺,如果是Windows平臺,輸出'nt',如果是Linux/Unix平臺,輸出'posix'。import os print os.na
1.模塊簡介
os模塊主要包含普遍的操作系統(tǒng)相關(guān)操作,如果開發(fā)者希望自己開發(fā)的Python應用能夠與平臺無關(guān),尤其需要關(guān)注os這個模塊。
2.模塊使用
2.1 os模塊
1. os.name,輸出字符串指示正在使用的平臺,如果是Windows平臺,輸出'nt',如果是Linux/Unix平臺,輸出'posix'。
import os print os.name
控制臺輸出,
posix#如果是Linux/Unix平臺 nt #如果是Windows平臺
2. os.getcwd,獲取當前的工作目錄,就是當前Python應用工作的目錄。
import os print os.getcwd()
控制臺輸出,
/home/zhb/workspace/PythonTest
3. os.listdir,返回指定目錄下的所有文件和目錄。
import os print os.listdir(os.getcwd())
控制輸出,
['test.py', '.pydevproject', 'PaperID_mapping_to_AffiliationsID.txt', '.settings', '.project', 'BrowseQueryResult.txt']
4. os.remove,刪除一個文件。
import os os.remove("temp.txt")
刪除當前目錄下的temp.txt文件。
5. os.system,執(zhí)行shell命令。
import os os.system("ls -al")
列出當前工作目錄下的所有文件與目錄的信息,控制輸出,
total 3297204 drwxrwxr-x 3 zhb zhb 4096 10月 13 19:52 . drwxrwxr-x 4 zhb zhb 4096 10月 10 20:44 .. -rwxr--r-- 1 zhb zhb 106063 10月 13 19:03 BrowseQueryResult.txt -rwxr--r-- 1 zhb zhb 3376199667 3月 5 2016 PaperID_mapping_to_AffiliationsID.txt -rw-rw-r-- 1 zhb zhb 364 10月 10 20:44 .project -rw-rw-r-- 1 zhb zhb 423 10月 10 20:44 .pydevproject drwxrwxr-x 2 zhb zhb 4096 10月 11 15:26 .settings -rw-rw-r-- 1 zhb zhb 241 10月 13 19:53 test.py
6. os.sep,取代操作系統(tǒng)特定的路徑分隔符。
import os print os.sep
控制臺輸出,
/#Linux/Unix操作系統(tǒng)輸出 \#Windows操作系統(tǒng)輸出
7. os.linesep,當前平臺使用的行終止符。
>>> import os >>> os.linesep '\n'#Linux平臺 '\r\n'#Windows平臺
2.2 os.path模塊
1. os.path.split,返回一個路徑的目錄名和文件名,并不檢查這個路徑是否真實存在。
import os print os.path.split("/home/workspace/PythonTest/test.py") print os.path.split("/home/zhb/workspace/PythonTest/test.py")
控制輸出,
('/home/workspace/PythonTest', 'test.py') ('/home/zhb/workspace/PythonTest', 'test.py')
2. os.path.isfile,os.path.isdir分別用于判斷指定路徑是不是一個文件和目錄。
import os print os.path.isfile("/home/zhb/workspace/PythonTest/temp.txt") print os.path.isdir("/home/zhb/workspace/PythonTest") print os.path.isfile("/home/zhb/workspace/PythonTest/temp.py") print os.path.isdir("/home/workspace/PythonTest")
控制臺輸出,
True True False False
3. os.path.exists,用于檢查指定的路徑是否真實的存在。
import os print os.path.exists("/home/workspace/PythonTest/test.py") print os.path.exists("/home/zhb/workspace/PythonTest/test.py")
控制臺輸出,
False True
4. os.path.abspath,獲得指定文件的絕對路徑。
import os print os.path.abspath("test.py")
控制臺輸出,
/home/zhb/workspace/PythonTest/test.py
5. os.path.normpath,規(guī)范指定路徑的字符串形式。
import os print os.path.normpath("/home/zhb////////workspace/PythonTest/test.py")
控制臺輸出,
/home/zhb/workspace/PythonTest/test.py
6. os.path.getsize,獲得文件大小,如果文件名為目錄,則返回目錄的大小。
import os print os.path.getsize("test.py") print os.path.getsize("temp")
控制臺輸出,
285 4096
7. os.path.splitext,分離文件名與擴展名。
import os print os.path.splitext("test.py")
控制臺輸出,
('test', '.py')
8. os.path.join,連接目錄與文件名或者目錄。
import os print os.path.join("/home/zhb/workspace/PythonTest","test.py") print os.path.join("/home/zhb","workspace/PythonTest")
控制臺輸出,
/home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest
9. os.path.basename,返回文件名。
import os print os.path.basename("test.py") print os.path.basename("/home/zhb/workspace/PythonTest/test.py")
控制臺輸出,
test.py test.py
10. os.path.dirname,返回文件路徑。
import os print os.path.dirname("test.py") print os.path.dirname("/home/zhb/workspace/PythonTest/test.py")
控制臺輸出,
/home/zhb/workspace/PythonTest
11. os.walk,遍歷頂級目錄下的文件。
函數(shù)聲明,os.walk(top, topdown=True, onerror=None, followlinks=False)
參數(shù)top,需要遍歷的頂級目錄的路徑,
參數(shù)topdown,默認是"True",便是首先返回頂級目錄下的文件,然后再遍歷子目錄中的文件。當topdown的值為"False"時,表示先遍歷子目錄中的文件,然后再返回頂級目錄中的文件。
參數(shù)onerror,默認是值是None,表示忽略文件遍歷時的錯誤,如果不為空,則提供一個自定義函數(shù)提示錯誤信息后繼續(xù)遍歷或者拋出異常終止遍歷。
import os top_dir = "/home/zhb/workspace/PythonTest" for dir_path,subpath,files in os.walk(top_dir,True): for file in files: file_path = os.path.join(dir_path,file) print file_path
控制臺輸出,
/home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs 將參數(shù)topdown設置為False, /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs /home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt
12. os.path.walk,遍歷文件夾下所有文件,先遍歷頂級目錄,再遍歷子目錄中的文件,但是只產(chǎn)生文件路徑,是子目錄和文件的混合列表。
函數(shù)聲明,os.path.walk(top, func, arg),
參數(shù)top,需要遍歷的頂級目錄路徑。
參數(shù)func,表示回調(diào)函數(shù),即對遍歷路徑進行處理的函數(shù)。
參數(shù)arg,是傳遞給回調(diào)函數(shù)的元組,為回調(diào)函數(shù)提供處理參數(shù),arg可以為空。
import os top_dir = "/home/zhb/workspace/PythonTest" def find_file(arg,dir_path,files): for file in files: file_path = os.path.join(dir_path,file) print file_path os.path.walk(top_dir,find_file,())
控制輸出,
/home/zhb/workspace/PythonTest/temp#子目錄 /home/zhb/workspace/PythonTest/test.py /home/zhb/workspace/PythonTest/.pydevproject /home/zhb/workspace/PythonTest/PaperID_mapping_to_AffiliationsID.txt /home/zhb/workspace/PythonTest/.settings#子目錄 /home/zhb/workspace/PythonTest/.project /home/zhb/workspace/PythonTest/temp.txt /home/zhb/workspace/PythonTest/BrowseQueryResult.txt /home/zhb/workspace/PythonTest/temp/hello.txt /home/zhb/workspace/PythonTest/.settings/org.eclipse.core.resources.prefs