复制目录中具有特定日期的文件

时间:2019-01-29 12:06:06

标签: python python-3.7

我要复制具有特定日期的文件。我可以过滤出日期。复制会出现问题。

import os
from os import walk
import time
from datetime import date, timedelta
import zipfile
import io
import shutil

src = 'K:\\Userfiles'
dest = 'L:\\Userfiles'
date1 = date.today() - timedelta(2)

for root, dirs, files in os.walk(src):

  for file in files:
      if ( 'zip' in file):
        x = file[-18:-8]
        d = date1.strftime('%Y-%m-%d')
        if x == d:

            shutil.copyfile(file, dest)
  

错误是: FileNotFoundError:[Errno 2]没有这样的文件或目录。

     

回溯(最近通话最近):
  将文件“ C:/Python37/datetime_finder.py”第28行放在shutil.copyfile(file,'K:\ Userfiles \ Ucar \ UNZIP')中
  文件“ C:\ Python37 \ lib \ shutil.py”,行120,在复制文件中,打开(src,'rb')为fsrc:FileNotFoundError:[Errno 2]无此类文件或目录:'getContents_2019- 01-27.csv.zip

3 个答案:

答案 0 :(得分:1)

取自https://docs.python.org/3/library/shutil.html#shutil.copyfile

  

by()

     

将名为 shutil.copyfile(src, dst, *, follow_symlinks=True) 的文件的内容(无元数据)复制到名为 src 的文件中,并返回 {{1 }} dst dst 是以字符串形式给出的路径名。 src 必须是完整的目标文件名;在shutil.copy()中查找接受目标目录路径的副本。

答案 1 :(得分:0)

如果我没记错的话,您会在内部dest循环中缺少设置for的值,所以shutil.copyfile会失败,因为''(空字符串)没有意义作为第二个论点。另外,如果您只想复制.zip个文件,最好使用:

if file.endswith('zip'):

代替

if ('zip' in file):

(例如,True也是'my_list_of_zip_files.txt',也请注意区分大小写,因此最好使用以下if

if file.lower().endswith('zip'):

答案 2 :(得分:0)

此行shutil.copyfile(file, dest)中出现错误

提及完整路径应该可以解决此问题。

例如:

shutil.copyfile(os.path.join(root, file), ".")