Python
内置的os
模块除了可以对目录进行操作,还可以对文件进行一些高级操作,具体函数如表1所示。
1、删除文件
Python
没有内置删除文件的函数,但是在内置的os
模块中提供了删除文件的函数remove()
,该函数的基本语法格式如下:
os.remove(path)
其中,path
为要删除的文件路径,可以使用相对路径,也可以使用绝对路径。
例如,要删除当前工作目录下的soft.txt文件,可以使用下面的代码:
import os # 导入os模块
os.remove("soft.txt") # 删除当前工作目录下的soft.txt文件
执行上面的代码后,如果在当前工作目录下存在soft.txt
文件,即可将其删除,否则将显示如图1所示的异常。
为了屏蔽以上异常,可以在删除文件时,先判断文件是否存在,只有存在时才执行删除操作。具体代码如下:
import os # 导入os模块
path = "soft.txt" # 要删除的文件
if os.path.exists(path): # 判断文件是否存在
os.remove(path) # 删除文件
print("文件删除完毕!")
执行上面的代码,如果soft.txt不存在,则显示以下内容:
文件不存在!
否则将显示以下内容,同时文件将被删除。
文件删除完毕!
2、重命名文件和目录
os
模块提供了重命名文件和目录的函数rename()
,如果指定的路径是文件的,则重命名文件,如果指定的路径是目录,则重命名目录。rename()
函数的基本语法格式如下:
os.rename(src,dst)
其中,src
用于指定要进行重命名的目录或文件;dst
用于指定重命名后的目录或文件。
同删除文件一样,在进行文件或目录重命名时,如果指定的目录或文件不存在,也将抛出FileNotFoundError
异常,所以在进行文件或目录重命名时,也建议先判断文件或目录是否存在,只有存在时才进行重命名操作。
想要将“C:\demo\test\dir\m\soft.txt
”文件重命名为“C:\demo\test\dir\m\aibd.txt
”,可以使用下面的代码:
import os # 导入os模块
src = "C:\\demo\\test\\dir\\m\\soft.txt" # 要重命名的文件
dst = "C:\\demo\\test\\dir\\m\\aibd.txt" # 重命名后的文件
os.rename(src,dst) # 重命名文件
if os.path.exists(src): # 判断文件是否存在
os.rename(src,dst) # 重命名文件
print("文件重命名完毕!")
else:
print("文件不存在!")
使用rename()
函数重命名目录与命名文件基本相同,只要把原来的文件路径替换为目录即可。例如,想要将当前目录下的demo
目录重命名为test
,可以使用下面的代码:
import os # 导入os模块
src = "demo" # 重命名的当前目录下的demo
dst = "test" # 重命名为test
if os.path.exists(src): # 判断目录是否存在
os.rename(src,dst) # 重命名目录
print("目录重命名完毕!")
else:
print("目录不存在!")
注意:在使用rename()
函数重命名目录时,只能修改最后一级的目录名称,否则将抛出如图2所示的异常。
3、获取文件基本信息
在计算机上创建文件后,该文件本身就会包含一些信息。例如,文件的最后一次访问时间、最后一次修改时间、文件大小等基本信息。通过os
模块的stat()
函数可以获取到文件的这些基本信息。stat()
函数的基本语法如下:
os.stat(path)
其中,path
为要获取文件基本信息的文件路径,可以是相对路径,也可以是绝对路径。
stat()
函数的返回值是一个对象,该对象包含如表所示的属性。通过访问这些属性可以获取文件的基本信息。
import os # 导入os模块
fileinfo = os.stat("mr.png") # 获取文件的基本信息
print("文件完整路径:", os.path.abspath("mr.png")) # 获取文件的完整数路径
# 输出文件的基本信息
print("索引号:",fileinfo.st_ino)
print("设备名:",fileinfo.st_dev)
print("文件大小:",fileinfo.st_size," 字节")
print("最后一次访问时间:",fileinfo.st_atime)
print("最后一次修改时间:",fileinfo.st_mtime)
print("最后一次状态变化时间:",fileinfo.st_ctime)