CodeGym /Java 课程 /Python SELF ZH /磁盘文件操作

磁盘文件操作

Python SELF ZH
第 21 级 , 课程 5
可用

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}")
        

重要! 在处理路径时总是使用系统函数,因为你的代码可能运行在不同操作系统上,在那里文件分隔符不是\,而是/,或者“:”在路径中被禁止,或者其他限制。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION