Python中的文件及目录操作(os 和 os.path模块)
Python中的文件及目录操作(os 和 os.path模块)
我认为这一部分知识是非常重要的,因为Python现在大家使用的越来越多,使用最多的场景就是处理数据,而处理数据就需要经常操作文件!!!
- Python 中的变量、序列和对象中存储的数据是暂时的,程序结束后就会丢失。为了长时间地保存程序中的数据,需要将程序中的数据存到磁盘文件中。
一、路径问题
- 请看我的文章 ===> 一文讲清楚——相对路径和绝对路径
二、文件操作
在 Python 中,内置了文件(File)对象。在使用文件对象时,首先需要通过内置的 open() 方法创建一个文件对象,然后通过该对象提供的方法进行一些 基本文件操作。
file = open(filename[,mode[,buffering]])
:用于打开一个文件- filename:个包含了你要访问的文件名称的字符串值。
- mode:mode 决定了打开文件的模式:只读,写入,追加等。
- buffering:如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
- file 对象常用方法
file.read([size])
:size 未指定则返回整个文件,如果文件大小大于2倍内存则有问题,f.read()读到文件尾时返回""。file.seek(偏移量, [起始位置])
:用来移动文件指针。- 偏移量: 单位为字节,可正可负
- 起始位置:0-文件头,默认值;1-当前位置;2-文件尾
file.readline()
:返回一行。file.readlines([size])
:返回包含size行的列表, size 未指定则返回全部行。file.write("hello\n")
:如果要写入字符串以外的数据,先将他转换为字符串。file.tell()
:返回一个整数,表示当前文件指针的位置(就是到文件头的字节数)file.close()
:关闭文件。file.fulsh()
:将缓冲区的数据全部写入磁盘中。
- 打开文件时使用with语句
- 使用with语句能保证with语句执行完毕后关闭已经打开的文件
with expression as target: with-body
- expression:打开文件的 open() 函数。
- target:将 expression 的结果保存到该变量中。
- with-body:用于指定 with 语句体,其中可以时执行 with 语句后相关的一些操作语句。如果不想执行任何语句,可以直接使用 pass 语句代替。
- 使用with语句能保证with语句执行完毕后关闭已经打开的文件
三、目录操作(os 和 os.path 模块)
① 在 Python 中,并没有直接操作目录的函数或者对象,而是需要使用内置的 os 和 os.path 模块实现。
② os 模块是 Python 内置的与操作系统功能和文件系统相关的模块。该模块中的语句的执行结果通常与操作系统有关,在不同的操作上运行,可能会导致不一样的结果哦。
os.name
:用于获取操作系统的类型。- 如果
os.name
的输出结果是nt
,则表示是Windows
操作系统;如果是posix
,则表示是Linux
、Unix
或Mac OS
操作系统。
- 如果
os.linesep
:用于获取当前操作系统上的换行符。os.sep
:用于获取当前操作系统所使用的路径分隔符。
1、os 模块提供的与目录相关的函数
-
getcwd()
:返回当前的工作目录 -
listdir(path)
:返回指定路径下的文件和目录的名字 -
mkdir(path)
:创建一级目录- 该函数只能创建指定路径中的最后一级函数,如果该目录的上一级不存在,则会抛出
FileNotFoundError
异常。 - 如果创建的目录已经存在了将抛出
FileExistsError
异常。(使用前需要先判断该目录是否已经存在) - 如果指定的目录有多级,而且最后一级的上级目录中有不存在的,则会抛出异常,并且目录创建不成功。可以使用下面的创建多级目录的方法或者编写递归函数。
import os def mkdir(path): if not os.path.isdir(path): # 判断是否为有效路径 mkdir(os.path.split(path)[0]) # 递归调用 else: # 如果目录存在直接返回 return os.mkdir(path) # 创建目录 mkdir("D:/mr/test/demo") # 调用递归函数,只能使用绝对路径,不能使用相对路径。
- 该函数只能创建指定路径中的最后一级函数,如果该目录的上一级不存在,则会抛出
-
makedirs(path1/path2/...)
:创建多级目录- 如果创建的目录已经存在了将抛出
FileExistsError
异常。(使用前需要先判断该目录是否已经存在)
- 如果创建的目录已经存在了将抛出
-
rmdir(path)
:删除一级目录- 如果要删除的目录不存在,将抛出
FileNotFoundError
异常。(使用前先判断该目录是否存在) - 只能删除空的目录,如果想要删除非空目录,则需要使用
Python
内置的标准模块shutil
的retree()
函数实现。
- 如果要删除的目录不存在,将抛出
-
removedirs(path1/path2/...)
:删除多级目录 -
remove(path)
:删除文件 -
chdir(path)
:把 path 设置为当前工作目录 -
walk(top[,topdown[,onerror[,followlinks]])
:遍历目录树,该方法返回一个3元组的数组,包括所有路径名、所有目录列表和文件列表3个元素。- walk()函数只在Unix系统和Windows系统中有效。
-
rename(src, dst)
:将文件或目录 src 重命名为 dst。 -
stat(path)
:获取文件的基本信息。
2、os.path 模块提供的与目录相关的函数
isdir(path)
:用于判断是否为有效路径split(path)
:将路径分割成目录和文件名两部分abspath(path)
:用于获取文件或目录的绝对路径exists(path)
:用于判断目录或者文件是否存在,如果存在则返回True
,否则返回False
join(path1[,path2[,...]])
:用于将两个或者多个路径拼接到一起组成一个新的路径。- 如果在拼接的路径中,没有一个绝对路径,那么最后拼接的将是一个相对路径。
- 注意:os.path.join()函数在拼接路径时,并不会检测该路径是否真实存在。
- 在使用 join() 函数时,如果要拼接的路径中,存在多个绝对路径,那么以从左到右为序最后一次出现的路径为准,并且该路径之前的参数都将被忽略。
- 把两个路径拼接为一个路径时,不要直接使用字符串拼接,而是使用 os.path.join() 函数,这样可以正确处理不同操作系统的路径分隔符。
splitext()
:分离文件名和扩展名。basename(path)
:从一个路径字符串中提取一个文件名。dirname(path)
:从一个路径中提取文件路径,不包括文件名。
原文地址:https://blog.csdn.net/weixin_65032328/article/details/140536681
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!