【问题标题】:Create file path from variables从变量创建文件路径
【发布时间】:2011-04-14 16:38:18
【问题描述】:

我正在寻找一些关于使用变量生成文件路径的最佳方法的建议,目前我的代码类似于以下内容:

path = /my/root/directory
for x in list_of_vars:
        if os.path.isdir(path + '/' + x):  # line A
            print(x + ' exists.')
        else:
            os.mkdir(path + '/' + x)       # line B
            print(x + ' created.')

对于如上所示的 A 行和 B 行,是否有更好的方法来创建文件路径,因为我深入研究目录树会变得更长?

我设想一个现有的内置方法如下使用:

create_path(path, 'in', 'here')

生成/my/root/directory/in/here 形式的路径

如果没有内置函数,我就自己写一个。

感谢您的任何意见。

【问题讨论】:

    标签: python path


    【解决方案1】:

    您还可以使用带有pathlib 的面向对象的路径(从 Python 3.4 开始作为标准库提供):

    from pathlib import Path
    
    start_path = Path('/my/root/directory')
    final_path = start_path / 'in' / 'here'
    

    【讨论】:

      【解决方案2】:

      你想要来自 os.path 的 path.join() 函数。

      >>> from os import path
      >>> path.join('foo', 'bar')
      'foo/bar'
      

      这将使用 os.sep(而不是不太便携的 '/')构建您的路径,并且比使用 + 更有效(通常)。

      但是,这实际上不会创建路径。为此,您必须做一些类似于您在问题中所做的事情。你可以这样写:

      start_path = '/my/root/directory'
      final_path = os.join(start_path, *list_of_vars)
      if not os.path.isdir(final_path):
          os.makedirs (final_path)
      

      【讨论】:

        【解决方案3】:

        是的,有这样一个内置函数:os.path.join

        >>> import os.path
        >>> os.path.join('/my/root/directory', 'in', 'here')
        '/my/root/directory/in/here'
        

        【讨论】:

        • 这个可以包含文件名的扩展部分吗?最后得到类似的东西:'/my/root/directory/in/here.ext'
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        • 2021-12-23
        • 2012-03-13
        • 2012-11-22
        • 1970-01-01
        • 2023-03-04
        相关资源
        最近更新 更多