• 5.11 文件路径名的操作
    • 问题
    • 解决方案
    • 讨论

    5.11 文件路径名的操作

    问题

    你需要使用路径名来获取文件名,目录名,绝对路径等等。

    解决方案

    使用 os.path 模块中的函数来操作路径名。下面是一个交互式例子来演示一些关键的特性:

    1. >>> import os
    2. >>> path = '/Users/beazley/Data/data.csv'
    3.  
    4. >>> # Get the last component of the path
    5. >>> os.path.basename(path)
    6. 'data.csv'
    7.  
    8. >>> # Get the directory name
    9. >>> os.path.dirname(path)
    10. '/Users/beazley/Data'
    11.  
    12. >>> # Join path components together
    13. >>> os.path.join('tmp', 'data', os.path.basename(path))
    14. 'tmp/data/data.csv'
    15.  
    16. >>> # Expand the user's home directory
    17. >>> path = '~/Data/data.csv'
    18. >>> os.path.expanduser(path)
    19. '/Users/beazley/Data/data.csv'
    20.  
    21. >>> # Split the file extension
    22. >>> os.path.splitext(path)
    23. ('~/Data/data', '.csv')
    24. >>>

    讨论

    对于任何的文件名的操作,你都应该使用 os.path 模块,而不是使用标准字符串操作来构造自己的代码。特别是为了可移植性考虑的时候更应如此,因为 os.path 模块知道Unix和Windows系统之间的差异并且能够可靠地处理类似 Data/data.csvData\data.csv 这样的文件名。其次,你真的不应该浪费时间去重复造轮子。通常最好是直接使用已经为你准备好的功能。

    要注意的是 os.path 还有更多的功能在这里并没有列举出来。可以查阅官方文档来获取更多与文件测试,符号链接等相关的函数说明。

    原文:

    http://python3-cookbook.readthedocs.io/zh_CN/latest/c05/p11_manipulating_pathnames.html