第一章 操作路径、文件夹和文件
1.2 文件夹和文件操作
1.2.1 exists()函数–判断文件夹或文件是否存在
exists() 方法用于检查给定的路径是否存在于文件系统中。如果路径存在,则返回 True;否则返回 False。
from pathlib import Path
# 创建一个Path对象
p = Path("example.txt")
# 检查路径是否存在
if p.exists():
print("路径存在")
else:
print("路径不存在")
1.2.2 is_dir()函数和is_file()函数–判断路径指向的对象是文件夹还是文件
is_dir() 方法:
- 如果给定的路径是一个目录,则返回 True。
- 如果给定的路径不是一个目录,则返回 False。
is_file() 方法:
- 如果给定的路径是一个文件,则返回 True。
- 如果给定的路径不是一个文件,则返回 False。
1.2.3 mkdir()和rmdir()函数–新建和删除文件夹
在 pathlib 中,可以使用 Path
对象来创建和删除目录。以下是使用 pathlib 中的 mkdir() 和 rmdir() 函数的示例:
from pathlib import Path
# 创建一个新目录
new_dir = Path('new_directory')
new_dir.mkdir(parents=True, exist_ok=True)
# 删除一个空目录
empty_dir = Path('empty_directory')
empty_dir.rmdir()
在上面的代码中,我们首先导入了 Path 类。然后,我们创建了一个名为 new_directory 的新目录,并使用 mkdir()
方法将其创建。parents=True 参数表示如果父目录不存在,则会自动创建它们。exist_ok=True 参数表示如果目录已经存在,则不会引发错误。
接下来,我们创建了一个名为 empty_directory 的空目录,并使用 rmdir() 方法将其删除。请注意,如果要删除非空目录,需要先删除其中的所有文件和子目录。
1.2.4 touch()函数和unlink()函数–新建和删除文件
在 pathlib 中,可以使用 Path
对象来创建和删除文件。以下是使用 pathlib 中的 touch() 函数和 unlink() 函数的示例:
from pathlib import Path
# 创建一个新文件
new_file = Path('new_file.txt')
new_file.touch(exist_ok=True)
# 删除一个文件
file_to_delete = Path('file_to_delete.txt')
file_to_delete.unlink(missing_ok=True)
在上面的代码中,我们首先导入了 Path 类。然后,我们创建了一个名为 new_file.txt 的新文件,并使用 touch()
方法将其创建。exist_ok=True 参数表示如果文件已经存在,则不会引发错误。接下来,我们创建了一个名为 file_to_delete.txt
的文件,并使用 unlink() 方法将其删除。missing_ok=True 参数表示如果文件不存在,则不会引发错误。
需要注意的是,touch() 函数和 unlink() 函数都是基于 Path 对象的操作,而不是直接调用操作系统的命令。因此,它们的行为可能会受到操作系统的限制和差异。
1.2.5 rename()和replace()函数–重命名或移动文件夹和文件
from pathlib import Path
# 创建一个新文件
new_file = Path('new_file.txt')
new_file.touch(exist_ok=True)
# 重命名文件
new_file.rename('renamed_file.txt')
# 替换文件
old_file = Path('old_file.txt')
old_file.replace('new_file.txt')
在上面的代码中,我们首先导入了 Path 类。然后,我们创建了一个名为 new_file.txt 的新文件,并使用 touch()
方法将其创建。接下来,我们使用 rename() 方法将文件重命名为 renamed_file.txt。最后,我们创建了一个名为 old_file.txt
的文件,并使用 replace() 方法将其替换为 new_file.txt。需要注意的是,rename() 和 replace()
函数都是基于 Path 对象的操作,而不是直接调用操作系统的命令。因此,它们的行为可能会受到操作系统的限制和差异。
1.2.6 lterdir()函数–罗列文件夹的内容
pathlib.Path.iterdir() 是 Python 中的一个方法,用于返回一个迭代器,该迭代器包含指定路径下的所有文件和文件夹。
from pathlib import Path
# 创建一个 Path 对象,表示当前工作目录
current_directory = Path.cwd()
# 使用 iterdir() 方法获取当前目录下的所有文件和文件夹
for item in current_directory.iterdir():
print(item)
在这个示例中,我们首先导入了 pathlib 模块中的 Path 类。然后,我们使用 Path.cwd() 方法创建了一个表示当前工作目录的 Path 对象。接着,我们调用了 iterdir() 方法来获取当前目录下的所有文件和文件夹,并使用一个 for 循环遍历它们,打印出每个项目的名称。
*注意在创建路径对象时:创建的对象为相对路径,最后返回的结果则为相对路径;反之为绝对路径。
1.2.7 glob()和rglob()函数–罗列并筛选文件夹的内容
glob() 方法返回当前目录下所有匹配给定模式的文件和文件夹,而 rglob() 方法则递归地搜索所有子目录并返回所有匹配给定模式的文件和文件夹。
以下是使用 pathlib.Path.glob() 和 pathlib.Path.rglob() 的一个示例:
from pathlib import Path
# 创建一个 Path 对象,表示当前工作目录
current_directory = Path.cwd()
# 使用 glob() 方法获取当前目录下所有以 .txt 结尾的文件
for item in current_directory.glob('*.txt'):
print(item)
# 使用 rglob() 方法递归地获取当前目录及其子目录下所有以 .txt 结尾的文件
for item in current_directory.rglob('*.txt'):
print(item)
在这个示例中,我们首先导入了 pathlib 模块中的 Path 类。然后,我们使用 Path.cwd() 方法创建了一个表示当前工作目录的 Path 对象。接着,我们调用了 glob() 方法和 rglob() 方法来获取当前目录下所有以 .txt 结尾的文件和文件夹,并使用一个 for 循环遍历它们,打印出每个项目的名称。
1.2.8 stat()函数–获取文件夹或文件的状态信息
pathlib.Path.stat() 是 Python 中的一个方法,用于返回一个 os.stat_result 对象,该对象包含了指定路径下文件或目录的状态信息。
from pathlib import Path
import os
# 创建一个 Path 对象,表示当前工作目录下的某个文件
file_path = Path.cwd() / 'example.txt'
# 使用 stat() 方法获取文件状态信息
file_stat = file_path.stat()
# 打印文件状态信息
print(f"File size: {file_stat.st_size} bytes") # 文件夹或文件大小
print(f"Last modified time: {file_stat.st_mtime}") # 最近的修改时间
print(f"Last accessed time: {file_stat.st_atime}") # 最近的访问时间
print(f"Creation time: {file_stat.st_ctime)}") # 创建时间