quffoon 发表于 2023-10-9 11:53:38

文件归集问题

文件需要归集,路径为“Z:\1\2\4K\待分”,文件存于各个文件夹中,格式为“.mp4",每个文件夹里都有文件的描述文本“新建文本文档.txt”,根据文本中的一个属性“出演者”,在另外一个位置"Z:\1\2\4K\",新建以该属性命名的文件夹,并将文件移入其中,比如文件的属性为“出演者:大白”,则在对应位置新建文件夹“大白”,该属性位于描述文件”新建文本文档.txt"的第4行,如何实现

以下是用百度AI助手的问答:


描述文本是这样的:

Mike_python小 发表于 2023-10-9 11:53:39

根据您的描述,您需要将位于路径 "Z:\1\2\4K\待分" 下的文件归集到另一个位置 "Z:\1\2\4K\"。归集的目标位置是以文件描述文本中的属性 "出演者" 命名的文件夹。

以下是实现这个功能的Python代码:


import os

source_dir = r"Z:\1\2\4K\待分"
target_dir = r"Z:\1\2\4K\"

# 遍历源文件夹
for root, dirs, files in os.walk(source_dir):
    for file in files:
      if file.endswith(".mp4"):
            # 读取文件描述文本
            description_path = os.path.join(root, "新建文本文档.txt")
            if not os.path.exists(description_path):
                continue

            with open(description_path, "r") as f:
                lines = f.readlines()
                # 获取属性行的内容
                performer_line = next((line for line in lines if line.startswith("出演者")), None)
            
            if performer_line is not None:
                performer = performer_line.split(":").strip()
                # 根据属性创建目标文件夹
                performer_dir = os.path.join(target_dir, performer)
                os.makedirs(performer_dir, exist_ok=True)

                source_file_path = os.path.join(root, file)
                target_file_path = os.path.join(performer_dir, file)
                # 移动文件到目标文件夹
                os.rename(source_file_path, target_file_path)


请将代码中的 source_dir 和 target_dir 修改为实际的路径。

这段代码使用了 os.walk() 函数来遍历源文件夹中的文件和子文件夹。对于每个文件,它会首先判断文件是否以 ".mp4" 结尾,如果是,则读取对应的文件描述文本。然后,在描述文本中找到属性行 "出演者",提取出属性的值。接下来,根据属性的值创建目标文件夹,并将文件移动到目标文件夹中。

注意,通过 os.makedirs(performer_dir, exist_ok=True) 创建目标文件夹时,设置 exist_ok=True 可以避免在目标文件夹已存在的情况下产生错误。

希望这个代码可以帮助到您。如有需要,请根据实际情况进行调整。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-10-9 11:54:24

这个问题需要编写一个程序来实现。可以使用Python中的os和shutil模块来操作文件和文件夹。

首先,需要遍历“Z:\1\2\4K\待分”路径下的所有文件夹,找到每个文件夹中的描述文本“新建文本文档.txt”,并读取其中的属性“出演者”。

然后,需要在“Z:\1\2\4K\”路径下新建以该属性命名的文件夹,可以使用os模块的mkdir函数来实现。

最后,将该文件夹中的所有“.mp4”格式的文件移动到新建的文件夹中,可以使用shutil模块的move函数来实现。

以下是实现该功能的Python代码示例:

import os
import shutil

source_dir = r'Z:\1\2\4K\待分'
target_dir = r'Z:\1\2\4K\'

for foldername, subfolders, filenames in os.walk(source_dir):
    for filename in filenames:
      if filename == '新建文本文档.txt':
            with open(os.path.join(foldername, filename), 'r', encoding='utf-8') as f:
                lines = f.readlines()
                for line in lines:
                  if line.startswith('出演者:'):
                        actor = line.strip().replace('出演者:', '')
                        target_folder = os.path.join(target_dir, actor)
                        if not os.path.exists(target_folder):
                            os.mkdir(target_folder)
                        for mp4_file in filenames:
                            if mp4_file.endswith('.mp4'):
                              shutil.move(os.path.join(foldername, mp4_file), os.path.join(target_folder, mp4_file))


该代码会遍历“Z:\1\2\4K\待分”路径下的所有文件夹,找到每个文件夹中的描述文本“新建文本文档.txt”,并读取其中的属性“出演者”。然后,它会在“Z:\1\2\4K\”路径下新建以该属性命名的文件夹,并将该文件夹中的所有“.mp4”格式的文件移动到新建的文件夹中。
页: [1]
查看完整版本: 文件归集问题