Python学习笔记读写文件之文件与文件路径
随笔记录方便自己和同路人查阅。
#------------------------------------------------我是可耻的分割线-------------------------------------------
文件有两个关键属性:“文件名”(通常写成一个单词)和“路径”。路径指明了文件在计算机上的位置。例如,我的 Windows 7 笔记
本上有一个文件名为projects.docx,它的路径在C:\Users\asweigart\Documents。文件名中,最后一个句点之后的部分称为文件的“扩展
名”,它指出了文件的类型。project.docx 是一个Word 文档,Users、asweigart和 Documents 都是指“文件夹”(也成为目录)。文件夹
可以包含文件和其他文件夹。例如,project.docx 在Documents 文件夹中,该文件夹又在asweigart 文件夹中,asweigart文件夹又在Users
文件夹中。路径中的 C:\部分是“根文件夹”,它包含了所有其他文件夹。在 Windows 中,根文件夹名为 C:\,也称为 C:盘。在 OS X 和
Linux 中,根文件夹是/。
#------------------------------------------------我是可耻的分割线-------------------------------------------
在文件夹层次结构中的一个文件:
1、Windows 上的倒斜杠以及 OS X 和 Linux 上的正斜杠
在Windows上,路径书写使用到斜杠作为文件夹之间的分隔符。但在OSX和Linux上,使用正斜杠作为它们路径的分隔符。如果想要
程序运行在所有操作系统上,在编写Python脚本时,就必须处理这两种情况。
好在,用os.path.join()函数来做这件事很简单。如果将单个文件和路径上的文件夹名称的字符串传递给它,os.path.join()就会返回一个
文件夹路径的字符串,包含正确的路径分隔符。
示例代码:
1 2 3 4 5 6 7 8 9 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #把文件名称传递给os.path.join()函数 path_file = os.path.join( 'usr' , 'bin' , 'spam' ) #打印文件路径 print (path_file) |
运行结果:
如果需要创建文件名称的字符串,os.path.join()函数就很有用。这些字符串将传递给几个文件相关的函数,本章将进行介绍。例如,下面的
例子将一个文件名列表中的名称,添加到文件夹名称的末尾。
示例代码:
1 2 3 4 5 6 7 8 9 10 11 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #定一个列表,存放文件名 myFiles = [ 'accounts.txt' , 'details.csv' , 'invite.docx' ] #循环文件名 for filename in myFiles: #使用os.path.join()函数,把文件名作为第二个参数加上地址 print (os.path.join( 'C:\\Users\\asweigart' , filename)) |
运行结果;
2、当前工作目录
每个运行在计算机上的程序,都有一个“当前工作目录”,或cwd。所有没有从根文件夹开始的文件名或路径,都假定在当前工作目录下。利用os.getcwd()函数
,可以取得当前工作路径的字符串,并可以利用os,chdir()改变它。
利用os.getcwd()函数获取当前工作目录,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.getcwd()函数,获取当前工作路径 print (os.getcwd()) |
运行结果:
利用os.chdir()函数改变当前工作目录,示例代码:
1 2 3 4 5 6 7 8 9 10 11 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.getcwd()函数,获取当前工作路径 print (os.getcwd()) #利用os.chdir(),改变当前目录 os.chdir( 'D:\\360Downloads\\Software' ) #打印改变后的,当前目录 print (os.getcwd()) |
运行结果:
3、绝对路径与相对路径
有两种方法指定一个文件路径。
(1)“绝对路径”,总是从根文件夹开始。
(2)相对路径,它相对于程序的当前工作目录。
还有点(.)和点点(..)文件夹。它们不是真正的文件夹,而是可以在路径中使用的特殊名称。单个的句点(‘点’)用作文件夹名称时,是‘这个目录’的缩写
。两个句点(‘点点’)意思是父级文件夹。
下图是一些文件夹和文件的例子。如果当前工作目录设置为 C:\bacon,这些文件夹和文件的相对目录,就设置为下图所示的样子。
4、用os.makedirs()创建新文件夹,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.makedirs()函数,创建新的文件夹 os.makedirs( 'D:\\Users\\Administrator' ) |
运行结果:
5、os.path模块
os.path模块包含了许多与文件名和文件路径相关的有用函数。例如,你已经使用了os.path.join()来构建所有操作系统上都有效的路径。
因为os.path是os模块中的模块,所以只要执行import os就可以导入它。如果你的程序需要处理文件、文件夹或文件路径,就可以使用os模块。
6、处理绝对路径和相对路径
os.path模块提供了一些函数,返回一个相对的绝对路径,以及检查给定的路径是否为绝对路径。
(1)调用os.path.abspath(path),将返回参数的绝对路径的字符串。这就是相对路径转换为绝对路径的简单方法。
os.path.abspath()函数,示例代码:
1 2 3 4 5 6 7 8 9 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.path.abspath()函数,取得当前工作目录的绝对路径(.句点表示为当前路径) print (os.path.abspath( '.' )) #利用os.path.abspath()函数,取得当前工作目录父级的绝对路径(..两个句点表示为当前路径的父级目录) print (os.path.abspath( '..' )) |
运行结果;
(2)调用os.path.isabs(path),如果参数是一个绝对路径,就返回True,如果参数是一个相对路径,就返回False。
os.path.isabs()函数,示例代码
1 2 3 4 5 6 7 8 9 10 11 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.path.isabs()函数,判断当前为绝对路径还是相对路径,传入绝对路径,返回True print (os.path.isabs( 'C:\\Users\Administrator\PycharmProjects\test' )) #利用os.path.isabs()函数,判断当前为绝对路径还是相对路径,传入相对路径,返回False print (os.path.isabs( '.' )) #利用os.path.isabs()函数,判断当前为绝对路径还是相对路径,传入相对路径,返回False print (os.path.isabs( '..' )) |
运行结果:
(3)调用os.path.relpath(path,start)将返回从start路径到path的相对路径的字符串。如果没有提供 start,就使用当前工作目录作为开始路径。
os.path.relpath() 函数,示例代码:
1 2 3 4 | #导入os模块 import os print (os.path.relpath( 'C:\\Windows' , 'C:\\' )) print (os.path.relpath( 'C:\\Users\Administrator\\PycharmProjects\\test' , 'C:\\Users\\Administrator' )) |
运行结果:
7、查看文件大小和文件内容
一旦有办法处理文件路径,就可以开始搜集特定文件和文件夹的信息。os.path 模块提供了一些函数,用于查看文件的字节数以及给定文件夹中的文件
和子文件夹。
(1)调用 os.path.getsize(path)将返回 path 参数中文件的字节数。
os.path.getsize()函数,示例代码:
1 2 3 4 | #利用os.path.getsize()函数,获取路径下所有文件的大小 print (os.path.getsize( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写' )) #利用os.path.getsize()函数,获取路径下指定文件的大小 print (os.path.getsize( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写\\Create_Folder.py' )) |
运行结果:
(2)调用os.listdir(path)将返回文件名字符串的列表,包含path参数中的每个文件(这个函数在os模块中,而不是os.path)
os.listdir()函数,示例代码:
1 2 3 4 5 6 7 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.listdir()函数,获取路径下的所有文件,并返回一个列表值 print (os.listdir( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写' )) |
运行结果;
8、检查路径的有效性
如果你提供的路径不存在,许多 Python 函数就会崩溃并报错。os.path 模块提供了一些函数,用于检测给定的路径是否存在,以及它是文件还是文件夹。
(1)如果path参数存在,并且是一个文件或文件夹存在,调用os.path.exists(path)将返回True,否则返回False.
os.path.exists()函数,示例代码:
1 2 3 4 5 6 7 8 9 10 | #导入os模块 import os #利用os.path.exists()函数,判断是否为文件或文件夹,是返回True,否则返回False. print (os.path.exists( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写' )) #利用os.path.exists()函数,判断是否为文件或文件夹,是返回True,否则返回False. print (os.path.exists( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写\\Create_Folder.py' )) #利用os.path.exists()函数,判断是否为文件或文件夹,是返回True,否则返回False. print (os.path.exists( 'C' )) #利用os.path.exists()函数,判断是否为文件或文件夹,是返回True,否则返回False. print (os.path.exists( 'Create_Folder.py' )) |
运行结果:
(2)如果path参数存在,并且是一个文件,调用os.path.isfile(path)将返回True,否则返回False.
1 2 3 4 5 6 7 8 9 10 11 | #导入os模块 import os #利用os.path.isfile()函数,判断是否为文件,是返回True,否则返回False. #文件夹 print (os.path.isfile( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写' )) #文件 print (os.path.exists( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写\\Create_Folder.py' )) #字符 print (os.path.exists( 'C' )) #数字 print (os.path.exists( '1' )) |
运行结果:
(3)如果path参数存在,并且是一个文件夹,调用os.path.isdir(path)将返回True,否则返回False.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #! python 3 # -*- coding:utf-8 -*- # Autor: Li Rong Yang #导入os模块 import os #利用os.path.isdir()函数,判断是否为文件,是返回True,否则返回False. #文件夹 print (os.path.isdir( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写' )) #文件 print (os.path.isdir( 'C:\\Users\\Administrator\\PycharmProjects\\test\\文件读写\\Create_Folder.py' )) #字符 print (os.path.isdir( 'C' )) #数字 print (os.path.isdir( '1' )) |
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)