Python- 文件处理

os.path.splitext(file)[0] 获取文件名

file.endswith(".c") 用于检查一个文件名(存储在变量 file 中)是否以 “.c” 结尾。如果是这样,那么它可能是一个 C 语言源代码文件。

接下来,os.path.splitext(file)[0] 用于获取该文件的名称,但不包括扩展名(即 “.c”)。函数 os.path.splitext 将文件名分割为两部分:一部分是文件名(不包括扩展名),另一部分是扩展名(包括点字符)。函数返回一个包含这两个部分的元组。通过索引 [0],我们只取该元组的第一个元素,即不包括扩展名的文件名。

例如,如果 file 是 “example.c”,os.path.splitext(file) 将返回一个元组:('example', '.c')。取索引 [0],你就会得到 “example”,这就是不包括扩展名的文件名。

总体而言,这段代码用于处理以 “.c” 结尾(可能是 C 语言源文件)的文件,并获取这些文件的基础名称(即不包括 “.c” 扩展名的部分)。

这样做的原因可能是多种多样的,取决于具体的应用场景。

os.walk()

os.walk 是一个 Python 的标准库函数,用于遍历一个目录树。该函数生成一个迭代器,该迭代器在每次迭代时返回一个三元组(root, dirs, files)。

  • root:是你正在遍历的目录的名称(一个字符串)。
  • dirs:是一个列表,包含 root 中所有的目录名(不包括子目录中的目录)。
  • files:也是一个列表,包含 root 目录中所有的文件名(不包括子目录中的文件)。

这三个值允许你知道在遍历目录结构时你在哪里,以及每个目录中有什么。

举一个例子,假设你有如下的目录结构:

mydir/
|-- subdir1/
|   |-- file1.txt
|   `-- file2.txt
|-- subdir2/
`-- file3.txt

如果你调用 os.walk("mydir"),这个函数将返回一个迭代器,当你遍历这个迭代器时,你会得到类似以下的三元组:

  1. 第一次迭代:('mydir', ['subdir1', 'subdir2'], ['file3.txt'])
  2. 第二次迭代:('mydir/subdir1', [], ['file1.txt', 'file2.txt'])
  3. 第三次迭代:('mydir/subdir2', [], [])

你可以通过一个 for 循环来遍历这个迭代器,如:

import os

for root, dirs, files in os.walk("D:\\llvm-gcc-test\\llvm-test-suite"):
    # 在这里,你可以对 root, dirs, files 进行操作
    pass

这样可以方便地遍历一个目录及其所有子目录,并得知每个目录下有哪些文件和子目录。

os.path.join

os.path.join 是一个 Python 标准库中的函数,用于连接一个或多个路径组件以生成一个完整的文件或目录路径。该函数考虑了操作系统的文件路径分隔符,因此它是跨平台的。在 UNIX 和 Linux 系统中,路径组件间使用正斜杠 / 分隔,而在 Windows 系统中使用反斜杠 \ 分隔。

该函数接受任意数量的路径组件作为参数,并将它们连接起来以生成一个完整的路径。

示例

在 UNIX 或 Linux 上:

import os

path = os.path.join("folder1", "folder2", "file.txt")
# 输出:'folder1/folder2/file.txt'

在 Windows 上:

import os

path = os.path.join("folder1", "folder2", "file.txt")
# 输出:'folder1\\folder2\\file.txt'

特性

  1. 平台独立性:这个函数可以在所有主要的操作系统上工作,它会自动选择正确的文件路径分隔符。

  2. 灵活性:它可以接受任意数量的参数,并且参数可以是目录名、文件名或者两者的组合。

  3. 智能连接:如果提供的某个路径组件是一个绝对路径,则该函数会从该组件开始重新构造新的路径。例如:

    os.path.join("/folder1", "/folder2", "file.txt")
    

    在 UNIX 或 Linux 上,这将返回:'/folder2/file.txt'

使用场景

这个函数在你需要创建文件路径时特别有用,特别是当代码需要在多个平台上运行时。通过使用 os.path.join,可以确保代码在所有平台上都能正确地生成文件路径。

注意

虽然这个函数是用于操作路径的,但它实际上不会检查路径或文件是否真实存在于文件系统中。它仅仅是用于生成路径字符串的。如果需要检查路径是否存在,可以使用 os.path.exists 函数。

你可能感兴趣的:(Python,python)