• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果你调用 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
    
    • 1
    • 2
    • 3
    • 4
    • 5

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

    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'
    
    • 1
    • 2
    • 3
    • 4

    在 Windows 上:

    import os
    
    path = os.path.join("folder1", "folder2", "file.txt")
    # 输出:'folder1\\folder2\\file.txt'
    
    • 1
    • 2
    • 3
    • 4

    特性

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

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

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

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

      在 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"))
    
    • 1
    • 2
    • 3

    输出:

    file.txt
    
    • 1

    再看一个例子,如果我们只给出一个目录路径:

    print(os.path.basename("/home/user/documents/"))
    
    • 1

    输出:

    documents
    
    • 1

    如果路径的末尾是一个斜杠(或在 Windows 上是反斜杠),则它将返回末尾的目录名。

    注意

    1. os.path.basename() 只对路径字符串进行操作,它不检查文件系统以确定给定路径是否真的存在。
    2. 如果你只提供一个文件或目录的名字,没有前置的路径,那么 basename 会返回该名字本身。例如,os.path.basename("file.txt") 将返回 "file.txt"
    3. 如果路径是空字符串,则返回值也是空字符串。
  • 相关阅读:
    【软件测试】编写测试用例的方法,这个是真的很好用
    PyTorch 迭代器读取数据
    pytorch无法使用cuda
    手把手带你玩转Spark机器学习-使用Spark进行数据降维
    C#语法知识之变量
    简述《华为数据之道》
    openstack 云主机 linux报 login incorrect
    多线程与高并发编程
    一文了解 Go 接口
    UJNOJ_1307: 数独 [for ACMer]_模拟
  • 原文地址:https://blog.csdn.net/weixin_43844521/article/details/132627633