Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
重命名目录中的子文件夹-python_Python_Batch File_Rename - Fatal编程技术网

重命名目录中的子文件夹-python

重命名目录中的子文件夹-python,python,batch-file,rename,Python,Batch File,Rename,我想使用python重命名目录中的所有子文件夹。我认为这相当容易,但由于我对python和编程都是新手,所以我认为我缺少了一些关键的东西 这是我的文件夹结构:C:\Users\dbaily\Desktop\Here -有两个文件夹名为:3303_InfigenSolar和3304_furnaceanyon -这些文件夹中有4个子文件夹,这些文件夹中有一堆文件 我只想批量重命名3303\u InfigenSolar和3304\u furnaceanyon,这样它们就可以读取3303\u Infig

我想使用python重命名目录中的所有子文件夹。我认为这相当容易,但由于我对python和编程都是新手,所以我认为我缺少了一些关键的东西

这是我的文件夹结构:C:\Users\dbaily\Desktop\Here

-有两个文件夹名为:3303_InfigenSolar和3304_furnaceanyon

-这些文件夹中有4个子文件夹,这些文件夹中有一堆文件

我只想批量重命名3303\u InfigenSolar3304\u furnaceanyon,这样它们就可以读取3303\u InfigenSolar\u 083153304\u furnaceanyon\u 08315

以下是我迄今为止的代码:

now = datetime.datetime.now()
month = "0" + str(now.month)
day = now.day
year1 = str(now.year)
year2 = year1[2:]
date = str(month) + str(day) + str(year2)
newname = fn + "_" + str(date)

dir = 'C:\Users\DBailey\Desktop\Here'
folder = os.listdir(dir)
for fn in folder:
    print newname
    os.rename(fn, newname)
当我运行脚本时-只打印一个文件夹(只有两个文件夹,但将添加更多),我得到以下错误:

Traceback (most recent call last):
  File "<interactive input>", line 2, in <module>
WindowsError: [Error 2] The system cannot find the file specified
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
WindowsError:[错误2]系统找不到指定的文件
您需要:

python正在您的cwd中查找
fn
,您需要使用join告诉python文件的实际位置,除非您的cwd实际上是文件所在的目录

如果要重命名多个目录,还需要确保为循环中的每个目录创建唯一的名称

dte = str(date)
for ind,fn in enumerate(folder,1):
    os.rename(os.path.join(_dir, fn), os.path.join(_dir,"{}_{}".format(dte,ind)))
您可以使用任何您想要区分的文件夹名称,只要确保它们是唯一的。这还假定您只有目录,如果您有文件,则需要检查每个fn是否实际上是一个目录:

dte = str(date)
folder = (d for d in  os.listdir(_dir))
for ind,fn in enumerate(folder,1):
    p1 = os.path.join(_dir, fn)
    if os.path.isdir(p1):
        os.rename(p1, os.path.join(_dir,"{}_{}".format(dte,ind)))

看起来“fn”在newname中引用之前未初始化。 你可能真的不需要newname,只要照Padraic说的做,减去newname:

os.rename(os.path.join(dir,fn), os.path.join(dir, fn + "_" + str(date)))

注意,到目前为止,您的代码和提供的答案将重命名文件,因为您没有对文件夹进行过滤。@ DavidBailey,考虑删除标签,因为这实际上不适用于此。
os.rename(os.path.join(dir,fn), os.path.join(dir, fn + "_" + str(date)))