【用python将文件夹下面的文件夹里面的文件全部提取出来,并且放到一个新的文件夹】

文件里面有多个文件,每个文件下面有很多jpg格式的照片,把所有照片提取出来并且放在一个新的文件夹下面。

可以使用Python的os和shutil库来完成这个任务。
比如说:我的faces95文件夹下面有95个文件,每个文件下面有十七到十八个照片不等。
在这里插入图片描述
在这里插入图片描述
把所有照片提取出来可以用以下python代码:

import os
import shutil

# 设置原始文件夹和目标文件夹
data_folder = 'C:\\Users\\ljx\\Desktop\\Images'
photo_folder = 'C:\\Users\\ljx\\Desktop\\new_images'

# 创建目标文件夹
if not os.path.exists(photo_folder):
    os.makedirs(photo_folder)

# 遍历所有文件夹
for root, dirs, files in os.walk(data_folder):
    for file in files:
        # 如果文件是jpg文件
        if file.endswith('.jpg'):
            # 构造原始文件路径和目标文件路径
            src_path = os.path.join(root, file)
            dst_path = os.path.join(photo_folder, file)
            # 复制文件到目标文件夹
            shutil.copyfile(src_path, dst_path)

需要修改的地方:
在这里插入图片描述
data_folder = ''中的改为自己的需要提取的文件路径
photo_folder = ''中的改为自己的需要放置的文件路径,默认是新建文件,自己新建也可以

# 设置原始文件夹和目标文件夹
data_folder = 'C:\\Users\\ljx\\Desktop\\faces95'
photo_folder = 'C:\\Users\\ljx\\Desktop\\new_images'

在这里插入图片描述
跑出来的结果在指定的文件路径中查看,比如我的在桌面上,就是
在这里插入图片描述
如果文件较大,需要的python运行时间会更长一点,需要耐心等待。
如果你想复制其他类型的文件,你可以更改if file.endswith(‘.jpg’)这一行的条件,就可以了。

如果是csv
可以使用Python的pandas库来进行这个任务。首先,确保你已经安装了pandas库。如果还没有安装,可以使用以下命令安装:

pip install pandas

接下来,你可以使用以下代码来批量提取文件夹下的CSV文件,根据列索引提取特定几列,并将提取后的数据保存到新建的一个文件夹。在代码中,input_folder是包含CSV文件的文件夹路径,output_folder是保存提取后数据的文件夹路径,columns_to_extract是一个包含你想要提取的列索引的列表。

import os
import pandas as pd

# 输入文件夹路径
input_folder = 'path/to/input/folder'

# 输出文件夹路径
output_folder = 'path/to/output/folder'

# 要提取的列索引
columns_to_extract = [0, 2, 4]  # 例如,提取第0列,第2列,第4列

# 确保输出文件夹存在,如果不存在则创建
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 遍历输入文件夹下的所有文件
for filename in os.listdir(input_folder):
    if filename.endswith('.csv'):
        # 构建输入文件的完整路径
        input_file_path = os.path.join(input_folder, filename)
        
        # 读取CSV文件
        df = pd.read_csv(input_file_path)
        
        # 提取特定列
        extracted_data = df.iloc[:, columns_to_extract]
        
        # 构建输出文件的完整路径
        output_file_path = os.path.join(output_folder, f'extracted_{filename}')
        
        # 保存提取后的数据到新文件中
        extracted_data.to_csv(output_file_path, index=False)
        
        print(f'文件 {filename} 处理完成,提取后的数据已保存到 {output_file_path}')

在这个代码中,os.listdir(input_folder)会列出输入文件夹下的所有文件,然后通过判断文件扩展名为.csv来确定是CSV文件。对于每个CSV文件,使用pd.read_csv()函数读取数据,然后使用.iloc[]方法根据列索引提取特定列。提取后的数据保存在新文件中,文件名前面加上extracted_前缀,以示区分。

请替换input_folder和output_folder的值为你实际的文件夹路径,并根据需要修改columns_to_extract列表,以提取你想要的特定列。

总结

在处理包含多个文件夹和大量jpg格式照片的任务时,我们可以使用Python的os和shutil库来实现。首先,我们需要设置原始文件夹路径和目标文件夹路径。在代码中,我们使用了os.walk()函数来遍历所有文件夹和文件。对于每个文件,我们检查其是否为jpg格式,如果是,则复制到目标文件夹中。

首先,我们创建了一个目标文件夹,确保它存在。然后,我们使用os.walk()遍历了原始文件夹中的所有文件夹和文件。在每个文件中,我们检查文件的扩展名是否为.jpg,如果是,则构造原始文件路径和目标文件路径,并使用shutil.copyfile()函数将文件复制到目标文件夹中。

在代码中,你需要修改data_folder和photo_folder的值,将它们分别设置为原始文件夹的路径和目标文件夹的路径。这样,代码就能够在指定的文件夹中提取所有jpg格式的照片,并将它们复制到新的文件夹中。

如果你需要处理其他类型的文件,只需要修改if file.endswith(‘.jpg’)这一行的条件为你想要处理的文件类型即可。这个脚本提供了一个灵活且高效的方法,可以处理包含大量文件的文件夹,确保你的数据得以整理和备份。

需要注意的是,如果文件较大,可能需要一些时间来处理,因此请耐心等待。通过这种方式,你可以方便地整理和处理大规模的文件,提高了工作效率。