如何使用复制文件shutil收到了吗?

2024-09-30 02:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在扫描文件夹及其子文件夹,以查找具有以下特定格式的文件:saving_0.0000000.gz。有包含数百个这些文件的文件夹,我想提取名称中具有最大数值的文件。例如,如果在一个文件夹中有saving_0.0000000.gzsaving_100.00000.gzsaving_250.00000.gz,我希望程序只复制saving_250.00000.gz文件。你知道吗

我编写的程序似乎能够正确地遍历父文件夹(使用os.walk),并找到正确的文件(我使用调试器进行了检查)。因此,我将感兴趣的文件名(即saving_123456.78.gz)存储在fichier变量中,但是当我执行程序时,它复制的文件比我需要的多得多。我尝试将shutil.copy从最后一个for循环中移出(这样它就不会复制每个文件),但收到一条错误消息:

FileNotFoundError: [Errno 2] No such file or directory: '/path/to/saving_0.0000000.gz'
#! /usr/bin/python3.4

import re, os, shutil, gzip

sauvegarde = '/mnt/desto/Sauvegardes_archivees'
dossier = '/mnt/desto/EPS2_900_V5/'
matrices = ['subfolder_1', 'subfolder_2', 'subfolder_3']

for mat in matrices:
    for folders, subfolders, files in os.walk(dossier + mat):
        fichier = 'saving_0.0000000.gz'
        for file in files:
            f = fichier.split('_')[1].split('.')[0]
            if not file.startswith('saving_') or not file.endswith('.gz') or not len(file) == 19:
                continue
            hgz_sauv = file.split('_')[1]
            h_sauv = hgz_sauv.split('.')[0]
            if len(h_sauv) >= len(f) and int(h_sauv) >= int(f):
                fichier = file
            shutil.copy(os.path.join(dossier,mat,folders,fichier),sauvegarde)

Tags: or文件文件夹forosfilesplitgz

热门问题