【问题标题】:Rename a folder with source folder name matched by wildcard ("*")重命名源文件夹名称与通配符(“*”)匹配的文件夹
【发布时间】:2015-07-16 08:36:59
【问题描述】:

我有一个名为“abcd-1”的本地文件夹,我想做这样的事情:

import os
os.rename("abcd*", "abcd")

我知道只有一个这样的文件夹,所以这是一个有效的操作,但它看起来不像 os.rename 支持 *。我该如何解决?

【问题讨论】:

    标签: python rename wildcard


    【解决方案1】:

    glob

    >>> import os, glob
    >>> for f in glob.glob("abcd*"):
    ...   os.rename(f, "abcd")
    ... 
    >>> 
    
    1. 检查是否只有一个结果或使用glob.glob("abcd*")[0] 获得第一个结果。
    2. 使用os.path.isdir()判断是否为目录

    【讨论】:

      【解决方案2】:

      您可以使用 globos.path.isdir() 函数(判断是否为目录)的组合,然后使用 os.rename() 重命名实际文件。

      例子-

      import glob
      import os
      import os.path
      lst = glob.glob("abcd")
      for element in lst:
          if os.path.isdir(element):
              os.rename(element,"abcd")
      

      【讨论】:

      • 谢谢。而且我认为 Python 使自动化变得容易......也许用 C++ 编写它也是如此。
      • 嗯,我认为它的代码量仍然比 c++ 少,对吧?
      • 如果我使用 Qt 或 boost 框架,则大致相同,如果不完全相同。但是你说得对,标准 C++ 库还没有文件系统模块。
      • 是的,globos 是 python 中的标准库。
      【解决方案3】:

      使用 glob 模块

      例如

      glob.glob("abcd*")

      将返回 ["abcd-1"] 然后你可以重命名文件夹 您可能应该使用断言语句来确保只有 1 个结果

      【讨论】:

      • 小问题:如何区分文件和文件夹?有多个匹配项,只有一个是文件夹。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-06
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 2021-05-24
      • 1970-01-01
      相关资源
      最近更新 更多