【Day 10】os模组

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


<<:  寝室的秘密授课(四):测试覆盖率 Test Coverage

>>:  [Day 10] 练练CSS,加强实作练习

@Day14 | C# WixToolset + WPF 帅到不行的安装包 [Windows菜单捷径]

在 昨天很多的教学後, 这次来个雷同的WindowsMenum的建立,直接上程序码吧! <!-...

30 | WordPress 区块编辑器 | 延伸相关参考资料列表:

为了让这个教学系列可以适合持续变化的社会变化,会这最後这篇预留更新扩展的资源列表,会不停时更新在这个...

GitHub Action YAML 撰写技巧 - 环境变数(Environment Variables) 与 秘密 (Secrets)

今天要提到一些关於 GitHub Action 内撰写 YAML 一些技巧,环境变数 (Enviro...

D26 - 与MySQL相异的部分

因为一开始的目的之一是想要找一套兼容MySQL可尽量无痛转移的资料库,所以兼容程度是蛮重要的考量。官...

Day 30 - SBOM 工具 - syft

Syft 可以用来产生容器 (container image) 与档案系统 (file system...