Skip to main content

01 OS模块

番风About 3 min

文件处理

文件重命名

import os
os.rename('test.txt','test.py')
os.renames('test.txt','test.py')

区别


Info

os.rename()os.renames() 都是用于文件重命名的函数,但它们在处理路径和错误处理方面有所不同。

  1. os.rename(src, dst)

    • 用于将一个文件或目录从源路径 src 重命名为目标路径 dst
    • src 是要重命名的文件或目录的原始路径。
    • dst 是重命名后的目标路径。
    • 如果 srcdst 指向不同的文件系统或驱动器,或者 dst 已经存在,那么 os.rename() 可能会引发 OSError 异常。
    • 如果重命名成功,os.rename() 不会返回任何值,否则会引发异常。
  2. os.renames(old, new)

    • 用于递归地将一个文件或目录从源路径 old 重命名为目标路径 new
    • old 是要重命名的文件或目录的原始路径。
    • new 是重命名后的目标路径。
    • 如果 oldnew 指向不同的文件系统或驱动器,或者 new 已经存在,os.renames() 将自动进行递归操作,先创建目标路径的上级目录,然后将 old 移动到 new
    • 如果重命名成功,os.renames() 不会返回任何值,否则会引发异常。

总的来说,os.rename() 用于单个文件或目录的简单重命名,而 os.renames() 用于递归重命名,并在需要时创建目标路径的上级目录os.renames() 更适用于需要处理目录结构的情况。此外,os.renames() 还具有自动处理文件系统和目录存在的功能,因此更适用于复杂的重命名操作。

文件删除

os.remove('test.py')# 只能删除文件
os.rmdir('a/b/c') #只删除空目录 C
os.removedirs('a/b/c') #删除空目录 C B A

文件创建

os.mkdir('a/b/c') #只能创建一级目录

获取当前目录

os.getcwd()

更改当前目录

os.chdir('a/b/c')

获取目录列表

os.listdir('a/b/c')

复制文件

a_file = open('a.txt','r')
b_file = open('b.txt','w')
# f = a_file.read()
# b_file.write(f)
while True:
    f = a_file.read(1024)
    if len(f) == 0:
        break
    b_file.write(f)
a_file.close()
b_file.close()

路径处理 (os.path)

以下是 Python 的 os.path 模块的一些常用功能:

查看文件或目录的绝对路径:

os.path.abspath('a/b/c')

将路径分割为目录和文件名:

os.path.split('/path/to/some/file.txt')

只获取文件名:

os.path.basename('/path/to/some/file.txt')

只获取目录名:

os.path.dirname('/path/to/some/file.txt')

判断文件或目录是否存在:

os.path.exists('/path/to/some/file.txt')

判断是否为文件:

os.path.isfile('/path/to/some/file.txt')

判断是否为目录:

os.path.isdir('/path/to/some/directory')

获取文件的大小:

os.path.getsize('/path/to/some/file.txt')

连接目录与文件名或目录:

os.path.join('/path/to/some', 'file.txt')

返回文件的创建时间:

os.path.getctime('/path/to/some/file.txt')

返回文件的最后访问时间:

os.path.getatime('/path/to/some/file.txt')

返回文件的最后修改时间:

os.path.getmtime('/path/to/some/file.txt')

获取文件的扩展名:

os.path.splitext('/path/to/some/file.txt') 

os.path.splitext('/path/to/some/file.txt') 这个函数会将文件的路径与其扩展名进行分割,返回一个包含两个字符串元素的元组。第一个元素是文件的路径(不含扩展名),第二个元素是文件的扩展名。

在你给出的例子中,os.path.splitext('/path/to/some/file.txt') 将返回一个元组:('/path/to/some/file', '.txt')。第一个元素是不包含扩展名的文件路径,第二个元素是文件的扩展名。

获取文件名 (不含路径名和扩展名)

base_name = os.path.basename('/path/to/some/file.txt')
filename, file_extension = os.path.splitext(base_name)