在Python中重命名目录和子目录中的文件

3
我有一些在Python脚本中处理的文件。最新的要求是,我需要进入文件将要放置的目录,并按照添加日期时间戳和项目名称到文件名开头的方式重命名所有文件,同时保留原始名称。
例如,foo.txt 变成 2011-12-28_projectname_foo.txt
构建新标签很容易,只是重命名过程让我感到困惑。

你看过os.walk()了吗? - cdhowie
3
将目录重命名会更容易...这样它就可以将您(您的经理)指向正确的项目/日期...而不需要通过几乎相同的命名方式使任何人在目录中找到任何东西变得过于困难。 - Ben
不会的。这些文件需要以这种方式命名。 - misterjones
3个回答

7

您能分享一下您尝试过的内容吗?

我认为您只需要使用os.walkos.rename

可以像这样实现:

import os
from os.path import join

for root, dirs, files in os.walk('path/to/dir'):
    for name in files:
        newname = foo + name
        os.rename(join(root,name),join(root,newname))

1
import os

dir_name = os.path.realpath('ur directory')

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

如果一个文件夹中有更多的文件,并且我们需要为这些文件提供增量值,那么就需要考虑一下。


1

我知道这是我之前发布的旧帖子,但考虑到它已经被浏览了很多次,我想我会发表我解决这个问题所做的事情。

import os

sv_name="(whatever it's named)"
today=datetime.date.today()
survey=sv_name.replace(" ","_")
date=str(today).replace(" ","_")
namedate=survey+str(date)

[os.rename(f,str(namedate+"_"+f)) for f in os.listdir('.') if not f.startswith('.')]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接