首頁 > 軟體

python中的sys模組和os模組

2022-03-20 16:00:04

1.sys模組

sys模組的常見函數列表:

  • sys.argv: 實現從程式外部向程式傳遞引數。
  • sys.exit([arg]): 程式中間的退出,arg=0為正常退出。
  • sys.getdefaultencoding(): 獲取系統當前編碼,一般預設為ascii。
  • sys.setdefaultencoding(): 設定系統預設編碼,執行dir(sys)時不會看到這個方法,在直譯器中執行不通過,可以先執行reload(sys),在執行 setdefaultencoding('utf8'),此時將系統預設編碼設定為utf8。(見設定系統預設編碼 )
  • sys.getfilesystemencoding(): 獲取檔案系統使用編碼方式,Windows下返回'mbcs',mac下返回'utf-8'.
  • sys.path: 獲取指定模組搜尋路徑的字串集合,可以將寫好的模組放在得到的某個路徑下,就可以在程式中import時正確找到。
  • sys.platform: 獲取當前系統平臺。
  • sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 變數包含與標準I/O 流對應的流物件. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它裝置( device ), 或者以非標準的方式處理它們
import sys
# 獲取一個值的應用計數
a = [11,22,33]
b = a
print(sys.getrefcount(a))

# python預設支援的遞迴數量
v1 = sys.getrecursionlimit()
print(v1)

#輸入輸出(兩個不會換行)
sys.stdout.write("你好")
sys.stdout.write("啊")
import sys
# 獲取指令碼路徑
print(sys.argv)
import sys
# 迴圈輸出python,可以匯入模組的路徑
for i in sys.path:
    print(i)
import sys
# 新增新的模組匯入路徑
sys.path.append('D:\')
# 在D:\路徑下有一個qqq.py檔案,可以匯入使用了
import qqq

注意:模組傳引數(讓使用者執行指令碼傳入要刪除的檔案路徑,在內部幫助使用者將目錄刪除。)

import sys
import shutil

# 獲取使用者執行指令碼時,傳入的引數
path = sys.argv[1]

# 刪除路徑目錄
shutil.rmtree(path)

執行過程:後面新增要刪除的目錄路徑

print補充:

# n 換行
# t 製表符
# r 回到當前行的起始位置
print('123r',end = '')# 列印完123,遊標回到起始位置,又寫下面的456
print('456',end = '')

應用(進度條的百分比數值增長)

import  time
# 應用:在cmd中執行
for i in range(1,101):
    msg = "%s%%r" %i
    print(msg,end = '')
    time.sleep(0.05)

2.os模組(和作業系統相關資料)

os模組提供了多數作業系統的功能介面函數。當os模組被匯入後,它會自適應於不同的作業系統平臺,根據不同的平臺進行相應的操作,在python程式設計時,經常和檔案、目錄打交道,這時就離不了os模組

import os

# 獲取檔案大小(位元組)
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'
# 傳遞一個相對路徑可以獲取絕對路徑
v1 = os.path.abspath(qqq)
print(v1)
import os

qqq = r'E:PyCharmlol123.gif'
# 可以獲取路徑的上一級目錄
v = os.path.dirname(qqq)
print(v)
import os

qqq = 'E:PyCharmlol'
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:PyCharmlolmove1')
print(qqq)
import os

qqq = os.walk(r'E:PyCharmlol')
for a,b,c in qqq:
    # a:真正檢視的目錄 b:此目錄下的資料夾 c:此目錄下的檔案
    print(a,b,c)
---------------------------------------------------

import os
# 顯示路徑下的全部的檔案(所有層)
qqq = os.walk(r'E:PyCharmlol')
for a,b,c in qqq:
    for i in c:
        path = os.path.join(a,i)
        print(path)

生成資料夾:

import os
# 在指令碼路徑下建立名字為"wdc"的資料夾
os.mkdir('wdc')
import os
# 建立巢狀資料夾
os.makedirs(r'yhfwdcwww')
import os
file_path = r'wdcyhfwww.txt'
# 獲取路徑目錄
file_folder = os.path.dirname(file_path)
# 判斷路徑是否存在
if not os.path.exists(file_folder):
    # 如果不存,則建立路徑
    os.makedirs(file_folder)
else:
    # 如果路徑存在則給出提示
    print('目錄以及存在!')

重新命名:

import os
# 資料夾重新命名(原名,新名)
os.rename('wdc','qqq')

補充:跳脫

# 前面加一個'r'起到跳脫的作用,防止n換行
qqq = r'E:PyCharmloln123.gif'
print(qqq)

# 雙斜槓也可以起的跳脫的作用
qqq = 'E:\PyCharm\lol\n123.gif'
print(qqq)

補充:進度條讀寫檔案

import os
import time

# 獲取檔案大小(位元組)
file_size= os.stat('123.gif').st_size
print(file_size)

# 一點一點讀取檔案
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個位元組
        f2.write(chunk)
        read_size = read_size + len(chunk)
        val = int(read_size / file_size * 100)
     # r:下一次列印覆蓋上一次列印的內容
        print('%s%%r' %(val), end = '')
        time.sleep(0.01)

到此這篇關於python中的sys模組和os模組的文章就介紹到這了,更多相關python模組內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com