2017-05-18 57 views
1

解压目录下的名称比方说,我有一个路径A.麻烦从路径

A = /用户/ MYNAME /文件/文件夹1

在文件夹1,有文件夹2和folder3,并在文件夹2和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() 

使用print语句,然而,我看到路径设置为:

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

和目标设定为:

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

而不是

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

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

回答

0

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

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