一: os 對系統進行操做python
#注:如下操做都在linux環境下操做,且不少運行以前須要作好相關條件
import os
#(1)system() 在python總執行系統命令
#os.system("touch ceshi.txt") #linux
#os.system("ifconfig")linux
# os.system("mspaint") #windows
# os.system("ipconfig") #亂碼
#(2)popen() 執行系統命令返回對象,經過read方法讀出字符串
#使用popen 來解決windows亂碼的bug
obj = os.popen("ipconfig")
print(obj)
res = obj.read()
print(res)
#(3)listdir() 獲取指定文件夾中全部內容的名稱列表
#相對路徑
res = os.listdir(".")
print(res)
res = os.listdir("./ceshi100")
print(res)
#['01_math.py', '02_random.py', '03_time.py', '04_os.py']
#絕對路徑(以 / 開頭)
#res = os.listdir("/mnt/hgfs/pylinux/1.txt")
#print(res)
#(4)getcwd() 獲取當前文件所在的默認路徑
res = os.getcwd()
print(res)
#__file__ 魔術屬性: 獲取當前文件的完整路徑
print(__file__)
#(5)chdir() 修改當前文件工做的默認路徑
os.chdir("/home/hsz/ceshi111")
# os.system("rm -rf 1.txt")
# os.system("mkdir ceshi222")
#(6)environ 獲取或修改環境變量
#返回的是一個系統的字典[是全部環境變量的字典] ,其中PATH 這個文件所對應的值,是系統命令路徑
#若是想要系統執行你的命令,須要先從PATH環境變量當中進行查找
#若是知道了直接執行,找不到not found
#步驟分析:
(1)建立一個文件夾 在家目錄裏,好比mywork
(2)建立一個文件,叫zero,裏面編輯寫 ifconfig
(3)修好zero文件權限 chmod 777 zero
(4)sudo ./zero 執行當前腳本
(5)pycharm => os.system("zero") => 報錯 找不到,由於系統環境 PATH當中,沒有該路徑
(6)利用os.environ 拼接一個新的路徑到PATH 環境變量當中,讓系統幫助咱們找到對應的路徑,從而執行該命令
(7)os.environ['PATH'] += ":/home/hsz/mywork" 把路徑用拼接的形式加到環境變量裏
(8)os.system("zero") =>成功
#例:
res = os.environ
print(res)
# 獲取PATH 這個環境變量全部的路徑
os.environ['PATH'] += ":/home/hsz/mywork"
os.system("zero")
"""
environ中有了:
:/home/hsz/bin:/home/hsz/.local/bin:/usr/local/sbin
至關於加好了環境變量
"""
#2.--os模塊屬性
#(1)name 獲取系統標識linux ,mac(UNIX) ->posix windows ->nt
res = os.name
print(res)
#(2)sep 獲取路徑分隔符號 linux,mac -> / window -> \
#若是不肯定系統是什麼,用os.sep來拼接路徑
res = os.sep
print(res) #/home/hsz/... windows C:Dirvers
#(3)linsep 獲取系統的換行符號 linux,mac -> \n window -> \r\n 或 \n
res = os.linesep
print(repr(res))
"""
#linux打印:
posix
/
'\n'
window打印:
nt
\
'\r\n'
"""windows
二:os.path
import os
#(1)abspath() 將相對路徑轉化爲絕對路徑
res = os.path.abspath(".")
print(res)
#/mnt/hgfs/pylinux
#(2)basename() 返回文件名部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.basename(parhvar)
print(res)
#(3)dirname() 返回路徑部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.dirname(parhvar)
print(res)
#(4)split() 將路徑拆分紅單獨的文件部分和路徑部分 組合成一個元組
res = os.path.split(parhvar)
print(res)
#(5)join() 將多個路徑和文件組成新的路徑 能夠自動經過不一樣的系統加不一樣的斜槓 linux / windows \
path1 = "home"
path2 = "hsz"
path3 = "mywork"
res = os.path.join(path1,path2,path3)
print(res)
#(6)slitext() 將路徑分割爲後綴和其餘部分
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.splitext(parhvar)
print(res)
#(7)getsize() 獲取文件大小
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.getsize(parhvar)
print(res)
#(8)isfile() 檢測路徑是不是一個文件
parhvar = "/home/hsz/mywork/testpath.txt"
res = os.path.isfile(parhvar)
print(res)
#(9)getctime() [windows] 文件的建立時間,[linux] 權限的改動時間(返回時間戳)
'''
驗證linux沒有建立時間 只有權限改動時間 linux查看文件的狀態:命令是: stat 1.txt(文件名)
os.chdir("/home/hsz/mywork")
res = os.getcwd()
print(res)
'''
#例1:
pathvar = "/mnt/hgfs/pylinux/ceshi1.txt"
res = os.path.getctime(parhvar)
print(res)
#例2:
import time
res = time.ctime(res)
print(res)
#(10)getmtime() 獲取文件最後一次修改時間(返回時間戳)
res = os.path.getatime(parhvar)
print(res)
res = time.ctime(res)
print(res)
#(11)getatime() 獲取文件最後一次訪問時間(時間戳)
res = os.path.getatime(parhvar)
print(res)
import time
res = time.ctime(res)
print(res)
#(12)exists() 檢測指定的路徑是否存在
parhvar = "/mnt/hgfs/pylinux/dqwdq"
res = os.path.exists(parhvar)
print(res)
#(13)isabs() 檢測一個路徑是不是絕對路徑
parhvar = "."
res = os.path.isabs(parhvar)
print(res)
# 兩題重要題目:dom
#遍歷全部的文件和文件夾,計算文件的大小
size = 0
for i in lst:
print(i)
path_new = os.path.join(pathvar,i)
if os.path.isdir(path_new):
print(i,"是一個目錄")
elif os.path.isfile(path_new):
size += os.path.getsize(path_new)
#使用遞歸來完成文件大小的計算
pathvar = "/mnt/hgfs/pylinux/ceshi100"
def getallsize(pathvar):
size = 0
lst = os.listdir(pathvar)
print(lst)
for i in lst:
print(i)
#拼接路徑 + 文件名 => 新路徑
path_new = os.path.join(pathvar,i)
if os.path.isdir(path_new):
size += getallsize(path_new)
'''
size1 = size + getallsize(path_new)
size2 = size1 + getallsize(path_new)
'''
elif os.path.isfile(path_new):
size += os.path.getsize(path_new)
return size
res = getallsize(pathvar)
print(res)
res2 = res / 1024
print(res2,"k")spa
三: os 和 shutil 模塊
os => 新建和刪除
shutil => 複製和剪切
1.os
import os
#(1)os.chdir默認更改工做路徑
os.chdir("/home/hsz/mywork")
#(2)os.mknod 建立文件
#os.mknod("ceshi1101.txt")
#(3)os.remove 刪除文件
#os.remove("ceshi1002.txt")
#(4)os.mkdir 建立目錄(文件夾)
os.mkdir("ceshi002",mode=0o764)
#os.mkdir("ceshi003",mode=0o754)
#(5)os.rmdir 刪除目錄(文件夾)
#os.rmdir("ceshi002")
#(6)os.rename 對文件,目錄重命名
#os.rename("ceshi003","ceshi007")
#(7)os.makedirs 遞歸建立文件夾
#os.makedirs("a/b/c/d")
#(8)os.removedirs 遞歸刪除文件夾(空文件夾)
#os.removedirs("./a/b/c/d")
#若是是空文件夾所有刪除,若是不是空文件夾,刪到不是空文件夾那一層
2.shutil 模塊 複製/移動
#(1) 僅僅複製文件內容
#copyfileobj(fsrc,fdst[,length=16*1024]) 複製文件(length 的單位是字符(表達一次讀多少字符))
import shutil
fp1 = open("./3.txt","r",encoding="utf-8")
fp2 = open("./13.txt","w",encoding="utf-8")
shutil.copyfileobj(fp1,fp2)
#copyfile(src,dst) #單純的僅複製文件內容,底層調用了 copyfileobj
#shutil.copyfile("3.txt","14.txt") #copyfile 若是沒有這個文件,自動建立
#(2) 僅僅複製權限的
#copymode(src,dst) #單純的僅複製文件權限,不包括內容(虛擬機共享目錄都是默認777)
os.system("chmod 777 3.txt")
shutil.copymode("3.txt","6.txt")
#copy2(src,dst) #複製文件權限和內容,還包括權限,組,用戶,時間等
shutil.copy2("3.txt","15.txt")
#(4)遞歸拷貝或刪除
#copytree(src,dst) #拷貝文件夾裏全部內容(遞歸拷貝)
shutil.copytree("/home/hsz/mywork3/ceshi004","/home/hsz/mywork3/ceshi005")
#rmtree(path) #刪除當前文件夾及全部內容(遞歸刪除)
shutil.rmtree("/home/hsz/mywork3/ceshi005")
#move(path1,path2) #移動文件或者文件夾
shutil.move("./ceshi004","../ceshi10005")對象