我要复制具有特定日期的文件。我可以过滤出日期。复制会出现问题。
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
答案 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), ".")