这是我的困境。我想使用python递归遍历目录并将所有文件重命名为该文件夹的名称。我知道在使用各种编程(第三方软件,bash,windows命令行,perl)中已经被要求了很多(用于;追加,更改文本/扩展名),但我真的想在python中完成这项工作,我希望文件夹名称完全替换文件名。
我理解" dirname"在下面的代码中是文件夹名称,理想情况下我可以替换它:
dest = root + '/' + dirname + file
为此,假设#extension = os.path.splitext(file)[1]
dest = root + '/' + dirname + extension
我不明白为什么这个替换不起作用。当我删除"文件"参考,我收到一个错误,告诉我这个文件已经存在。我也试过切片(文件[:10]),如果你确切地知道你需要替换多少个字符(我想限制硬编码),这是有效的。
目前:
C:\数据\ FolderA \ foo.txt的
C:\数据\ FolderB中\ foo.txt的
代码编写
C:\数据\ FolderA \ FolderAfoo.txt
C:\数据\ FolderB中\ FolderBfoo.txt
我需要什么
C:\数据\ FolderA \ FolderA.txt
C:\数据\ FolderB中\ FolderB.txt
import os
import ntpath
path = "C:\data"
#recursively walk through the directory to find folders
for root, dir, files in os.walk(path):
#walk through the folders to find files
for file in files:
dirname = ntpath.basename(root)
#original location
ori = root + '/' + file
#From location, adding the dirname ("FolderA") before the file name
dest = root + '/' + dirname + file
os.rename(ori, dest)
答案 0 :(得分:0)
height contraint
答案 1 :(得分:0)
尝试以下方法:
import os
path = r"c:\data"
for path, sub_directories, files in os.walk(path):
directory_name = os.path.split(path)[1]
for file in files:
extension = os.path.splitext(file)[1]
source = os.path.join(path, file)
destination = os.path.join(path, directory_name + extension)
os.rename(source, destination)
答案 2 :(得分:0)
这应该很简单:
dest = root +'/'+ dirname +“/”+ dirname