如何使用Python函数库中的os模块进行文件操作?
Python是一种高级编程语言,被广泛用于各种任务,包括文件操作。Python的功能丰富且易于使用,其中一个重要的功能是处理操作系统级别的文件和文件夹。Python中的os模块是一个用于操作文件和目录的通用接口。本文将介绍如何使用Python函数库中的os模块进行文件操作。
os模块的基本概述
os模块是Python标准库的一部分,它提供了一种跨平台的方式来与操作系统进行交互。使用os模块,在程序中可以实现操作文件、目录和文件系统的其他部分。os模块中一些常用的文件和目录操作包括文件创建、删除和移动,目录创建、删除和移动文件、目录、符号链接等功能。
通过Python中的os模块可以实现:
1、查看当前工作目录
2、改变当前工作目录
3、创建文件和目录
4、重命名和删除文件和目录
5、创建和删除符号链接
6、判断文件是否存在
7、获取文件的元数据信息
8、修改文件和目录权限等操作。
下面我们将这些操作分别介绍。
1. 查看当前工作目录
os模块中的os.getcwd()函数返回当前工作目录的绝对路径。其用途在于让代码知道当前脚本文件所在目录,因为操作文件时不指定路径时会默认到当前工作目录下寻找相关文件。
import os
print("Current working directory:", os.getcwd())
2. 改变当前工作目录
os模块中的os.chdir(path)函数可以改变当前的工作目录,其中,path为新的工作目录的路径。如果你想要在更改工作目录之前保存原始目录,可以使用os模块中的os.getcwd()函数获取当前工作目录的原始目录。
import os
# 获取原始工作目录
original_directory = os.getcwd()
print(f"Original working directory: {original_directory}")
# 改变当前的工作目录
os.chdir("D:\\tmp")
print(f"Current working directory: {os.getcwd()}")
# 返回原始工作目录
os.chdir(original_directory)
print(f"Returning to original working directory: {os.getcwd()}")
3. 创建文件和目录
os模块中的os.mkdir(directory)函数可用于创建新目录。同时,os.makedirs(directory)函数还可以创建多层级的目录,即便这些目录的父目录尚不存在。需要注意的是,这些函数将抛出一个OSError异常,如果尝试创建一个已存在的目录时。
import os
# 创建一个新目录
os.mkdir("D:\\tmp\\folder1")
print("Newly created folder: ", os.path.isdir("D:\\tmp\\folder1"))
# 返回原始工作目录
os.rmdir("D:\\tmp\\folder1")
print("Deleted folder: ", not os.path.exists("D:\\tmp\\folder1"))
# 递归多层创建目录
os.makedirs("D:\\tmp\\folder1\\subfolder1\\subsubfolder1")
print("Created", os.path.isdir("D:\\tmp\\folder1\\subfolder1\\subsubfolder1"))
# 返回原始工作目录
os.removedirs("D:\\tmp\\folder1\\subfolder1\\subsubfolder1")
print("Deleted", not os.path.exists("D:\\tmp\\folder1\\subfolder1\\subsubfolder1"))
4. 重命名和删除文件和目录
os模块中的os.rename(src, dst)函数可将src文件或目录重命名为dst。要删除文件/目录,可以使用os.remove(filename)函数(文件)或os.rmdir(directory)函数(目录)。
import os
# 重命名原始文件名
os.rename("D:\\tmp\\file1.txt", "D:\\tmp\\file2.txt")
print(f"Renamed file to {os.path.isfile('D:\\tmp\\file2.txt')}")
# 用os.remove删除指定的文件
os.remove("D:\\tmp\\file2.txt")
print(f"Deleted the file {not os.path.isfile('D:\\tmp\\file2.txt')}")
# 用os.rmdir删除指定的目录
os.rmdir("D:\\tmp\\folder1")
print(f"Deleted the directory {not os.path.isdir('D:\\tmp\\folder1')}")
5. 创建和删除符号链接
os模块中的os.symlink(src, dst)函数可用于创建文件或目录的符号链接,src为链接文件的路径,dst为链接指向的文件或目录的路径。
import os
# 创建符号链接
os.symlink("D:\\tmp\\file1.txt", "D:\\tmp\\link1")
print(f"Symbolic link created: {os.path.islink('D:\\tmp\\link1')}")
# 删除符号链接
os.remove("D:\\tmp\\link1")
print(f"Symbolic link deleted: {not os.path.exists('D:\\tmp\\link1')}")
6. 判断文件是否存在
os模块中的os.path.exists(path)函数可用于判断文件或目录是否已存在。如果文件不存在,则返回False,否则返回True。
import os
# 判断文件是否存在
print(f"File exists: {os.path.exists('D:\\tmp\\file1.txt')}")
# 判断目录是否存在
print(f"Directory exists: {os.path.isdir('D:\\tmp\\')}")
# 判断文件是不是个符号链接
print(f"Is file a symbolic link: {os.path.islink('D:\\tmp\\link1')}")
7. 获取文件的元数据信息
os模块还提供了获取文件属性和其他元数据信息的函数。常见的属性包括文件的创建、修改和访问时间戳,以及文件大小、权限等信息。
import os
filename = "D:\\tmp\\file1.txt"
# 获取文件的元数据信息
print(f"File path: {os.path.realpath(filename)}")
print(f"Last accessed at: {os.path.getatime(filename)}")
print(f"Last modified at: {os.path.getmtime(filename)}")
print(f"File size: {os.path.getsize(filename)} bytes")
print(f"File permissions: {os.stat(filename).st_mode}")
8. 修改文件和目录权限等操作
os模块中的os.chmod(filename, mode)函数可修改文件或目录的权限。filename参数表示要修改的文件的路径,而mode参数表示文件的权限。如,要将文件权限设置读写执行:
import os filename = "D:\\tmp\\file1.txt" os.chmod(filename, 0o777)
也可以通过os.umask(mask)函数修改文件模式掩码。这将返回先前的掩码值,或可以省略。
import os
original_umask = os.umask(0o22)
print(f"Original umask: {original_umask}")
总结
本文介绍了如何使用Python函数库中的os模块进行文件操作。os模块提供了一个通用的、跨平台的方式来处理文件和目录。使用这个模块,可以轻松地执行文件操作,并对文件进行各种元数据操作,如删除、修改、剪切、捕获元数据信息等。
另外,需要注意的是,在执行文件操作时,请务必小心谨慎,以避免意外删除或修改了重要文件。
