【问题标题】:python: rename files in subfolders by subfolder namepython:通过子文件夹名称重命名子文件夹中的文件
【发布时间】:2017-07-21 14:44:17
【问题描述】:

我有一个包含很多子文件夹的文件夹。 Eash 的子文件夹有不同类型的文件。我正在尝试通过它们所在的子文件夹名称重命名这些文件(不会重复,因为每个文件都有自己的扩展名)。 数据如下所示:

folder
        \ sub1
        \ sub1\file1.ext1
        \ sub1\file2.ext2
        .
        .
        .
        \ sub2
        \ sub2\file1.ext1
        \ sub2\file2.ext2

期望的输出

  folder
    \ sub1
    \ sub1\sub1.ext1
    \ sub1\sub1.ext2
    .
    .
    .
    \ sub2
    \ sub2\sub2.ext1
    \ sub2\sub2.ext2

`

我的代码不起作用。

import os

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False):
    for file in files:
        file_name = os.path.splitext(file)[0]#file name no ext
        os.rename(os.path.splitext(file)[0], root ) 

有什么想法吗?谢谢。

【问题讨论】:

  • 你试过下面我提供的解决方案了吗?

标签: python os.walk os.path


【解决方案1】:

你可以使用os.path.basename来获取root的目录名。

import os

dir_name = os.getcwd() 

for root, dirs, files in os.walk(dir_name, topdown=False):
    for file in files:
        file_name = os.path.splitext(file)[0]#file name no ext
        extension = os.path.splitext(file)[1]
        dir_name = os.path.basename(root)
        os.rename(root+"/"+file,root+"/"+dir_name+extension)

【讨论】:

  • 非常感谢。这就是我需要的
猜你喜欢
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
相关资源
最近更新 更多