最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python標(biāo)準(zhǔn)庫(kù)os常用函數(shù)和屬性詳解

 更新時(shí)間:2022年11月28日 15:17:38   作者:Albert?Darren  
os模塊是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)用于訪(fǎng)問(wèn)操作系統(tǒng)相關(guān)功能的模塊,os模塊提供了一種可移植的使用操作系統(tǒng)功能的方法,本文給大家介紹下?OS標(biāo)準(zhǔn)庫(kù)常用函數(shù)和屬性,感興趣的朋友跟隨小編一起看看吧

1. OS標(biāo)準(zhǔn)庫(kù)簡(jiǎn)介

顧名思義,OS表示Operating System,即操作系統(tǒng)。OS標(biāo)準(zhǔn)庫(kù)是一個(gè)操作系統(tǒng)接口模塊,提供一些方便使用操作系統(tǒng)相關(guān)功能的函數(shù),具體安裝位置可通過(guò)導(dǎo)入os模塊查看os.__file__屬性得到。當(dāng)需要在Python代碼中調(diào)用OS相關(guān)功能實(shí)現(xiàn)業(yè)務(wù)邏輯或者無(wú)法直接使用命令行工具時(shí),我們就需要考慮導(dǎo)入此模塊,因此有必要進(jìn)行深入學(xué)習(xí)。

2. OS標(biāo)準(zhǔn)庫(kù)常用函數(shù)和屬性

2.1 文件和目錄

2.1.1 os.getcwd()

返回表示當(dāng)前工作目錄的字符串

print("當(dāng)前工作目錄為:{}".format(os.getcwd())) # 返回當(dāng)前工作目錄

2.1.2 os.mkdir(path, mode=0o777, *, dir_fd=None)

以指定數(shù)字表示的權(quán)限模式mode創(chuàng)建一個(gè)名為path的目錄。某些系統(tǒng)會(huì)忽略 mode,如果沒(méi)有忽略,那么Linux系統(tǒng)來(lái)說(shuō),新建文件夾的權(quán)限=指定數(shù)字表示的權(quán)限模式mode-當(dāng)前系統(tǒng)用戶(hù)的umask默認(rèn)權(quán)限,如下所示

"""
Linux操作系統(tǒng)可通過(guò)umask命令獲得4個(gè)八進(jìn)制數(shù)表示的默認(rèn)權(quán)限,root用戶(hù)默認(rèn)是0022,普通用戶(hù)默認(rèn)是 0002
第1位數(shù)代表文件所具有的特殊權(quán)限(SetUID、SetGID、Sticky BIT),后3位數(shù)表示表示umask權(quán)限值
分別對(duì)應(yīng)所有者、用戶(hù)組、其他人的權(quán)限值,權(quán)限與數(shù)字對(duì)應(yīng)關(guān)系為:r->4,w->2,x->1
"""
exit_code=os.system("umask")

"""
文件夾模式mode賦值為十進(jìn)制511,等價(jià)于八進(jìn)制0o777
"""
set_mode=511
os.mkdir(path="./cyr",mode=set_mode) # 在當(dāng)前目錄創(chuàng)建名為cyr的文件夾
# 長(zhǎng)格式查看新創(chuàng)建的文件夾cyr可知其權(quán)限字符串為rwxr-xr-x,等價(jià)于轉(zhuǎn)換后的數(shù)字權(quán)限111101101
!ls -l | grep cyr

umask_value=0o0022 # 當(dāng)前系統(tǒng)用戶(hù)八進(jìn)制表示umask默認(rèn)權(quán)限
new_dir_mode=set_mode-umask_value
print("新建文件夾的權(quán)限為:{:b}".format(new_dir_mode))

os.rmdir(path, *, dir_fd=None)

移除(刪除)目錄 path。如果目錄不存在或不為空,則會(huì)分別拋出 FileNotFoundErrorOSError 異常。

os.rmdir("./cyr") # 刪除空文件夾成功,無(wú)法查到cyr目錄
!ls | grep cyr
os.rmdir("./why") # 刪除不存在的文件夾FileNotFoundError報(bào)錯(cuò)

