Python 根据文件所在的整个文件夹结构重命名文件
基本上,我想写一个程序,这个程序将采用一个目录,其中有一个很大的文件分支和子文件夹,我想根据它们所在的整个目录结构对它们进行重命名,基本上是这样的 主文件夹|子文件夹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)的Python 根据文件所在的整个文件夹结构重命名文件,python,python-3.x,Python,Python 3.x,基本上,我想写一个程序,这个程序将采用一个目录,其中有一个很大的文件分支和子文件夹,我想根据它们所在的整个目录结构对它们进行重命名,基本上是这样的 主文件夹|子文件夹1 |子文件夹|子文件夹|文件=>随机名称 |_______________子文件夹2\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu |________________________子文件夹3\uuuuuuuu
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时得到的就是这个是的,它返回一个生成器对象,请阅读