gpt4 book ai didi

python - 将相应文件排序到同一目录

转载 作者:行者123 更新时间:2023-12-04 15:13:05 27 4
gpt4 key购买 nike

我有 6 个目录(A、B、C、D、E、F)包含 .mov 文件。

结构是:

一个

-0001_01.mov

-0002_01.mov

-...

B

-0001_02.mov

-0002_02.mov

-...

等等。

首先,我想创建与上述目录之一中的文件一样多的目录。假设 A 包含 35 个 .mov 文件(B、C .. 包含相同数量的 .mov 文件)。我现在有 35 个文件夹,从“01”到“35”。

现在我想将每个相应的 .mov 文件复制到同一目录中,这意味着 0001_01.mov - 0001_06.mov 进入“01”,0002_01.mov - 0002_06.mov 进入“02”等等。

我已经创建了目录,但我无法理解复制部分。

import os

pathA = ("./A/")
pathB = ("./B/")
pathC = ("./C/")
pathD = ("./D/")
pathE = ("./E/")
pathF = ("./F/")

path, dirs, filesA = next(os.walk(pathA))
file_countA = len(filesA)
path, dirs, filesB = next(os.walk(pathB))
file_countB = len(filesB)
path, dirs, filesC = next(os.walk(pathC))
file_countC = len(filesC)
path, dirs, filesD = next(os.walk(pathD))
file_countD = len(filesD)
path, dirs, filesE = next(os.walk(pathE))
file_countE = len(filesE)
path, dirs, filesF = next(os.walk(pathF))
file_countF = len(filesF)

path2 = ("./")

if file_countA == file_countB == file_countC == file_countD == file_countE == file_countF:
print("true")
else:
print ("false")

for i in range(file_countA):
try:

if i < 9:
os.mkdir(path2 + "0" + str(i + 1))
path3 = ("./" + "0" + str(i + 1))
print (path3)

elif i >= 9:
os.mkdir(path2 + str(i + 1))
path3 = ("./" + str(i + 1))
print (path3)

except OSError:
print ("Creation of the directory %s failed" % path2)
else:
print ("Successfully created the directory %s " % path2)

这是我第一次使用 python,我认为代码反射(reflect)了这一点。我现在已经在这上面浪费了无数的时间,所以非常感谢任何帮助。

最佳答案

所以我对您的代码做了相当多的更改,并在我的系统上快速测试了它,它似乎可以满足您的要求。您能否尝试让我知道这是否让您了解如何完成?

免责声明:我无论如何都不是 Python 专家,但我找到了解决方法,这很可能不是最漂亮的解决方案,但它在我的机器上完全按照您的要求工作。只需确保从文件夹内运行它,如果不是从文件夹外运行它,则将 cwd = os.getcwd() 更改为 cwd = "path-to-your-文件夹”

import os
import shutil
import glob

paths = ["/A/","/B/","/C/","/D/","/E/","/F/"]

cwd = os.getcwd()
num_folders = 0

for path in paths:
num_files = len([f for f in os.listdir(cwd+path)if os.path.isfile(os.path.join(cwd+path, f))])
if num_files>num_folders:
num_folders = num_files

for i in range(num_folders):
try:
if i < 9:
fname = cwd + "/0" + str(i + 1)
os.mkdir(fname)
for path in paths:
source = cwd + "/" + path
filename = "000{}_*.mov".format(i+1)
for file in glob.glob(os.path.join(source,filename)):
shutil.copy2(file,fname)
elif i >= 9:
fname = cwd + "/" + str(i + 1)
os.mkdir(fname)
for path in paths:
source = cwd + "/" + path
filename = "00{}_*.mov".format(i+1)
for file in glob.glob(os.path.join(source,filename)):
shutil.copy2(file,fname)
except OSError:
pass

关于python - 将相应文件排序到同一目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64859455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com