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")
,这个函数将返回一个迭代器,当你遍历这个迭代器时,你会得到类似以下的三元组:
- 第一次迭代:
('mydir', ['subdir1', 'subdir2'], ['file3.txt'])
- 第二次迭代:
('mydir/subdir1', [], ['file1.txt', 'file2.txt'])
- 第三次迭代:
('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'
特性
-
平台独立性:这个函数可以在所有主要的操作系统上工作,它会自动选择正确的文件路径分隔符。
-
灵活性:它可以接受任意数量的参数,并且参数可以是目录名、文件名或者两者的组合。
-
智能连接:如果提供的某个路径组件是一个绝对路径,则该函数会从该组件开始重新构造新的路径。例如:
os.path.join("/folder1", "/folder2", "file.txt")
在 UNIX 或 Linux 上,这将返回:'/folder2/file.txt'
使用场景
这个函数在你需要创建文件路径时特别有用,特别是当代码需要在多个平台上运行时。通过使用 os.path.join
,可以确保代码在所有平台上都能正确地生成文件路径。
注意
虽然这个函数是用于操作路径的,但它实际上不会检查路径或文件是否真实存在于文件系统中。它仅仅是用于生成路径字符串的。如果需要检查路径是否存在,可以使用 os.path.exists
函数。
os.path.basename()
os.path.basename()
是 Python 中的一个函数,用于返回指定路径的基础名。基础名是路径中最后的文件名或目录名。也就是说,它会从完整路径中剥离所有的目录部分,只返回文件名或末尾的目录名。
这个函数是 os.path
模块的一部分,该模块为文件路径名操作提供了多个功能。
用法
import os
print(os.path.basename("/home/user/documents/file.txt"))
输出:
file.txt
再看一个例子,如果我们只给出一个目录路径:
print(os.path.basename("/home/user/documents/"))
输出:
documents
如果路径的末尾是一个斜杠(或在 Windows 上是反斜杠),则它将返回末尾的目录名。
注意
-
os.path.basename()
只对路径字符串进行操作,它不检查文件系统以确定给定路径是否真的存在。
- 如果你只提供一个文件或目录的名字,没有前置的路径,那么
basename
会返回该名字本身。例如,os.path.basename("file.txt")
将返回 "file.txt"
。
- 如果路径是空字符串,则返回值也是空字符串。