python中的sys模塊和os模塊
1.sys模塊
sys模塊的常見(jiàn)函數(shù)列表:
sys.argv
: 實(shí)現(xiàn)從程序外部向程序傳遞參數(shù)。sys.exit([arg])
: 程序中間的退出,arg=0為正常退出。sys.getdefaultencoding()
: 獲取系統(tǒng)當(dāng)前編碼,一般默認(rèn)為ascii。sys.setdefaultencoding()
: 設(shè)置系統(tǒng)默認(rèn)編碼,執(zhí)行dir(sys)時(shí)不會(huì)看到這個(gè)方法,在解釋器中執(zhí)行不通過(guò),可以先執(zhí)行reload(sys),在執(zhí)行 setdefaultencoding('utf8'),此時(shí)將系統(tǒng)默認(rèn)編碼設(shè)置為utf8。(見(jiàn)設(shè)置系統(tǒng)默認(rèn)編碼 )sys.getfilesystemencoding()
: 獲取文件系統(tǒng)使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'.sys.path
: 獲取指定模塊搜索路徑的字符串集合,可以將寫(xiě)好的模塊放在得到的某個(gè)路徑下,就可以在程序中import時(shí)正確找到。sys.platform
: 獲取當(dāng)前系統(tǒng)平臺(tái)。- sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 變量包含與標(biāo)準(zhǔn)I/O 流對(duì)應(yīng)的流對(duì)象. 如果需要更好地控制輸出,而print 不能滿(mǎn)足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時(shí)候你就可以重定向輸出和輸入到其它設(shè)備( device ), 或者以非標(biāo)準(zhǔn)的方式處理它們
import sys # 獲取一個(gè)值的應(yīng)用計(jì)數(shù) a = [11,22,33] b = a print(sys.getrefcount(a)) # python默認(rèn)支持的遞歸數(shù)量 v1 = sys.getrecursionlimit() print(v1) #輸入輸出(兩個(gè)不會(huì)換行) sys.stdout.write("你好") sys.stdout.write("啊")
import sys # 獲取腳本路徑 print(sys.argv)
import sys # 循環(huán)輸出python,可以導(dǎo)入模塊的路徑 for i in sys.path: ? ? print(i)
import sys # 添加新的模塊導(dǎo)入路徑 sys.path.append('D:\\') # 在D:\\路徑下有一個(gè)qqq.py文件,可以導(dǎo)入使用了 import qqq
注意:模塊傳參數(shù)(讓用戶(hù)執(zhí)行腳本傳入要?jiǎng)h除的文件路徑,在內(nèi)部幫助用戶(hù)將目錄刪除。)
import sys import shutil # 獲取用戶(hù)執(zhí)行腳本時(shí),傳入的參數(shù) path = sys.argv[1] # 刪除路徑目錄 shutil.rmtree(path)
執(zhí)行過(guò)程:后面添加要?jiǎng)h除的目錄路徑
print補(bǔ)充:
# \n 換行 # \t 制表符 # \r 回到當(dāng)前行的起始位置 print('123\r',end = '')# 打印完123,光標(biāo)回到起始位置,又寫(xiě)下面的456 print('456',end = '')
應(yīng)用(進(jìn)度條的百分比數(shù)值增長(zhǎng))
import ?time # 應(yīng)用:在cmd中運(yùn)行 for i in range(1,101): ? ? msg = "%s%%\r" %i ? ? print(msg,end = '') ? ? time.sleep(0.05)
2.os模塊(和操作系統(tǒng)相關(guān)數(shù)據(jù))
os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù)。當(dāng)os模塊被導(dǎo)入后,它會(huì)自適應(yīng)于不同的操作系統(tǒng)平臺(tái),根據(jù)不同的平臺(tái)進(jìn)行相應(yīng)的操作,在python編程時(shí),經(jīng)常和文件、目錄打交道,這時(shí)就離不了os模塊
import os # 獲取文件大?。ㄗ止?jié)) file_size= os.stat('123.gif').st_size print(file_size)
import os # 判斷路徑是否存在,如果存在返回True,否則返回False qqq = os.path.exists('D:11231') print(qqq)
import os qqq = '123.gif' # 傳遞一個(gè)相對(duì)路徑可以獲取絕對(duì)路徑 v1 = os.path.abspath(qqq) print(v1)
import os qqq = r'E:\PyCharm\lol\123.gif' # 可以獲取路徑的上一級(jí)目錄 v = os.path.dirname(qqq) print(v)
import os qqq = 'E:\PyCharm\lol' www = '123.txt' # 路徑拼接 result = os.path.join(qqq,www) result1 = os.path.join(qqq,'456.txt') print(result) print(result1)
import os # 顯示路徑下的全部的文件(一層) qqq = os.listdir(r'E:\PyCharm\lol\move1') print(qqq)
import os qqq = os.walk(r'E:\PyCharm\lol') for a,b,c in qqq: ? ? # a:真正查看的目錄 b:此目錄下的文件夾 c:此目錄下的文件 ? ? print(a,b,c) --------------------------------------------------- import os # 顯示路徑下的全部的文件(所有層) qqq = os.walk(r'E:\PyCharm\lol') for a,b,c in qqq: ? ? for i in c: ? ? ? ? path = os.path.join(a,i) ? ? ? ? print(path)
生成文件夾:
import os # 在腳本路徑下創(chuàng)建名字為"wdc"的文件夾 os.mkdir('wdc')
import os # 創(chuàng)建嵌套文件夾 os.makedirs(r'yhf\wdc\www')
import os file_path = r'wdc\yhf\www.txt' # 獲取路徑目錄 file_folder = os.path.dirname(file_path) # 判斷路徑是否存在 if not os.path.exists(file_folder): ? ? # 如果不存,則創(chuàng)建路徑 ? ? os.makedirs(file_folder) else: ? ? # 如果路徑存在則給出提示 ? ? print('目錄以及存在!')
重命名:
import os # 文件夾重命名(原名,新名) os.rename('wdc','qqq')
補(bǔ)充:轉(zhuǎn)義
# 前面加一個(gè)'r'起到轉(zhuǎn)義的作用,防止\n換行 qqq = r'E:\PyCharm\lol\n123.gif' print(qqq) # 雙斜杠也可以起的轉(zhuǎn)義的作用 qqq = 'E:\\PyCharm\\lol\\n123.gif' print(qqq)
補(bǔ)充:進(jìn)度條讀寫(xiě)文件
import os import time # 獲取文件大?。ㄗ止?jié)) file_size= os.stat('123.gif').st_size print(file_size) # 一點(diǎn)一點(diǎn)讀取文件 read_size = 0 with open('123.gif',mode = 'rb') as f1,open('a.png',mode = 'wb') as f2: ? ? while read_size < file_size: ? ? ? ? chunk = f1.read(2) #每次讀8個(gè)字節(jié) ? ? ? ? f2.write(chunk) ? ? ? ? read_size = read_size + len(chunk) ? ? ? ? val = int(read_size / file_size * 100) # \r:下一次打印覆蓋上一次打印的內(nèi)容 ? ? ? ? print('%s%%\r' %(val), end = '') ? ? ? ? time.sleep(0.01)
到此這篇關(guān)于python中的sys模塊和os模塊的文章就介紹到這了,更多相關(guān)python模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python正則獲取、過(guò)濾或者替換HTML標(biāo)簽的方法
這篇文章主要介紹了Python通過(guò)正則表達(dá)式獲取、過(guò)濾或者替換HTML標(biāo)簽的方法,感興趣的小伙伴們可以參考一下2016-01-01python?pygame實(shí)現(xiàn)控制物體移動(dòng)
這篇文章主要為大家詳細(xì)介紹了python?pygame控制物體移動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01python?dataframe獲得指定行列實(shí)戰(zhàn)代碼
對(duì)于一個(gè)DataFrame,常常需要篩選出某列為指定值的行,下面這篇文章主要給大家介紹了關(guān)于python?dataframe獲得指定行列的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Python腳本開(kāi)發(fā)中的命令行參數(shù)及傳參示例詳解
這篇文章主要為大家介紹了Python腳本開(kāi)發(fā)中的命令行參數(shù)及傳參示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Python實(shí)現(xiàn)對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面的方法詳解
最近在研究目標(biāo)檢測(cè)方面的小東西,需要到對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面。所以本文來(lái)用Python實(shí)現(xiàn)簡(jiǎn)單的對(duì)桌面進(jìn)行實(shí)時(shí)捕捉畫(huà)面,感興趣的可以了解一下2023-01-01對(duì)python中for、if、while的區(qū)別與比較方法
今天小編就為大家分享一篇對(duì)python中for 、if、 while的區(qū)別與比較方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-06-06Python機(jī)器學(xué)習(xí)庫(kù)scikit-learn使用詳解
scikit-learn是Python中最流行的機(jī)器學(xué)習(xí)庫(kù)之一,它提供了各種各樣的機(jī)器學(xué)習(xí)算法和工具,包括分類(lèi)、回歸、聚類(lèi)、降維等2023-03-03Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā))
這篇文章主要介紹了Python django框架開(kāi)發(fā)發(fā)布會(huì)簽到系統(tǒng)(web開(kāi)發(fā)),本文通過(guò)實(shí)例代碼效果展示截圖的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02