gpt4 book ai didi

python - 如何将多个文件夹中相似命名的文件合并到每个文件名的一个文件夹中

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:03 25 4
gpt4 key购买 nike

我有 400 个文件夹。在每个文件夹中,还有 3 个额外的文件夹我必须深入研究,然后在最后一个文件夹中我有 22 个不同的文件。这 400 个文件夹中的每一个都具有相同的命名文件。最终,我想创建 22 个文件夹,每个文件名一个,在 22 个文件夹中的每个文件夹中,我只需要具有相同名称的文件。由于一个文件夹不能有两个同名的文件,所以将文件路径的最后6个字符添加到文件名中可以​​解决这个问题。

使用下图作为文件示例:

I need an ACO folder with 400 files all of which are labeled i.e., "ACO050168", "ACO150074", "ACO150128"
I need an BDUAL folder with 400 files all of which are labeled BDUAL i.e., "BDUAL050168", "BDUAL150074", "BDUAL150128"
etc..

这里以文件路径为例,注意最后一个文件夹和倒数第四个文件夹是唯一的

 'C:\\Users\\MBobak\\Documents\\Loop\\Raw Claims Data 050168\\D#CJR\\Y2018M02\\P050168',
'C:\\Users\\MBobak\\Documents\\Loop\\Raw Claims Data 150074\\D#CJR\\Y2018M02\\P150074',
'C:\\Users\\MBobak\\Documents\\Loop\\Raw Claims Data 150128\\D#CJR\\Y2018M02\\P150128'

每个文件夹中的 22 个文件的结构为 .csv,但没有 .csv 扩展名。它们只是文件。我附上了一张图片来展示它的样子。 enter image description here

我知道有一些方法可以在命令行中执行此操作,但我找不到这个问题的具体示例,因为每个初始文件夹都有深入研究。

我试图在 python 中执行此操作,并且我在 python 中编写了一个小脚本来查找包含 22 个文件的最终目录:

all_files_dir = r'C:\Users\MBobak\Documents\Loop'

folders = os.listdir(all_files_dir)
ccn_list = [x[-6:] for x in folders]

ccn_file_dir = [r'C:\Users\MBobak\Documents\Loop\Raw Claims Data ' + x + '\D#CJR\Y2018M02\P' + x for x in ccn_list]

但现在我无法将它们复制/移动到新文件夹中。

最佳答案

所以 - 没有足够的声誉来评论和询问更多信息。对我来说,听起来您在要复制到同一目标文件夹的结构底部有相似的文件名?

也就是说,您希望所有 ACO 文件都位于名为 ACO 的文件夹中???一个文件夹中只能有一个同名文件。

所以第一个版本实际上会覆盖目标文件夹中任何类似命名的文件。你能说清楚你真正需要的是什么吗?即目标文件夹内容和文件名的示例。

# folder.py
import os
import sys
import platform
import shutil

walk_dir = sys.argv[1]

if platform.system() == 'Windows':
delimiter = '\\'
else:
delimiter = '/'

print('walk_dir = ' + walk_dir)
print('walk_dir (absolute) = ' + os.path.abspath(walk_dir))

for root, subdirs, files in os.walk(walk_dir):
print('--\ncurrent = ' + root)

for filename in files:
file_path = os.path.join(root, filename)

print('\t- file %s (full path: %s)' % (filename, file_path))
target_name = root[root.rfind(delimiter)+2:len(root)]
if not os.path.isdir(filename):
os.mkdir(filename)
target = filename + delimiter + filename + target_name
shutil.copy2(file_path,target)

这样调用它:

C:\\Users\\MBobak\\Documents\\python folder.py Loop

如果你能给我更多的信息,我也许能给你一个更好的答案。

关于python - 如何将多个文件夹中相似命名的文件合并到每个文件名的一个文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50160676/

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