1. 程式人生 > >第十九章 os模塊

第十九章 os模塊

tel line dirname sta back cal arc src -s

OS模塊

  • os.path.abspath() :返回path規範化的絕對路徑
import sys
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)os.getcwd()
  • os.getcwd():直接獲取當前工作文件的目錄,即當前python腳本工作的目錄路徑
print(os.getcwd())
# 結果
F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22
  • os.chdir("") : 改變當前腳本工作目錄;相當於shell下cd
os.chdir("test1")  # 將當前腳本的工作目錄變更為test1
print(os.getcwd()) 
#結果,當前腳本的工作目錄就變更到test1下面了
F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22\test1

os.chdir("..")  # 返回上一級目錄
print(os.getcwd())

# 結果
# F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼

技術分享圖片

  • os.curdir():返回當前目錄:(‘.‘)
print(os.curdir)

# 結果
.
  • os.pardir() :獲取當前目錄的父目錄字符串名:(’..‘)
print(os.pardir)
# 結果
..
  • os.makedirs(‘dirname1/dirname2‘):可生成多層遞歸目錄
os.makedirs("dir1/dir2")

技術分享圖片
  • os.removedirs("dirname1"):若目錄為空,則刪除,並遞歸到上一級目錄,上一級目錄如果也是空的,則刪除,以此類推
os.removedirs("dir1/dir2")

# 會將上面創建的兩個文件夾都刪掉
# 如果dir1下面創建任意一個文件,則只刪除dir2
技術分享圖片
  • os.mkdir("dirname"):生成一個目錄;相當於shell中mkdir dirname
os.mkdir("dir3")
  • os.rmdir("dirname"):刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當於shell下的rmdir dirname
os.rmdir("dir3")
  • os.listdir():列出指定目錄下的所有文件和子目錄,包含隱藏文件,並以列表方式打印
# 指定目錄,就只會列出該目錄下的文件和子目錄
print(os.listdir("dir1")) 
# 結果
# [‘1.py‘, ‘dir2‘]

# 沒指定目錄,列出的是與當前腳本同級的目錄和文件
print(os.listdir())  
  • os.remove():刪除一個文件
# 必須指定要刪除的文件的目錄
os.remove("dir1/1.py")
  • os.rename("oldname","newname"):重命名文件/目錄
# 把dir1重命名為 dir3
os.rename("dir1","dir3")
  • os.stat("path/filename"):獲取文件/目錄信息。
# 看文件
print(os.stat("os_test.py"))
# os.stat_result(st_mode=33206, st_ino=281474976734818, st_dev=1143308193, st_nlink=1, st_uid=0, st_gid=0, st_size=556, st_atime=1530249778, st_mtime=1481602274, st_ctime=1530249778)

# 看目錄
print(os.stat("test1/test2"))
# os.stat_result(st_mode=16895, st_ino=562949953445493, st_dev=1143308193, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1530450149, st_mtime=1530450149, st_ctime=1530450149)

# 常用的需要看的
st_size=0            # 看文件的大小
st_atime=1530450149  # 用戶最近一次的訪問時間   
st_mtime=1530450149  # 用戶最近一次的修改時間   這是經常用的
st_ctime=1530450149  # 看文件的創建時間

技術分享圖片
  • os.sep:輸出操作系統特定的路徑分隔符,win下為"\\", linux 下為 "/"
print(os.sep)   # \
  • os.linesep:輸出當前平臺使用的行終止符,win下為 "\r\n",Linux下為"\n"
print(os.linesep)
  • os.pathsep:輸出用於分割文件路徑的字符串 ,win下為; ,Linux 下為 :
print(os.pathsep)   # ;
  • os.name:輸出字符串指示當前使用平臺。 win下為 "nt" ; Linux下為"posix"
print(os.name)    # nt
  • os.system("bash command") : 運行shell命令,直接顯示
print(os.system("dir"))
  • os.environ :獲取系統環境變量
