1、os常用命令
import os
# 操作系統類型,只有兩個nt和posix;nt表示windows內核系統,posix表示linux/unix內核系統
print(os.name)
#獲取詳細的系統信息;只能在linux系統下使用
# print(os.uname())
# 獲取系統中的環境變量
print(os.environ)
#獲取指定環境變量的值
print(os.environ.get("PATH"))
# 得到當前工作目錄的絕對路徑
print(os.getcwd())
#返回指定目錄下所有的目錄和文件名稱,os.listdir([path])沒有path返回當前工作目錄下的
print(os.listdir(r"D:\Drivers"))
# 創建指定目錄也就是文件夾
# print(os.mkdir(r"D:\Drivers\test"))
# 刪除指定目錄
# print(os.rmdir(r"D:\Drivers\test"))
# 獲取文件屬性
print(os.stat(r"E:\5月份訂單.docx")) # os.stat_result(st_mode=33206, st_ino=1407374883554843, st_dev=1615780850, st_nlink=1, st_uid=0, st_gid=0, st_size=835031, st_atime=1562915273, st_mtime=1561784030, st_ctime=1561784028)
#修改文件名稱
os.rename(r"E:\5月份訂單.docx",r"E:\5月份訂單2.docx")
#刪除普通文件
# os.remove(r"E:\test.docx")
# 運行shell命令
os.system("notepad")
os.system("shutdown -s -t 10")
os.system("notepad")
os.system("notepad")
os.getcwd() #獲取當前工作目錄,即當前python腳本工作的目錄路徑
os.chdir("dirname") #改變當前腳本工作目錄;相當於shell下cd
os.curdir #返回當前目錄: ('.')
os.pardir #獲取當前目錄的父目錄字符串名:('..')
os.makedirs('dirname1/dirname2') #可生成多層遞歸目錄
os.removedirs('dirname1') #若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推
os.mkdir('dirname') #生成單級目錄;相當於shell中mkdir dirname
os.rmdir('dirname') #刪除單級空目錄,若目錄不爲空則無法刪除,報錯;相當於shell中rmdir dirname
os.listdir('dirname') #列出指定目錄下的所有文件和子目錄,包括隱藏文件,並以列表方式打印
os.remove() #刪除一個文件
os.rename("oldname","newname") #重命名文件/目錄
os.stat('path/filename') # 獲取文件/目錄信息
os.sep # 輸出操作系統特定的路徑分隔符,win下爲"\\",Linux下爲"/"
os.linesep #輸出當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n"
os.pathsep #輸出用於分割文件路徑的字符串 win下爲;,Linux下爲:
os.name #輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix'
os.system("bash command") #運行shell命令,直接顯示
os.popen("bash command) #運行shell命令,獲取執行結果
os.environ #獲取系統環境變量
os.path.abspath(path) #返回path規範化的絕對路徑 os.path.split(path) 將path分割成目錄和文件名二元組返回 os.path.dirname(path) 返回path的目錄。其實就是os.path.split(path)的第一個元素 os.path.basename(path) 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。
#即os.path.split(path)的第二個元素
os.path.exists(path) #如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) #如果path是絕對路徑,返回True
os.path.isfile(path) #如果path是一個存在的文件,返回True。否則返回False
os.path.isdir(path) #如果path是一個存在的目錄,則返回True。否則返回False
os.path.join(path1[, path2[, ...]]) #將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略
os.path.getatime(path) #返回path所指向的文件或者目錄的最後訪問時間
os.path.getmtime(path) #返回path所指向的文件或者目錄的最後修改時間
os.path.getsize(path) #返回path的大小
2、sys常用命令
sys.argv #命令行參數List,第一個元素是程序本身路徑
sys.exit(n) #退出程序,正常退出時exit(0),錯誤退出sys.exit(1)
sys.version #獲取Python解釋程序的版本信息
sys.path #返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
sys.platform #返回操作系統平臺名稱
import sys,time
for i in range(10):
sys.stdout.write('#')
time.sleep(1)
sys.stdout.flush()
3、subprocess模塊
subprocess.PIPE:在創建Popen對象時,subprocess.PIPE可以初始化stdin, stdout或stderr參數。表示與子進程通信的標準流。
subprocess.STDOUT:創建Popen對象時,用於初始化stderr參數,表示將錯誤通過標準輸出流輸出。
Popen.poll()
用於檢查子進程是否已經結束。設置並返回returncode屬性。
Popen.wait()
等待子進程結束。設置並返回returncode屬性。
Popen.communicate(input=None)
與子進程進行交互。向stdin發送數據,或從stdout和stderr中讀取數據。可選參數input指定發送到子進程的參數。 Communicate()返回一個元組:(stdoutdata, stderrdata)。注意:如果希望通過進程的stdin向其發送數據,在創建Popen對象的時候,參數stdin必須被設置爲PIPE。同樣,如 果希望從stdout和stderr獲取數據,必須將stdout和stderr設置爲PIPE。
Popen.send_signal(signal)
向子進程發送信號。
Popen.terminate()
停止(stop)子進程。在windows平臺下,該方法將調用Windows API TerminateProcess()來結束子進程。
Popen.kill()
殺死子進程。
Popen.stdin
如果在創建Popen對象是,參數stdin被設置爲PIPE,Popen.stdin將返回一個文件對象用於策子進程發送指令。否則返回None。
Popen.stdout
如果在創建Popen對象是,參數stdout被設置爲PIPE,Popen.stdout將返回一個文件對象用於策子進程發送指令。否則返回 None。
Popen.stderr
如果在創建Popen對象是,參數stdout被設置爲PIPE,Popen.stdout將返回一個文件對象用於策子進程發送指令。否則返回 None。
Popen.pid
獲取子進程的進程ID。
Popen.returncode
獲取進程的返回值。如果進程還沒有結束,返回None。
import subprocess
def create_process(cmd):
p = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
result = p.stdout.read()
code = p.wait()
return code,result
if __name__ == '__main__':
a,b = create_process("dir")
print(a,b.decode("gbk"))