os.rmdir("./nnunet/") # 刪除不為空文件夾OSError報(bào)錯(cuò)

os.chdir(path)

將當(dāng)前工作目錄更改為 path

print("切換前的當(dāng)前工作目錄為:{}".format(os.getcwd())) # 返回當(dāng)前工作目錄
dst_path="/root" # 目標(biāo)文件夾
os.chdir(dst_path) # 將當(dāng)前工作目錄切換為/root
print("切換后的當(dāng)前工作目錄為:{}".format(os.getcwd())) # 返回當(dāng)前工作目錄

os.listdir(path='.')

返回一個(gè)包含指定path下所有文件和目錄名稱(chēng)的按任意順序排列的列表,特殊條目’.‘和’…'除外

dst_path="/code/" # 目標(biāo)目錄
dirs_ls=os.listdir(path=dst_path) # 獲得指定目錄下全部文件和文件夾名稱(chēng)列表
print(dirs_ls)

2.2 os.path常見(jiàn)路徑操作

2.2.1 os.path.abspath(path)

返回路徑path 的絕對(duì)路徑(標(biāo)準(zhǔn)化的),相當(dāng)于字符串拼接,路徑path不存在也不會(huì)報(bào)錯(cuò)

relative_path="tests/test_steps_for_sliding_window_prediction.py" # 路徑path存在
print("{}對(duì)應(yīng)的絕對(duì)路徑為{}".format(relative_path,os.path.abspath(relative_path)))

no_path="tests/none.py" # 路徑path不存在
print("{}對(duì)應(yīng)的絕對(duì)路徑為{}".format(relative_path,os.path.abspath(no_path)))

2.2.2 os.path.basename(path)

返回路徑 path 的基本名稱(chēng)

full_pathname="/proc/bus/pci/3a/08.0" # 路徑path存在
print("全路徑名稱(chēng)對(duì)應(yīng)的文件名為{}".format(os.path.basename(full_pathname)))

no_full_pathname="/demo/none.cpp" # 路徑path不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的文件名為{}".format(os.path.basename(no_full_pathname)))

2.2.3 os.path.dirname(path)

返回路徑 path 的目錄名稱(chēng)

full_pathname="/proc/bus/pci/3a/08.0" # 路徑path存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄名稱(chēng)為{}".format(os.path.dirname(full_pathname)))

no_full_pathname="/demo/none.cpp" # 路徑path不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄名稱(chēng)為{}".format(os.path.dirname(no_full_pathname)))

2.2.4 os.path.exists(path)

判斷path是否指向一個(gè)已存在路徑或已打開(kāi)的文件描述符,存在返回True,不存在返回False

full_pathname="/proc/bus/pci/3a/08.0" # 路徑path存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄是否存在?{}".format(os.path.exists(full_pathname)))

no_full_pathname="/demo/none.cpp" # 路徑path不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄是否存在?{}".format(os.path.exists(no_full_pathname)))

2.2.5 os.path.isabs(path)

判斷path是否為一個(gè)絕對(duì)路徑,是則返回True,不是或不存在則返回False。在 Unix 上,它就是以斜杠開(kāi)頭,而在 Windows 上,它可以是去掉驅(qū)動(dòng)器號(hào)后以斜杠(或反斜杠)開(kāi)頭。

abs_pathname="/proc/bus/pci/3a/08.0" # 路徑path存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄是否為絕對(duì)路徑?{}".format(os.path.isabs(abs_pathname)))

rel_pathname="./nnunet/__init__.py" # 路徑path是相對(duì)路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄是否絕對(duì)路徑?{}".format(os.path.isabs(rel_pathname)))

no_pathname="./nnunet/none.py" # 路徑path是不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的目錄是否絕對(duì)路徑?{}".format(os.path.isabs(no_pathname)))

2.2.6 os.path.isfile(path)

若path為指向一個(gè)已存在文件的符號(hào)鏈接或一個(gè)已存在文件路徑,返回True。若path為一個(gè)文件夾路徑或不存在路徑,返回False。

ls -li /opt/conda/bin/python* # 帶inode節(jié)點(diǎn)信息并長(zhǎng)格式查看python開(kāi)頭的文件和文件夾

