Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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_Python 3.x - Fatal编程技术网

Python 根据文件所在的整个文件夹结构重命名文件

Python 根据文件所在的整个文件夹结构重命名文件,python,python-3.x,Python,Python 3.x,基本上,我想写一个程序,这个程序将采用一个目录,其中有一个很大的文件分支和子文件夹,我想根据它们所在的整个目录结构对它们进行重命名,基本上是这样的 主文件夹|子文件夹1 |子文件夹|子文件夹|文件=>随机名称 |_______________子文件夹2\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu |________________________子文件夹3\uuuuuuuu

基本上,我想写一个程序,这个程序将采用一个目录,其中有一个很大的文件分支和子文件夹,我想根据它们所在的整个目录结构对它们进行重命名,基本上是这样的

主文件夹|子文件夹1 |子文件夹|子文件夹|文件=>随机名称 |_______________子文件夹2\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu |________________________子文件夹3\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文件=>随机名称 |_________________________________子文件夹4_________;文件=>随机 名称 |__________________________________________子文件夹5\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文件=>随机名称

主文件夹|子文件夹1文件=>主文件夹子文件夹1 名称|子文件夹2 ______;文件=>主文件夹子文件夹1子文件夹2 随机名称|子文件夹3 ______;文件=>主文件夹子文件夹1 子文件夹3随机名称|子文件夹4 _______;文件=>主文件夹 子文件夹1子文件夹3子文件夹4随机名称 |子文件夹5文件=>主文件夹子文件夹1子文件夹3 子文件夹4子文件夹5随机名称

它需要递归,所以需要迭代,需要从单个文件的位置来考虑,因为它们需要被1 1重命名。目前,我只是让它通过复制,然后一次重命名所有文件,将文件从一个目录移动到另一个目录,但我需要它执行,并以1 1 1重命名,所以万一失败,我没有一堆未命名的文件重命名文件夹中的文件,我需要删除,但可以在修复任何导致问题的原因后再次启动程序

我知道我可以使用glob.glob对文件名进行爬网,当我打印文件时,它返回的文件很好,但与使用os.listdir(path)的
path=''不同,它根本不重命名文件


第1部分重命名文件夹复制到新目录Python

import os
import shutil
import multiprocessing
import multiprocessing.pool
import time
import random
import sys
import os.path
import copy

t = random.randrange(0, 10000000, 1)

Input_folder = r'D:\OneDrive\renders\training data' + '\\'
dir_file_names = os.mkdir("D:\\OneDrive\\renders\\output" + str(t))
output_folder = os.chdir("D:\\OneDrive\\renders\\output" + str(t))
out = os.path.basename("D:\\OneDrive\\renders\\output" + str(t))


os.chdir("D:\\OneDrive\\renders\\output" + str(t))

os.getcwd()

os.mkdir('mkdir BACKUP')

f = open(str(out) + " " + "test.txt", "x")
f.write("Woops! I have deleted the content!")
f.close()

new_folder = shutil.copytree(r'D:\OneDrive\renders\training data', out,)

new_folder = os.chdir("D:\\OneDrive\\renders\\output" + str(t) + "\\output" + str(t))

i = 0


for file in os.listdir(new_folder):
    n = random.randrange(0, 10000000, 1)
    new_file_name = str(n) + " " + str(file) +".jpg"
    os.rename(file, new_file_name)

    i = i +1
_________________________________________________________________________________________________________
Attempt at renaming

import os
import glob
import random

path = 'D:\Training Data Test Folder'
i = 0
i2 = random.randrange(0, 10000000, 1)

for extension in glob.glob(path):
    i = 1

printglob = glob.glob(path)
print(printglob)

walk = glob.glob(path)
print(walk)

#for filename in os.listdir(path):
#    os.rename(os.path.join(walk,filename), os.path.join(walk, str(i2) + ' ' + str(i) +'.jpg'))
#    i = i +1

for number, filename in enumerate(glob(path + r"\*.txt")):
        try:
            os.rename(filename, "Picture_{0}".format(number))
        except OSError as e:
            print("Something happened:", e)

#for filename in os.listdir(printglob):
#    os.rename(os.path.join(printglob,filename), os.path.join(printglob,'hexa'+str(i2)+'.jpg'))
#    i2 = i2 +1

使用os.walk。它就是为了这个目的而建立的。@Sekuraz我打印os.walk时得到的就是这个是的,它返回一个生成器对象,请阅读