当前位置: 首页 > 工具软件 > Minoca OS > 使用案例 >

Python文件路径:os,os.path 模块

经俊茂
2023-12-01

环境配置:Windows,Python3

文件属性dirname, basename

文件有两个关键属性: “文件路径”和“文件名”,也可以称为“目录名称”(directory name)和“基本名称”(base name)。
例如:对于C:\Users\YoYo\client.txt来说,文件 client 的 dirname 是'C:\User\YoYo',它的 basename 是 'client.txt'

绝对路径与相对路径

绝对路径”:从根文件夹开始的路径。例如: C:\Windows\System32
相对路径”:它相对于程序的当前工作目录。
在路径的表述中,当前工作目录(当前所在文件夹)用'.'表示,当前工作目录的父文件夹用'..'
例如:如果当前工作目录为 C:\Windows\System32,则 C:\Windows\Resources可以表示为..\Resources

os模块

os.getcwd():获取当前工作目录。
os.chdir(path):更改当前工作目录。
os.makedirs(path):新建文件夹。

例如:

os.getcwd()
## 'C:\\Python38\\Lib\\idlelib'
os.chdir('C:\\Users\\YoYo\\Downloads')
os.getcwd()
## 'C:\\Users\\YoYo\\Downloads'
os.makedirs('C:\\Users\\YoYo\\Friends')
os.chdir('..\Friends')
os.getcwd()
## 'C:\\Users\\YoYo\\Friends'
os.makedirs('Ross')		# 在当前工作目录下新建文件夹'Ross'
os.makedirs('.\Phoebe')		# 在当前工作目录下新建文件夹'Phoebe'

os.listdir(path)返回 path 中所有文件名的字符串列表。

>>> os.listdir('C:\\Users\\YoYo\\Friends')
['Chan&Joey.jpg', 'Chandler.jpg', 'Mo&phoe.jpg', 'Monica.jpg', 'Phoebe', 'pic1.jpg', 'pic2.jpg', 'pic3.jpg', 'pic4.jpg', 'Rachel.jpg', 'Rachel2.jpg', 'Ross']

os.walk(path)遍历path目录树。在每次迭代中返回3个值:

  1. 当前文件夹的名字(foldername)
  2. 当前文件夹目录下的子文件夹名字列表(subfolders)
  3. 当前文件夹目录下的文件名字列表(filenames)

例如:

for foldername, subfolders, filenames in os.walk('C:\\Users\\YoYo\\HeadFirstPython\\EnglishSongs'):
	print('Current folder is:\n%s'%foldername)
	for subfolder in subfolders:
		print('    ' + subfolder)
	for filename in filenames:
		print('    ' + filename)

os.path模块

os.path.join():对给定字符串生成一个正确格式的文件路径字符串。
例如:

os.path.join('C:\\Users\\YoYo', 'hello.txt')  
## 'C:\\Users\\YoYo\\hello.txt'
os.path.join('Abc', 'def','001') 
##  'Abc\\def\\001'

os.path.abspath(path) 返回 path 的绝对路径字符串。
os.path.isabs(path) 返回path是否为绝对路径的布尔值结果。
os.path.relpath(path, start) 返回 从 start 到 path 的相对路径。
例如:

os.path.abspath('.')
## 'C:\\Users\\YoYo\\Friends'
os.path.isabs('.')
## False
os.path.isabs('C:\\Users\\YoYo\\ABC')	# os.path.isabs()仅仅判断这个绝对路径字符串是否合法,并不考察该路径是否存在,系统中不存在ABC文件或文件夹
## True
>>> os.path.relpath('DEF','C:\\Python38')  #系统中不存在DEF文件或文件夹
## '..\\Users\\YoYo\\Friends\\DEF'
os.path.relpath('C:\\Users\\YoYo\\Friends','C:\\Python38')
## '..\\Users\\YoYo\\Friends'
os.path.relpath('C:\\Python38','C:\\Windows\\System32')
## '..\\..\\Python38'

os.path.dirname(path) 返回 path 的路径名称字符串,即最后一个 \ 之前的内容。
os.path.basename(path) 返回 path 的基本名称字符串, 即最后一个 \ 之后的内容。
os.path.split(path) 返回一个元组,包括路径名称和基本名称。

>>> os.path.dirname('C:\\Windows\\System32\\calc.exe')
'C:\\Windows\\System32'
>>> os.path.basename('C:\\Windows\\System32\\calc.exe')
'calc.exe'
>>> os.path.dirname('C:\\Windows\\System32\\ABC')  # 系统中不存在ABC文件或文件夹
'C:\\Windows\\System32'
>>> os.path.basename('C:\\Windows\\System32\\ABC')
'ABC'
>>> os.path.split('C:\\Windows\\System32\\calc.exe')
('C:\\Windows\\System32', 'calc.exe')
>>> os.path.split('C:\\Windows\\System32\\ABC')  # 系统中不存在ABC文件或文件夹
('C:\\Windows\\System32', 'ABC')

os.path.exists(path) 判断 path 是否存在,并返回布尔值。
os.path.isdir(path) 判断 path 是否为路径,并返回布尔值。
os.path.isfile(path)判断 path 是否为文件,并返回布尔值。
例如:

>>> os.path.exists('C:\\Windows\\System32\\ABC')
False
>>> os.path.exists('C:\\Users\\YoYo\\Friends')
True
>>> os.path.isdir('C:\\Users\\YoYo\\Friends')
True
>>> os.path.isfile('C:\\Users\\YoYo\\Friends')
False
 类似资料: