文件(一)文件路径os.path.join()、os.getcwd()、os.chdir()、路径存在判断、文件文件夹判断、绝对路径相对路径转换

本文介绍了Python中处理文件路径的方法,包括在不同操作系统间兼容的os.path.join()函数,以及获取和改变当前工作目录的os.getcwd()和os.chdir()。此外,还讨论了绝对路径和相对路径的转换,如os.path.abspath()和os.path.relpath(),以及os.path模块的其他实用函数,如获取路径的目录和基名。同时,提到了检查路径存在性的os.path.exists(),判断路径是否为文件或目录的os.path.isfile()和os.path.isdir()。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、文件路径

文件夹名称和文件名
Windows 和OS X 不区分大小写,Linux 区分大小写

Windows 路径使用反斜杠\作为分隔符 
OS X 和 Linux 路径使用正斜杠/作为分隔符

如果想要程序运行在所有操作系统上,在编写 Python 脚本时,就必须处理这两种情况。
os.path.join() 函数可以实现如果将单个文件和路径上的文件夹名称的字符串传递给它,
os.path.join() 就会返回一个文件路径的字符串,包含正确的路径分隔符。


>>> import os
>>> os.path.join('demo', 'exercise')
'demo\\exercise'
、
因为此程序是在 Windows 上运行的,所以 os.path.join('demo', 'exercise') 
返回 'demo\\exercise'(请注意,反斜杠有两个,因为每个反斜杠需要由另一个反斜杠字符来转义)
如果在 OS X 或 Linux 上调用这个函数,该字符串就会是 'demo/exercise'
import os
myFiles = ['accounts.txt', 'details.csv', 'invite.docx']
for filename in myFiles:
    print(os.path.join('C:\\demo\\exercise', filename))
    
运行结果为:
C:\demo\exercise\accounts.txt
C:\demo\exercise\details.csv
C:\demo\exercise\invite.docx
在 Python 中,
os.getcwd() 函数可以取得当前工作路径的字符串
os.chdir() 修改当前工作路径 如果修改的工作目录不存在,Python 解释器会报错

>>> import os
>>> os.getcwd()
'C:\\Users\\mengma\\Desktop'
>>> os.chdir('C:\\Windows\\System32')
>>> os.getcwd()
'C:\\Windows\\System32'



>>> os.chdir('C:\\error')
Traceback (most recent call last):
  File "<pyshell#6>", line 1, in <module>
    os.chdir('C:\\error')
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\error'

二、绝对路径、相对路径

在这里插入图片描述

Python os.path 模块
os.path.abspath(path) 返回 path 参数的绝对路径的字符串,可实现相对路径转换为绝对路径
os.path.isabs(path) 如果参数是一个绝对路径返回 True,否则返回 False
os.path.relpath(path, start) 返回从 start 路径到 path 的相对路径的字符串
							 如果没有提供 start,就使用当前工作目录作为开始路径
