【问题标题】:Trouble Extracting Directory Name from Path从路径中提取目录名称时遇到问题
【发布时间】:2017-05-18 18:17:59
【问题描述】:

假设我有一条路径 A。

A = /Users/myname/Documents/folder1

folder1内有folder2和folder3,folder2和folder3内有名为“file.txt”的文件。我想遍历folder1中的每个子目录,并将“file.txt”替换为“folder[#]_file.txt”(子目录的名称+“file.txt”)。

我有以下代码:

import os, sys

def main():
    path = "/Users/myname/Documents/folder1/"
    for root, subdirs, files in os.walk(path):
        root = root + "/" 
        parent_directory = os.path.dirname(root)
        for filename in os.listdir(parent_directory):
            if filename.endswith("file.txt"):
                path = os.path.join(parent_directory, filename)
                target = os.path.join(root, parent_directory + "_" + filename) //I know this is where the issue is...not sure what to do.
                os.rename(path, target)

if __name__ == '__main__':
    main()

但是,使用打印语句,我看到路径设置为:

/Users/myname/Documents/folder1/folder2/file.txt

目标设置为:

/Users/myname/Documents/folder1/folder2_file.txt

而不是

/Users/myname/Documents/folder1/folder2/folder2_file.txt

我该如何解决这个问题?我已经确定了我的代码中的错误行,并且我知道它为什么会这样做,但我不确定如何调整它。

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用os.path.basename 从路径字符串中获取最后一个目录。然后,您可以在文件名前面加上它。因此,将您设置的target 的行切换为以下内容:

    target = os.path.join(path, root + os.path.basename(parent_directory) + "_" + filename)
    

    【讨论】:

      猜你喜欢
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2019-02-23
      相关资源
      最近更新 更多