6.1 文件操作
Python提供了很多内建的函数和模块来处理文件和目录。主要操作使用内建模块os
, shutil
及其他。
文件的三个基本操作:
- 复制
- 移动
- 删除
模块shutil
非常适合执行这些操作。
复制文件
import shutil
shutil.copy('source.txt', 'destination.txt')
移动文件
import shutil
shutil.move('source.txt', 'destination.txt')
删除文件
import os
os.remove('example.txt')
比以往任何时候都简单。
6.2 检查文件是否存在
通常需要检查某个文件是否存在。os
模块有个特别的方法—exists()
用于此。
检查文件存在性
import os
if os.path.exists('example.txt'):
print("文件存在")
else:
print("文件不存在")
# 如果文件不存在,程序将执行else块中的操作。
# 例如,可以发送警告、创建新文件或退出程序。
如果文件不存在,程序可以通过条件处理或者抛出异常来处理。
6.3 检查对象类型:文件或目录
很常见的需求是检查对象是文件还是目录。比如,如果你读取了目录中的所有内容,文件需要单独处理,而目录则不同。
对于这样的情况,有两个特别的方法—isdir()
检查对象是否为目录,isfile()
检查对象是否为文件。
检查是否为目录
if os.path.isdir('example_directory'):
print("这是一个目录")
else:
print("这不是一个目录")
检查是否为文件
if os.path.isfile('example_file'):
print("这是一个文件")
else:
print("这不是一个文件")
这些都是非常实用的功能,你会比想象中更常用到。 :)
6.4 路径操作
模块os
有个子模块os.path
,
其中包含了一些用于文件和目录的有用函数。这里有一些例子:
获取文件扩展名
函数splitext()
将文件名分为两部分,并返回一个包含两个元素的列表:名和扩展名。
import os.path
# 获取文件扩展名
file_path = 'example.txt'
file_extension = os.path.splitext(file_path)[1]
print(f"文件扩展名: {file_extension}")
获取不带扩展名的文件名
import os.path
# 获取不带扩展名的文件名
file_path = 'example.txt'
file_name = os.path.splitext(os.path.basename(file_path))[0]
print(f"不带扩展名的文件名: {file_name}")
从路径获取文件名
函数basename()
只返回文件名,去掉它的路径。
import os.path
# 从路径获取文件名
file_path = '/path/to/example.txt'
file_name = os.path.basename(file_path)
print(f"文件名: {file_name}")
从路径获取目录
也可以很容易地通过函数dirname()
从文件名获取目录。
import os.path
# 从路径获取目录
file_path = '/path/to/example.txt'
directory = os.path.dirname(file_path)
print(f"目录: {directory}")
路径合并
如果你分开有目录和文件名,可以获取到此文件的完整路径。
import os.path
# 路径合并
directory = '/path/to'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"完整路径: {full_path}")
6.5 跨平台路径
在处理路径时,重要的是要考虑操作系统之间的差异。路径分隔符可能不一样,一个平台上工作的代码在另一个平台上可能不工作。为了避免在不同操作系统之间转移代码时出现问题,使用os.path.join()
, os.path.abspath()
和os.path.dirname()
这些函数可确保跨平台兼容性。
例如:
import os
# 跨平台路径合并
directory = 'some_directory'
file_name = 'example.txt'
full_path = os.path.join(directory, file_name)
print(f"完整路径: {full_path}")
获取绝对路径
如果你只有相对当前工作目录的路径,但想将其转换为绝对路径,可以使用函数abspath()
。
import os.path
# 获取绝对路径
relative_path = 'example.txt'
absolute_path = os.path.abspath(relative_path)
print(f"绝对路径: {absolute_path}")
重要!
在处理路径时总是使用系统函数,因为你的代码可能运行在不同操作系统上,在那里文件分隔符不是\
,而是/
,或者“:”
在路径中被禁止,或者其他限制。
GO TO FULL VERSION