由上圖可發(fā)現(xiàn)/opt/conda/bin/python為一個(gè)符號(hào)鏈接(軟鏈接)指向一個(gè)已存在文件路徑/opt/conda/bin/python3.7

abs_pathname="/opt/conda/bin/python3.7" # path為一個(gè)已存在文件路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的文件是否存在?{}".format(os.path.isfile(abs_pathname)))

symbolic_link="/opt/conda/bin/python" # path為指向一個(gè)已存在文件/opt/conda/bin/python3.7的符號(hào)鏈接
print("全路徑名稱(chēng)對(duì)應(yīng)的文件是否存在?{}".format(os.path.isfile(symbolic_link)))

abs_path="/opt/conda/bin/" # 文件夾路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的文件是否存在?{}".format(os.path.isfile(abs_path)))

no_full_pathname="/demo/none.cpp" # 路徑path不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的文件是否存在?{}".format(os.path.isfile(no_full_pathname)))

2.2.7 os.path.isdir(path)

若path為指向一個(gè)已存在文件夾的符號(hào)鏈接或一個(gè)已存在文件夾路徑,返回True。若path為一個(gè)文件路徑或不存在路徑,返回False。

ls /code/nnunet/ # 查看已存在文件夾路徑/code/nnunet/

ln -s /code/nnunet/ ./symlink2codennunet # 當(dāng)前目錄即root下創(chuàng)建一個(gè)軟鏈接指向一個(gè)已存在文件夾路徑/code/nnunet/
ls -l /root/

由上圖可知root用戶(hù)主目錄下存在一個(gè)軟鏈接symlink2codennunet指向一個(gè)已存在文件夾路徑

exist_dir_path="/code/nnunet/"# path為一個(gè)已存在文件夾路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的文件夾是否存在?{}".format(os.path.isdir(exist_dir_path)))

exist_dir_symlink="/root/symlink2codennunet/"# path為指向一個(gè)已存在文件夾的符號(hào)鏈接
print("全路徑名稱(chēng)對(duì)應(yīng)的文件夾是否存在?{}".format(os.path.isdir(exist_dir_symlink)))

exist_file_path="/opt/conda/bin/python3.7"# path為一個(gè)已存在文件路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的文件夾是否存在?{}".format(os.path.isdir(exist_file_path)))

no_path="/demo/none.cpp" # 路徑path不存在
print("全路徑名稱(chēng)對(duì)應(yīng)的文件夾是否存在?{}".format(os.path.isdir(no_path)))

2.2.8 os.path.islink(path)

若path代表一個(gè)已存在的符號(hào)鏈接,則返回True,反之則返回False。如果 Python 運(yùn)行時(shí)不支持符號(hào)鏈接,則總是返回 False

exist_symbolic_link="/opt/conda/bin/python" # path為指向一個(gè)已存在的符號(hào)鏈接
print("全路徑名稱(chēng)對(duì)應(yīng)的符號(hào)鏈接是否存在?{}".format(os.path.islink(exist_symbolic_link)))

no_symbolic_link="/demo/no_link" # path為指向一個(gè)不存在的符號(hào)鏈接
print("全路徑名稱(chēng)對(duì)應(yīng)的符號(hào)鏈接是否存在?{}".format(os.path.islink(no_symbolic_link)))

exist_file_path="/opt/conda/bin/python3.7"# path為一個(gè)已存在文件路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的符號(hào)鏈接是否存在?{}".format(os.path.islink(exist_file_path)))

exist_dir_path="/root/"# path為一個(gè)已存在文件夾路徑
print("全路徑名稱(chēng)對(duì)應(yīng)的符號(hào)鏈接是否存在?{}".format(os.path.islink(exist_dir_path)))

2.2.9 os.path.join(path, *paths)

拼接兩個(gè)或多個(gè)路徑部分,按需要插入/。如果參數(shù)中某個(gè)部分是絕對(duì)路徑,則絕對(duì)路徑前的路徑都將被丟棄,并從絕對(duì)路徑部分開(kāi)始連接。如果最后一部分為空,則結(jié)果將以分隔符結(jié)尾。

