os是python自帶的系統(tǒng)模塊,需要import使用

目前累計(jì)服務(wù)客戶上千,積累了豐富的產(chǎn)品開(kāi)發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計(jì)水平和技術(shù)實(shí)力,樹(shù)立企業(yè)形象,為客戶提供做網(wǎng)站、成都網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷、VI設(shè)計(jì)、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠(chéng)信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過(guò)對(duì)領(lǐng)先技術(shù)的掌握、對(duì)創(chuàng)意設(shè)計(jì)的研究、對(duì)客戶形象的視覺(jué)傳遞、對(duì)應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。
os 源于英文Operating System(操作系統(tǒng))的縮寫(xiě)
cwd 則是源于Current Working Directory,中文意思是 當(dāng)前工作目錄
所以os.getcwd() 指獲取當(dāng)前工作目錄
示例:
getcwd()方法語(yǔ)法格式如下:
總之,舉例來(lái)講,os.getcwd()、sys.path[0] (sys.argv[0])和 file 的區(qū)別是這樣的:
假設(shè)目錄結(jié)構(gòu)是:
然后我們?cè)贑:\test下面執(zhí)行
這時(shí)sub_path.py里面與各種用法對(duì)應(yīng)的值其實(shí)是:
無(wú)
path的準(zhǔn)確定位對(duì)于import包,讀寫(xiě)文件都非常重要,
如果一時(shí)不能理解,可以在文件執(zhí)行開(kāi)頭多加幾個(gè)
print幫助我們確定那個(gè)路徑是我們希望拿到的,然后將其設(shè)為全局變量就好了
對(duì)基礎(chǔ)運(yùn)行環(huán)境有疑問(wèn)的,推薦參考: python函數(shù)深入淺出 0.基礎(chǔ)篇
python os庫(kù)有很多和操作系統(tǒng)相關(guān)的功能。
其實(shí)不僅僅如此,os庫(kù)中還有很多和文件,路徑,執(zhí)行系統(tǒng)命令相關(guān)的。
下面是os模塊常用的方法.
1.os.sep? ? ? ? ? ? ? ? ? ? 可以取代操作系統(tǒng)特定的路徑分割符
2.os.name? ? ? ? ? ? ? ? 字符串指示你正在使用的平臺(tái)。比如對(duì)于Windows,它是'nt',而對(duì)于Linux/Unix用戶,它是'posix'
3.os.getcwd()? ? ? ? ? ? 函數(shù)得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑
4.os.getenv()? ? ? ? ? ? 用來(lái)讀取環(huán)境變量
5.os.putenv()? ? ? ? ? ? 用來(lái)設(shè)置環(huán)境變量
6.os.listdir()? ? ? ? ? ? ? 返回指定目錄下的所有文件和目錄名
7os.remove()? ? ? ? ? ? 函數(shù)用來(lái)刪除一個(gè)文件
8.os.system()? ? ? ? ? ? 函數(shù)用來(lái)運(yùn)行shell命令
9.os.linesep? ? ? ? ? ? ? 字符串給出當(dāng)前平臺(tái)使用的行終止符。例如,Windows使用'/r/n',Linux使用'/n'而Mac使用'/r'。
10.os.path.split()? ? ? 函數(shù)返回一個(gè)路徑的目錄名和文件名
11.os.path.isfile()? ? ? 檢驗(yàn)給出的路徑是一個(gè)文件
12os.path.isdir()? ? ? ? 檢驗(yàn)給出的路徑是一個(gè)目錄
13.os.path.existe()? ? 函數(shù)用來(lái)檢驗(yàn)給出的路徑是否真地存在
14.os.listdir(dirname) 列出dirname下的目錄和文件
15.os.getcwd()? ? ? ? ? 獲得當(dāng)前工作目錄
16.os.curdir? ? ? ? ? ? ? ? 返回當(dāng)前目錄('.')
17.os.chdir(dirname)? 改變工作目錄到dirname
os.path都是和路徑指定的文件,目錄,和路徑字符串有關(guān)系的函數(shù)
os.path.isdir(name)? ? ? ? ? 判斷name是不是一個(gè)目錄,name不是目錄就返回false
os.path.isfile(name)? ? ? ? ? 判斷name是不是一個(gè)文件,不存在name也返回false
os.path.exists(name)? ? ? ? 判斷是否存在文件或目錄name
os.path.getsize(name)? ? ? 獲得文件大小,如果name是目錄返回0L
os.path.abspath(name)? ? 獲得絕對(duì)路徑
os.path.normpath(path)? ? 規(guī)范path字符串形式
os.path.split(name)? ? ? ? ? 分割文件名與目錄(事實(shí)上,如果你完全使用目錄,它也會(huì)將最后一個(gè)目錄作為文件名而分離,同時(shí)它不會(huì)判斷文件或目錄是否存在)
os.path.splitext()? ? ? ? ? ? ? 分離文件名與擴(kuò)展名
os.path.join(path,name)? ? 連接目錄與文件名或目錄
os.path.basename(path)? 返回文件名
os.path.dirname(path)? ? ? 返回文件路徑
參考:
Python中對(duì)OS模塊的定位是:提供了使用操作系統(tǒng)的工具接口。
如果你想讀寫(xiě)文件,可以參考o(jì)pen();
如果你想操作文件路徑,參考o(jì)s.path模塊;
如果你想在命令行讀取所有文件的所有行,參考fileinput模塊;
如果你想創(chuàng)建臨時(shí)文件或目錄,參考tempfile模塊;
如果你想更高級(jí)的文件和路徑處理,參考shutil模塊;
內(nèi)置的OSError異常類型,比如在使用os模塊中的函數(shù)接口時(shí),在參數(shù)中提供了無(wú)效的文件或路徑,就回報(bào)錯(cuò)os.error。
該變量返回當(dāng)前操作系統(tǒng)的類型,當(dāng)前只注冊(cè)了3個(gè)值:分別是posix , nt , java, 對(duì)應(yīng)linux/windows/java虛擬機(jī)。
在Python中,文件名,命令行參數(shù)和環(huán)境變量都是用字符串類型來(lái)表示。
接下來(lái)的這些函數(shù)和數(shù)據(jù)提供了當(dāng)前進(jìn)程和用戶的信息狀態(tài)和操作接口。
返回進(jìn)程控制終端的文件名,適用于Unix系統(tǒng)。
返回字符串到環(huán)境變量的映射。
改變當(dāng)前工作目錄到指定的路徑,path為要切換到的新路徑。
通過(guò)文件描述符改變當(dāng)前工作目錄。
文件描述符是內(nèi)核為了高效管理已經(jīng)被打開(kāi)的文件所創(chuàng)建的索引,
進(jìn)程通過(guò)文件描述符來(lái)訪問(wèn)文件。 在程序剛啟動(dòng)的時(shí)候默認(rèn)有3個(gè)文件描述符:0(標(biāo)準(zhǔn)輸入),1(標(biāo)準(zhǔn)輸出),2(標(biāo)準(zhǔn)錯(cuò)誤),系統(tǒng)默認(rèn)提供了 0~2的文件描述符,之后的 當(dāng)我們進(jìn)行 open,create等操作的時(shí)候 自動(dòng)添加進(jìn)表
所以int creat(const char * ,mode_t)返回的文件int 就是你所進(jìn)行操作的文件的唯一身份標(biāo)示,
然后你只要拿著這個(gè)ID 然后告訴系統(tǒng)給我找xx, write(int fd,char *buf,int lenght) 通過(guò)fd得到準(zhǔn)確文件 然后寫(xiě)入。
當(dāng)我們新建creat,打開(kāi)open 之后,得到的fd 是從3開(kāi)始的 因?yàn)榍懊娴娜齻€(gè)被系統(tǒng)占了在OS X系統(tǒng)下測(cè)試 文件描述符表 自增,當(dāng)釋放close之后,fd變成-1,如果再繼續(xù)新建 則填補(bǔ)之前的空缺。
返回當(dāng)前工作目錄。
把字符串類型的文件名翻譯成bytes類型的文件名;os.fsdecode()實(shí)現(xiàn)相反的功能。
返回路徑的文件系統(tǒng)表示。
如果環(huán)境變量中存在key,返回環(huán)境變量key的值,否則返回default的值。
設(shè)置環(huán)境變量key的值為value。
使用當(dāng)前uid/gid檢測(cè)對(duì)路徑path是否有訪問(wèn)權(quán)限。其中,path為要檢測(cè)是否有權(quán)限的路徑,mode為權(quán)限類別,值可以為os.F_OK、os.R_OK、os.W_OK、os.X_OK中的一個(gè)或多個(gè);
切換當(dāng)前的工作路徑為path指定的路徑。
設(shè)置路徑path的標(biāo)記為flags,flags為數(shù)字標(biāo)記,多個(gè)flags可以使用or組合。flags可以為以下值或以下值的組合:
更改文件或目錄的權(quán)限。
path -- 文件名路徑或目錄路徑
mode -- 可用以下選項(xiàng)按位或操作生成, 目錄的讀權(quán)限表示可以獲取目錄里文件名列表, 寫(xiě)權(quán)限表示可以獲取文件并且可以修改內(nèi)容,執(zhí)行權(quán)限表示可以把工作目錄切換到此目錄 ,刪除添加目錄里的文件必須同時(shí)有寫(xiě)和執(zhí)行權(quán)限 ,文件權(quán)限以用戶id-組id-其它順序檢驗(yàn),最先匹配的允許或禁止權(quán)限被應(yīng)用。
更改路徑的擁有者和group id為uid和gid。如果不修改可以設(shè)置為-1,并且需要超級(jí)用戶權(quán)限來(lái)執(zhí)行權(quán)限修改操作。
path -- 設(shè)置權(quán)限的文件路徑
uid -- 所屬用戶ID
gid -- 所屬用戶組ID
更改當(dāng)前進(jìn)程的根目錄為path。
返回當(dāng)前工作目錄。
返回path目錄路徑下的文件列表,列表沒(méi)有固定的順序。
創(chuàng)建目錄path。如果目錄已經(jīng)存在,會(huì)拋出異常FileExistsError。
遞歸的目錄創(chuàng)建,遞歸的意思是創(chuàng)建所有到達(dá)葉子目錄的中間目錄。
從原始設(shè)備號(hào)(通常是stat中的st_dev或st_rdev)中提取設(shè)備major號(hào)碼。
從原始設(shè)備號(hào)(通常是stat中的st_dev或st_rdev)中提取設(shè)備minor號(hào)碼。
根據(jù)設(shè)備的major號(hào)碼和minor號(hào)碼組成原始設(shè)備號(hào)。
刪除文件路徑path。如果path指向的是目錄路徑,會(huì)拋出異常IsADirectoryError。如果要?jiǎng)h除目錄,使用rmdir。
遞歸的刪除目錄。與rmdir功能相似,不同的是,如果葉子目錄被刪除之后,removedirs會(huì)連續(xù)的刪除每一層上級(jí)目錄,直到拋出異常(異常會(huì)被忽略,因?yàn)楫惓MǔR馕吨蠈幽夸洖榉强漳夸洠?/p>
重命名文件或路徑src為dst,如果dst已經(jīng)存在,會(huì)拋出異常。
遞歸的重命名文件或目錄。功能與rename類似,不同在于,renames首先創(chuàng)建new路徑(即重命名之后的路徑)的中間路徑,然后創(chuàng)建完整new路徑,最后,會(huì)使用removedirs刪除掉old路徑(實(shí)際上刪除的是old路徑與new路徑不重合的部分)。
重命名文件或路徑src為dst。如果dst是目錄,拋出異常OSError。如果dst是文件且已經(jīng)存在,且用戶具有權(quán)限,dst會(huì)被替換掉。
刪除path目錄。如果path不存在,或者path非空,會(huì)拋出異常FileNotFoundError或OSError。如果要?jiǎng)h除整個(gè)目錄樹(shù),可以使用shutil.rmtree()。
返回path的絕對(duì)路徑,效果等同于使用normpath:normpath(join(os.getcwd(), path))。
返回路徑path的文件名,也就是對(duì)path調(diào)用os.path.split函數(shù)返回的元組的第二個(gè)元素。
paths為一個(gè)序列類型,其中每個(gè)元素表示一個(gè)路徑,函數(shù)返回結(jié)果為每個(gè)元素所表示的路徑的最長(zhǎng)公共子路徑。如果paths為空,或者paths同時(shí)包含絕對(duì)路徑和相對(duì)路徑,或者paths同時(shí)包含不同驅(qū)動(dòng)類型的路徑(比如Linux系統(tǒng)的路徑和Windows系統(tǒng)的路徑),則拋出異常ValueError。
list中的每個(gè)元素表示一個(gè)路徑,函數(shù)返回每個(gè)路徑的最長(zhǎng)的共有路徑前綴,因?yàn)橛?jì)算方式為逐個(gè)字符進(jìn)行比較,所以可能返回的結(jié)果并非有效的路徑,如果要返回有效路徑,可以使用commonpath。
返回path路徑的目錄部分,也就是對(duì)path調(diào)用os.path.split函數(shù)返回的元組的第一個(gè)元素。
如果path指向的路徑已存在,則返回True,否則返回False。
在Unix和Windows系統(tǒng)中,返回path路徑中的~被替換成用戶的home目錄之后的結(jié)果。
path路徑中的 {name}被環(huán)境變量中對(duì)應(yīng)名稱的值替代。
返回最后一次訪問(wèn)path的時(shí)間,返回值的格式為一個(gè)float類型的數(shù)值,表示距離epoch基準(zhǔn)時(shí)間1970-01-01 00:00:00的秒數(shù)。如果path表示的路徑不存在或者沒(méi)有權(quán)限,拋出異常OSError。
返回最后一次修改path的時(shí)間,返回值的格式為一個(gè)float類型的數(shù)值,表示距離epoch基準(zhǔn)時(shí)間1970-01-01 00:00:00的秒數(shù)。如果path表示的路徑不存在或者沒(méi)有權(quán)限,拋出異常OSError。
返回path表示的文件或路徑的大小,以byte字節(jié)為單位。如果path表示的路徑不存在或者沒(méi)有權(quán)限,拋出異常OSError。
如果path是絕對(duì)路徑,返回True,否則返回False。
如果path表示的是已存在的文件路徑,返回True。
如果path表示的是已存在的目錄,返回True。
如果path表示的是鏈接,返回True。
判斷path是否為掛載點(diǎn)。
連接一個(gè)或多個(gè)路徑,path和多個(gè)*paths的連接會(huì)使用路徑分隔符。
對(duì)path的字母大小寫(xiě)進(jìn)行normalize。在Windows系統(tǒng)中,path中的所有字母都轉(zhuǎn)成小寫(xiě),并且把正斜杠轉(zhuǎn)成反斜杠。在其他操作系統(tǒng)中,返回path本身。
對(duì)path進(jìn)行normalize,刪除多余的路徑分隔符。
split the path into a pair (head, tail),其中tail是path中最后的部分,并且永遠(yuǎn)不會(huì)含有斜杠,head是除了tail之外的部分。如果path以斜杠結(jié)尾,tail為空;如果path中不包含斜杠,head為空;如果path為空,head和tail都是空。
os.pardir- 路徑組件,意味著將目錄樹(shù)向上遍歷一級(jí)(例如,“ ..”)。
os.path 函數(shù)可用于將表示文件名的字符串解析為其組成部分。重要的是要意識(shí)到這些功能不依賴于實(shí)際存在的路徑。路徑解析取決于以下定義的一些 os 變量:
1、os.sep- 路徑部分之間的分隔符。
2、os.extsep- 文件名和文件“擴(kuò)展名”之間的分隔符(例如,“ .”)。
3、os.curdir- 引用當(dāng)前目錄的路徑組件(例如,“ .”)。
擴(kuò)展資料
os.getcwd(): 獲取當(dāng)前工作目錄,即當(dāng)前python腳本工作的目錄路徑。
os.chdir("dirname") :改變當(dāng)前腳本工作目錄;相當(dāng)于shell下cd。
os.curdir 返回當(dāng)前目錄: ('.')。
os.pardir 獲取當(dāng)前目錄的父目錄字符串名:('..')。
os.makedirs('dirname1/dirname2') :可生成多層遞歸目錄。
os.removedirs('dirname1'): 若目錄為空,則刪除,并遞歸到上一級(jí)目錄,如若也為空,則刪除,依此類推。
一、os模塊概述
Python os模塊包含普遍的操作系統(tǒng)功能。如果你希望你的程序能夠與平臺(tái)無(wú)關(guān)的話,這個(gè)模塊是尤為重要的。(一語(yǔ)中的)
二、常用方法
1、os.name
輸出字符串指示正在使用的平臺(tái)。如果是window 則用'nt'表示,對(duì)于Linux/Unix用戶,它是'posix'。
2、os.getcwd()
函數(shù)得到當(dāng)前工作目錄,即當(dāng)前Python腳本工作的目錄路徑。
3、os.listdir()
返回指定目錄下的所有文件和目錄名。
os.listdir(os.getcwd())
['Django', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'MySQL-python-wininst.log', 'NEWS.txt', 'PIL-wininst.log', 'python.exe', 'pythonw.exe', 'README.txt', 'RemoveMySQL-python.exe', 'RemovePIL.exe', 'Removesetuptools.exe', 'Scripts', 'setuptools-wininst.log', 'tcl', 'Tools', 'w9xpopen.exe']
4、os.remove()
刪除一個(gè)文件。
5、os.system()
運(yùn)行shell命令。
os.system('dir')
os.system('cmd') #啟動(dòng)dos
6、os.sep 可以取代操作系統(tǒng)特定的路徑分割符。
7、os.linesep字符串給出當(dāng)前平臺(tái)使用的行終止符
os.linesep
'\r\n' #Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。
os.sep
'\\' #Windows
8、os.path.split()
函數(shù)返回一個(gè)路徑的目錄名和文件名
os.path.split('C:\\Python25\\abc.txt')
('C:\\Python25', 'abc.txt')
9、os.path.isfile()和os.path.isdir()函數(shù)分別檢驗(yàn)給出的路徑是一個(gè)文件還是目錄。
os.path.isdir(os.getcwd())
True
os.path.isfile('a.txt')
False
10、os.path.exists()函數(shù)用來(lái)檢驗(yàn)給出的路徑是否真地存在
os.path.exists('C:\\Python25\\abc.txt')
False
os.path.exists('C:\\Python25')
True
11、os.path.abspath(name):獲得絕對(duì)路徑
12、os.path.normpath(path):規(guī)范path字符串形式
13、os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
14、os.path.splitext():分離文件名與擴(kuò)展名
os.path.splitext('a.txt')
('a', '.txt')
15、os.path.join(path,name):連接目錄與文件名或目錄
os.path.join('c:\\Python','a.txt')
'c:\\Python\\a.txt'
os.path.join('c:\\Python','f1')
'c:\\Python\\f1'
16、os.path.basename(path):返回文件名
os.path.basename('a.txt')
'a.txt'
os.path.basename('c:\\Python\\a.txt')
'a.txt'
17、os.path.dirname(path):返回文件路徑
os.path.dirname('c:\\Python\\a.txt')
'c:\\Python'
案例一:新建一個(gè)txt文件并向文件中寫(xiě)入數(shù)據(jù)。
代碼與結(jié)果如上圖所示。
案例:os.rename('kitty1.txt',''kitty2.txt')
2.1 輸出結(jié)果:將kitty1文件改為kitty2
2.2 文件解析說(shuō)明:文件重命名,將test1文件改為test2文件。
案例:os.remove('kitty2.txt')
3.1 輸出結(jié)果:kitty2.txt文件被刪除
3.2 解析說(shuō)明:刪除文件。
案例:os.mkdir('kitty')
4.1 輸出結(jié)果:創(chuàng)建一個(gè)文件夾名字為kitty
4.2 解析說(shuō)明:創(chuàng)建文件夾。
4.3 解析說(shuō)明:list.pop()就直接從list中的最末尾處刪除一個(gè)元素。
案例:os.rmdir('test')
5.1 輸出結(jié)果:刪除一個(gè)文件夾
5.3 解析說(shuō)明:刪除文件夾.
解析說(shuō)明:可以取代操作系統(tǒng)特定的路徑分割符
案例一:print(os.getcwd())
輸出結(jié)果:D:PythonProjectPython編程基礎(chǔ)
解析說(shuō)明:相當(dāng)于linux下的pwd,獲取當(dāng)前目錄。
案例一:os.chdir(os.getcwd()+os.sep+'kitty')
解析說(shuō)明:進(jìn)入到某個(gè)目錄下。
解析說(shuō)明:相當(dāng)于linux下的ls,顯示當(dāng)前目錄下的文件。
解析說(shuō)明:創(chuàng)建一個(gè)aa文件夾,再在里面創(chuàng)建一個(gè)bb文件夾。
解析說(shuō)明:刪除aa文件夾和aa文件夾中的bb文件夾。
解析說(shuō)明:判斷是否是個(gè)文件。
解析說(shuō)明:判斷是否是個(gè)文件夾。
解析說(shuō)明:判斷文件是否存在。
解析說(shuō)明:獲取文件大小。
解析說(shuō)明:返回文件的絕對(duì)路徑。
解析說(shuō)明:獲取文件的文件名,注意參數(shù)需要傳入絕對(duì)路徑。
解析說(shuō)明:獲取文件的所在目錄,注意參數(shù)需要傳入絕對(duì)路徑。
網(wǎng)頁(yè)名稱:python中os函數(shù),python中ossystem函數(shù)有什么用
文章來(lái)源:http://chinadenli.net/article1/dsgijod.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、、App設(shè)計(jì)、企業(yè)網(wǎng)站制作、網(wǎng)站收錄、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)