iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
自我挑戰組

轉職軟體工程師的543系列 第 10

【Day 10】os模組

  • 分享至 

  • xImage
  •  

OS模組(Python內建)
說明 : os模組是一種與作業系統相關的模組,提供數十種與作業系統溝通的函式,常用於檔案的複製、修改、查詢等,使用頻率相當高。

import os

呼叫系統檔案或程式

print(os.system("notepad.exe")) #開啟記事本
print(os.system("calc.exe")) #開啟計算機

取得當前平臺、路徑、檔案

print(os.name) # 取得當前的使用平臺,# Windows用'nt'表示,Linux用'posix'表示
print(os.getcwd()) # 取得當前的工作目錄
https://ithelp.ithome.com.tw/upload/images/20210910/20140399cNgJ8UcKZ6.jpg

接下來要先提關於相對路徑和絕對路徑
相對路徑:是從當前路徑開始的路徑,是以檔案位置為開始與其他檔案的對應位置,會隨著目錄位置不同而改變。
絕對路徑:是從根目錄開始的路徑,相當於詳細地址,不會隨著位置改變而不同。
「./」是代表目前所在目錄
「../」是代表上一層目錄,若目前已經是根目錄則依然為目前所在目錄
「/」在各個目錄名稱之間的分隔符號,如果放置在路徑之前則代表根目錄
以下以os.listdir()取得指定資料夾中所包含的文件及檔案列表來舉例說明:

print(os.listdir('C:/Users/User/Downloads/project_01')) # 絕對位置
print(os.listdir('./js')) # 相對位置,代表當層目錄下所有檔案列表
print(os.listdir('../project_01')) # 相對位置,代表上一層目錄下所有檔案列表
https://ithelp.ithome.com.tw/upload/images/20210910/20140399HbVO5l1r5M.jpg

print(os.listdir('./js')),即是指os2.py是我當前使用的檔案,以此檔案為開始,
要找當層目錄'js'所包含的文件及檔案。
print(os.listdir('../project_01'))則是指以os2.py為開始,要找上一層'project_01'所包含的文件及檔案。
https://ithelp.ithome.com.tw/upload/images/20210910/20140399QOSRp4ujNu.jpg

建立目錄,path可以為絕對或相對路徑

建立path目錄(只能建立一級目錄,如'D:\AAA\BBB'),在AAA目錄下建立BBB目錄
path = 'D:/2.舊東家/test_os_一級目錄'
print(os.mkdir(path))
https://ithelp.ithome.com.tw/upload/images/20210910/20140399xiBAY5WDu2.jpg

建立多級目錄(如'D:\AAA\BBB\CCC\DDD'),可以在D槽下建立AAA目錄,
繼續在AAA目錄下建立BBB目錄,在BBB目錄下建立CCC目錄,在CCC目錄下建立DDD目錄
path = 'C:/Users/User.DESKTOP-OMLCNUB/Desktop/test_os'
print(os.makedirs(path))
https://ithelp.ithome.com.tw/upload/images/20210910/20140399JKlSUDlw1Q.jpg

檢查路徑是否存在

若只是想要查看特定的路徑是否存在,不分檔案或目錄,則可使用 os.path.exists
fileName1 = '../../profile.js' #查詢上上一層路徑是否有profile.js
print(os.path.exists(fileName1))
判斷path是否存在,存在返回True,不存在返回False,output: False

fileName2 = './profile.js' #查詢當層路徑是否有profile.js
print(os.path.exists(fileName2))
output: True

提取檔案路徑

關於https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg 底線底線file底線底線
從一個路徑中提取檔案路徑,去除檔案名稱
print(os.path.dirname(https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg))
output: C:\Users\User.DESKTOP-OMLCNUB\Desktop

取得檔名的絕對路徑
print(os.path.realpath(https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg))
output: C:\Users\User.DESKTOP-OMLCNUB\Desktop\os02.py

https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg雖然是所在的py文件的完整路徑,但這個變量有時候返回相對路徑,
有時候返回絕對路徑,所以會使用用os.path.realpath()函數處理獲得絕對路徑
print(os.path.dirname(os.path.realpath(https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg)))
output: C:\Users\User.DESKTOP-OMLCNUB\Desktop

取得檔案的絕對路徑和檔案名稱,路徑和名稱分開
print(os.path.split(os.path.realpath(https://ithelp.ithome.com.tw/upload/images/20210910/20140399Iyd5shkkF8.jpg)))
output: ('C:\Users\User.DESKTOP-OMLCNUB\Desktop', 'os02.py')

https://ithelp.ithome.com.tw/upload/images/20210910/201403991KOGVSGOJH.jpg

https://ithelp.ithome.com.tw/upload/images/20210910/20140399ZdPlKEyREz.jpg


上一篇
【Day 9】Python 打包程式
下一篇
【Day 11】Python os.path模組
系列文
轉職軟體工程師的54330
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言