previous_path,abs_dirname,basename,empty_part="model","/code","demo.py",""
print("參數(shù)中某個(gè)部分是絕對(duì)路徑拼接后為{}".format(os.path.join(previous_path,abs_dirname,basename)))

print("拼接兩個(gè)或多個(gè)路徑部分,按需要插入'/'拼接后為{}".format(os.path.join(previous_path,basename)))

print("最后一部分為空以分隔符結(jié)尾{}".format(os.path.join(previous_path,basename,empty_part)))

2.2.10 os.path.normcase(path)

規(guī)范路徑名稱(chēng)的大小寫(xiě)。 在 Windows 上,將路徑名稱(chēng)中的所有字符轉(zhuǎn)為小寫(xiě),并將正斜杠轉(zhuǎn)為反斜杠。 在其他操作系統(tǒng)上,將路徑不加修改地返回。

Linux操作系統(tǒng)

print("當(dāng)前操作系統(tǒng)模塊名為:{}".format(os.name))
windows_style_path=r"C:/Users\defaultuser0/APPData"
print("Windows路徑規(guī)范化后為{}".format(os.path.normcase(windows_style_path)))

Windows操作系統(tǒng)

2.2.11 os.path.split(path)

將路徑 path 拆分為一對(duì),即 (head, tail),其中,tail 是路徑的最后一部分,而 head 里是除最后部分外的所有內(nèi)容。tail 部分不會(huì)包含斜杠,如果 path 以斜杠結(jié)尾,則 tail 將為空。如果 path 中沒(méi)有斜杠,head 將為空。如果 path 為空,則 head 和 tail 均為空。head 末尾的斜杠會(huì)被去掉,除非它是根目錄(即它僅包含一個(gè)或多個(gè)斜杠)。

norm_path="/nnunet/configuration.py" # 一般路徑
ends_with_slash_path="/code/nnunet/" # 以斜杠結(jié)尾的路徑
no_slash_path="HIP_Logo.png" # 沒(méi)有斜杠的路徑
empty_path="" # 空路徑
root_path="/" # 根目錄
print("一般路徑head={},tail={}".format(*os.path.split(norm_path)))
print("以斜杠結(jié)尾的路徑head={},tail={}".format(*os.path.split(ends_with_slash_path)))
print("沒(méi)有斜杠的路徑head={},tail={}".format(*os.path.split(no_slash_path)))
print("空路徑head={},tail={}".format(*os.path.split(empty_path)))
print("根目錄head={},tail={}".format(*os.path.split(root_path)))

2.2.12 os.path.splitext(path)

將路徑 path 拆分為一對(duì),即 (root, ext),使 root + ext == path,其中 ext 為空或以英文句點(diǎn)開(kāi)頭,且最多包含一個(gè)句點(diǎn)。路徑前的句點(diǎn)將被忽略,例如 splitext(‘.cshrc’) 返回 (‘.cshrc’, ‘’)。

dir_path="/code/nnunet/" # 文件夾路徑
multi_dot_file_path="/code/i.thy.py" # 包含多個(gè)句點(diǎn)的文件路徑
single_dot_file_path="/code/we.py" # 包含單個(gè)句點(diǎn)的文件路徑
starts_with_dot_file_path=".bashrc" # 以句點(diǎn)開(kāi)頭的路徑
print("文件夾路徑root={},ext={}".format(*os.path.splitext(dir_path)))
print("包含多個(gè)句點(diǎn)的文件路徑root={},ext={}".format(*os.path.splitext(multi_dot_file_path)))
print("包含單個(gè)句點(diǎn)的文件路徑root={},ext={}".format(*os.path.splitext(single_dot_file_path)))
print("以句點(diǎn)開(kāi)頭的路徑root={},ext={}".format(*os.path.splitext(starts_with_dot_file_path)))

2.3 其他常用命令

2.3.1 os.name

導(dǎo)入的依賴(lài)特定操作系統(tǒng)的模塊的名稱(chēng),返回’posix’表示Linux,'nt’表示W(wǎng)indows,'java’表示Java虛擬機(jī)