os.path.dirname(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之前的所有内容
os.path.basename(path) 将返回一个字符串,它包含 path 参数中最后一个斜杠之后的所有内容
os.path.split(path)将返回一个元组 包含path 参数中最后一个斜杠之前、之后两个元素

>>> os.getcwd()
'C:\\Windows\\System32'
>>> os.path.abspath('.')
'C:\\Windows\\System32'
>>> os.path.abspath('.\\Scripts')
'C:\\Windows\\System32\\Scripts'
>>> os.path.isabs('.')
False
>>> os.path.isabs(os.path.abspath('.'))
True
>>> os.path.relpath('C:\\Windows', 'C:\\')
'Windows'
>>> os.path.relpath('C:\\Windows', 'C:\\spam\\eggs')
'..\\..\\Windows'
>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.basename(path)
'calc.exe'
>>> os.path.dirname(path)
'C:\\Windows\\System32'


>>> os.getcwd()
'C:\\Users\\cy'
>>> os.path.abspath('.\\AppData')
'C:\\Users\\cy\\AppData'
>>> os.path.relpath('.\\AppData')
'AppData'
>>> os.path.relpath('.\\AppData','C:\\Users')
'cy\\AppData'


>>> path = 'C:\\Windows\\System32\\calc.exe'
>>> os.path.split(path)
('C:\\Windows\\System32', 'calc.exe')
os.path.exists(path) 如果 path 参数所指的文件或文件夹存在返回 True,否则返回 False。
os.path.isfile(path) 如果 path 参数存在并且是一个文件返回 True,否则返回 False。
os.path.isdir(path)  如果 path 参数存在并且是一个文件夹将返回 True,否则返回 False。
任务描述 本关任务:使用 Python 中的 os 模块处理文件。 相关知识 本关将介绍 Pythonos 模块中的常用函数以及 os.path 模块,完成本关任务需要使用到其中部分。 os模块常用函数 os 模块简单的来说它是Python 的系统编程的操作模块,可以通过代码来处理文件和目录。假设我们在 Linux 系统中有个 py 文件,其路径为:/root/edu/test.py。 getcwd():返回当前的工作目录。 import os print(os.getcwd()) 执行结果: /root/edu chdir(path):改变当前工作目录到指定的路径path 表示要切换到的新目录。如果允许访问返回 True,否则返回 False。 import os print(os.chdir("/root/coder")) # 将文件切换到 /root/coder 目录下 print(os.getcwd()) 执行结果: True /root/coder listdir(path):返回指定路径下的文件文件夹列表。path 表示路径。不指定 path 则表示当前路径。 import os print(os.listdir()) # 当前文件路径下只有个test.py文件 执行结果: ["test.py"] mkdir(path):创建单层目录,如该目录已存在则抛出异常。 makedirs(path):递归创建多层目录,如该目录已存在抛出异常。 remove(path):删除文件。 rmdir(path):删除单层目录,如果该目录非空则抛出异常。 removedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常。 rename(old,new):将文件 old 重命名为 new。 import os rename("test.py","change.py") # 将当前目录下得test.py修改为change.py print(os.listdir()) 执行结果: ["change.py"] os.system(command):运行系统的 shell 命令,command 表示 shell 命令。 import os os.system('date') # 相当于在命令行中输入date os.system('ls -al') # 相当于在命令行中输入ls -al 如果想更加了解 os 模块以及 os.path 的应用,建议在本地环境中使用下列函数。 os.path 模块 下表是 os.path 模块中的常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件os.path.commonprefix(list) 返回 list(多个路径) 中,所有 path 共有的最长的路径 os.path.dirname(path) 返回文件路径 os.path.exists(path) 路径存在则返回 True,路径损坏返回 False os.path.lexists 路径存在则返回 True,路径损坏也返回 True os.path.expanduser(path) 路径中包含的"~"和"~user"转换成用户目录 os.path.expandvars(path) 根据环境变量的值替换 path 中包含的"$name"和"${name}" os.path.getatime(path) 返回最近访问时间(浮点型秒数) os.path.getmtime(path) 返回最近文件修改时间 os.path.getctime(path) 返回文件 path 创建时间 os.path.getsize(path) 返回文件大小,如果文件存在就返回错误 os.path.isabs(path) 判断是否为绝对路径 os.path.isfile(path) 判断路径是否为文件 os.path.isdir(path) 判断路径是否为目录 os.path.islink(path) 判断路径是否为链接 os.path.ismount(path) 判断路径是否为挂载点 os.path.join(path1[, path2[, ...]]) 把目录和文件名合成路径 os.path.normcase(path) 转换 path 的大小和斜杠 os.path.normpath(path) 规范 path 字符串形式 os.path.realpath(path) 返回 path 的真实路径 os.path.relpath(path[, start]) 从 start 开
04-28
任务描述 本关任务:使用 Python 中的 os 模块处理文件。 相关知识 本关将介绍 Pythonos 模块中的常用函数以及 os.path 模块,完成本关任务需要使用到其中部分。 os模块常用函数 os 模块简单的来说它是Python 的系统编程的操作模块,可以通过代码来处理文件和目录。假设我们在 Linux 系统中有个 py 文件,其路径为:/root/edu/test.py。 getcwd():返回当前的工作目录。 import os print(os.getcwd()) 执行结果: /root/edu chdir(path):改变当前工作目录到指定的路径path 表示要切换到的新目录。如果允许访问返回 True,否则返回 False。 import os print(os.chdir("/root/coder")) # 将文件切换到 /root/coder 目录下 print(os.getcwd()) 执行结果: True /root/coder listdir(path):返回指定路径下的文件文件夹列表。path 表示路径。不指定 path 则表示当前路径。 import os print(os.listdir()) # 当前文件路径下只有个test.py文件 执行结果: ["test.py"] mkdir(path):创建单层目录,如该目录已存在则抛出异常。 makedirs(path):递归创建多层目录,如该目录已存在抛出异常。 remove(path):删除文件。 rmdir(path):删除单层目录,如果该目录非空则抛出异常。 removedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常。 rename(old,new):将文件 old 重命名为 new。 import os rename("test.py","change.py") # 将当前目录下得test.py修改为change.py print(os.listdir()) 执行结果: ["change.py"] os.system(command):运行系统的 shell 命令,command 表示 shell 命令。 import os os.system('date') # 相当于在命令行中输入date os.system('ls -al') # 相当于在命令行中输入ls -al 如果想更加了解 os 模块以及 os.path 的应用,建议在本地环境中使用下列函数。 os.path 模块 下表是 os.path 模块中的常用方法: 方法 说明 os.path.abspath(path) 返回绝对路径 os.path.basename(path) 返回文件os.path.commonprefix(list) 返回 list(多个路径) 中,所有 path 共有的最长的路径 os.path.dirname(path) 返回文件路径 os.path.exists(path) 路径存在则返回 True,路径损坏返回 False os.path.lexists 路径存在则返回 True,路径损坏也返回 True os.path.expanduser(path) 路径中包含的"~"和"~user"转换成用户目录 os.path.expandvars(path) 根据环境变量的值替换 path 中包含的"$name"和"${name}" os.path.getatime(path) 返回最近访问时间(浮点型秒数) os.path.getmtime(path) 返回最近文件修改时间 os.path.getctime(path) 返回文件 path 创建时间 os.path.getsize(path) 返回文件大小,如果文件存在就返回错误 os.path.isabs(path) 判断是否为绝对路径 os.path.isfile(path) 判断路径是否为文件 os.path.isdir(path) 判断路径是否为目录 os.path.islink(path) 判断路径是否为链接 os.path.ismount(path) 判断路径是否为挂载点 os.path.join(path1[, path2[, ...]]) 把目录和文件名合成路径 os.path.normcase(path) 转换 path 的大小和斜杠 os.path.normpath(path) 规范 path 字符串形式 os.path.realpath(path) 返回 path 的真实路径 os.path.relpath(path[, start]) 从 start 开始计算相对路径 os.path.samefile(path1, path2) 判断目录或文件是否相同 os.path.sameopenfile(fp1, fp2) 判断 fp1 和 fp2 是否指向同文件 os.path.split(path)路径分割成 dirname 和 basename,返回个元组 os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组 os.path.splitunc(path)路径分割为加载点与文件 os.path.walk(path, visit, arg) 遍历 path,进入每个目录都调用 visit 函数,visit 函数必须有 3 个参数(arg, dirname, names),dirname 表示当前目录的目录名,names 代表当前目录下的所有文件名,args 则为 walk 的第三个参数 os.path.supports_unicode_filenames 设置是否支持 unicode 路径名 编程要求 仔细阅读右侧编辑区内给出的代码框架及注释,按照提示在 Begin-End 之间编程序代码。具体要求如下: 打印当前的工作目录; 打印当前目录下的所有文件以及文件夹的列表。 注意:因为每个学员开启的实训工作路径致,所以本关采用的是末尾匹配。 测试说明 平台将使用测试集运行你编的程序代码,若全部的运行结果正确,则通关。 可在右侧 “测试结果”区查看具体的测试集详情。 测试输入: 无 预期输出: /data/workspace/myshixun_1095093/pvnf6l7arq20200303111509 ['.git', 'src'] 开始你的任务吧,祝你成功!
最新发布
05-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值