print(os.environ)
# 結果
environ({ALLUSERSPROFILE: C:\\ProgramData, APPDATA: C:\\Users\\mamingchen\\AppData\\Roaming, ASL.LOG: Destination=file, CLASSPATH: ".;C:\\Program Files\\Java\\jdk1.8.0_171\\lib;C:\\Program Files\\Java\\jdk1.8.0_171\\lib\\tools.jar";, COMMONPROGRAMFILES: C:\\Program Files (x86)\\Common Files, COMMONPROGRAMFILES(X86): C:\\Program Files (x86)\\Common Files, COMMONPROGRAMW6432: C:\\Program Files\\Common Files, COMPUTERNAME: 5ZVF1G2-2, COMSPEC: C:\\Windows\\system32\\cmd.exe, HOMEDRIVE: C:, HOMEPATH: \\Users\\mamingchen, JAVA_HOME: C:\\Program Files\\Java\\jdk1.8.0_171, JENKINS_HOME: C:\\Users\\mamingchen, LOCALAPPDATA: C:\\Users\\mamingchen\\AppData\\Local, LOGONSERVER: \\\\DC02-SHQCL, NUMBER_OF_PROCESSORS: 4, ONEDRIVE: C:\\Users\\mamingchen\\OneDrive, OS: Windows_NT, PATH: C:\\ProgramData\\Anaconda3;C:\\ProgramData\\Anaconda3\\Library\\mingw-w64\\bin;C:\\ProgramData\\Anaconda3\\Library\\usr\\bin;C:\\ProgramData\\Anaconda3\\Library\\bin;C:\\ProgramData\\Anaconda3\\Scripts;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\nodejs\\;E:\\Program Files\\Git\\cmd;C:\\Python\\Python36-32;C:\\Python\\Python36-32\\Scripts;C:\\Python\\Python36-32\\Scripts;C:\\Python\\Python36-32\\;"C:\\Users\\mamingchen\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files (x86)\\Java\\jre1.8.0_151\\bin;C:\\Program Files (x86)\\Java\\jre1.8.0_151\\jre\\bin";E:\\Users\\mamingchen\\AppData\\Local\\Programs\\Fiddler;"C:\\Program Files\\Java\\jdk1.8.0_171\\bin;C:\\Program Files\\Java\\jdk1.8.0_171\\jre\\bin";C:\\Users\\mamingchen\\AppData\\Roaming\\npm, PATHEXT: .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, PROCESSOR_ARCHITECTURE: x86, PROCESSOR_ARCHITEW6432: AMD64, PROCESSOR_IDENTIFIER: Intel64 Family 6 Model 142 Stepping 9, GenuineIntel, PROCESSOR_LEVEL: 6, PROCESSOR_REVISION: 8e09, PROGRAMDATA: C:\\ProgramData, PROGRAMFILES: C:\\Program Files (x86), PROGRAMFILES(X86): C:\\Program Files (x86), PROGRAMW6432: C:\\Program Files, PSMODULEPATH: C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules, PUBLIC: C:\\Users\\Public, PYCHARM_HOSTED: 1, PYCHARM_MATPLOTLIB_PORT: 53877, PYTHONIOENCODING: UTF-8, PYTHONPATH: C:\\Program Files\\JetBrains\\PyCharm 2018.1.2\\helpers\\pycharm_matplotlib_backend;F:\\workspace\\OldBoy, PYTHONUNBUFFERED: 1, SESSIONNAME: Console, SYSTEMDRIVE: C:, SYSTEMROOT: C:\\Windows, TEMP: C:\\Users\\MAMING~1\\AppData\\Local\\Temp, TMP: C:\\Users\\MAMING~1\\AppData\\Local\\Temp, USERDNSDOMAIN: YIXIN.DK, USERDOMAIN: YIXIN, USERDOMAIN_ROAMINGPROFILE: YIXIN, USERNAME: mamingchen, USERPROFILE: C:\\Users\\mamingchen, VBOX_INSTALL_PATH: E:\\Program Files\\Oracle\\VirtualBox\\, WINDIR: C:\\Windows})
  • os.path.split():將path分隔成目錄和文件名二元組返回
print(os.path.split("F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22\os_test.py"))

# 結果
(F:\\workspace\\OldBoy\\源碼\\課件與源碼\\python全棧3期-課件與源碼\\day22源碼\\day22課堂代碼\\day22, os_test.py)

# 相當於拿的是上面的第一個元素
print(os.path.dirname("F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22\os_test.py"))
# F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22


# 相當於拿的是上面的第二個元素
print(os.path.basename("F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22\os_test.py"))
# os_test.py
  • os.path.dirname():返回path的目錄。其實就是os.path.split(path)的第一個元素 ----常用
  • os.path.basename():返回path的目錄。其實就是os.path.split(path)的第二個元素 ----常用
  • os.path.exists(path):如果path存在,返回True;如果path不存在,返回False
  • os.path.isabs():如果path是絕對路徑,返回True
  • os.path.isfile():如果path是要給存在的文件,返回True。否則返回False
  • os.path.isdir():如果path是一個存在的目錄,則返回True。否則返回False
  • os.path.join(path1[,path2[,path3[....]]]):將多個路徑組合後返回,第一個絕對路徑之前的參數將被忽略-----常用,實現路徑拼接
a = "F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼"
b = r"day22\test1\test2"

# 要把上面兩個路徑拼接起來
c = os.path.join(a, b)

print(c)
F:\workspace\OldBoy\源碼\課件與源碼\python全棧3期-課件與源碼\day22源碼\day22課堂代碼\day22\test1\test2
  • os.path.getatime():返回path所指向的文件或者目錄的最後存取時間
  • os.path.getmtime():返回path所指向的文件或者目錄的最後修改時間

第十九章 os模塊