print("當(dāng)前操作系統(tǒng)平臺(tái)名稱(chēng)為{}".format(os.name))

2.3.2 os.__file__

以字符串形式返回os模塊安裝的絕對(duì)路徑

     import os
     print("os模塊安裝絕對(duì)路徑是{}".format(os.__file__))

3. 參考文獻(xiàn)

到此這篇關(guān)于Python標(biāo)準(zhǔn)庫(kù)os常用函數(shù)和屬性詳解的文章就介紹到這了,更多相關(guān)Python標(biāo)準(zhǔn)庫(kù)os內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決python replace函數(shù)替換無(wú)效問(wèn)題

    解決python replace函數(shù)替換無(wú)效問(wèn)題

    在本篇文章里小編給大家整理的是一篇關(guān)于python replace函數(shù)替換無(wú)效問(wèn)題的解決方法,需要的朋友們可以參考下。
    2020-01-01
  • Python編程中使用Pillow來(lái)處理圖像的基礎(chǔ)教程

    Python編程中使用Pillow來(lái)處理圖像的基礎(chǔ)教程

    這篇文章主要介紹了Python編程中使用Pillow來(lái)處理圖像的基礎(chǔ)教程,Pillow和PIL都是Python下十分強(qiáng)大的圖片處理利器,朋友可以參考下
    2015-11-11
  • python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì)

    python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì)

    這篇文章主要介紹了python經(jīng)典趣味24點(diǎn)游戲程序設(shè)計(jì),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法

    Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法

    這篇文章主要給大家介紹了關(guān)于Django重裝mysql后啟動(dòng)報(bào)錯(cuò):No module named ‘MySQLdb’的解決方法,分享出來(lái),對(duì)同樣遇到這個(gè)問(wèn)題的朋友們一個(gè)參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-04-04
  • Elasticsearch py客戶(hù)端庫(kù)安裝及使用方法解析

    Elasticsearch py客戶(hù)端庫(kù)安裝及使用方法解析

    這篇文章主要介紹了Elasticsearch py客戶(hù)端庫(kù)安裝及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Python中.py文件打包成exe可執(zhí)行文件詳解

    Python中.py文件打包成exe可執(zhí)行文件詳解

    這篇文章主要給大家介紹了在Python中.py文件打包成exe可執(zhí)行文件的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • Python合并2個(gè)字典成1個(gè)新字典的方法(9種)

    Python合并2個(gè)字典成1個(gè)新字典的方法(9種)

    這篇文章主要介紹了Python合并2個(gè)字典成1個(gè)新字典的方法,本文通過(guò)實(shí)例代碼給大家分享9中方法,需要的朋友可以參考下
    2019-12-12
  • python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑

    python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑

    Python中的super()是用于調(diào)用父類(lèi)(或父類(lèi)的父類(lèi)...)方法的函數(shù),主要用于多繼承,單繼承問(wèn)題不大,下面這篇文章主要給大家介紹了關(guān)于python中關(guān)于對(duì)super()函數(shù)疑問(wèn)解惑的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • python支持多繼承嗎

    python支持多繼承嗎

    在本篇文章里小編給大家整理的是關(guān)于python支持多繼承的相關(guān)基礎(chǔ)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)參考下。
    2020-06-06
  • Python刪除指定字符之前或之后所有內(nèi)容的方法

    Python刪除指定字符之前或之后所有內(nèi)容的方法

    本文主要介紹了Python刪除指定字符之前或之后所有內(nèi)容的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論

通江县| 饶平县| 大同市| 云霄县| 体育| 剑河县| 监利县| 微博| 乐业县| 莱州市| 师宗县| 胶州市| 四川省| 左权县| 岳普湖县| 陆良县| 林芝县| 左云县| 丰县| 乡宁县| 太湖县| 桃园市| 彭水| 疏勒县| 花垣县| 杨浦区| 新建县| 林西县| 张家港市| 奉贤区| 河南省| 都兰县| 周宁县| 平谷区| 和平县| 乌拉特中旗| 太和县| 灌云县| 北碚区| 深泽县| 梅河口市|