如何将日期和时间添加到使用python shutil创建的文件夹名称?



我试图写一个python脚本,将自动复制文件在我的本地驱动器和我的网络驱动器。我想在目标文件夹的名称中添加时间和日期。这是我的代码:

import shutil
import os
from datetime import datetime
date = datetime.now().strftime("%m_%d_%Y-%I:%M:%S")
src = 'C:/test_folder'
dst = 'Z:/Backup Files/backup_{}'.format(date)

当我这样做时,我收到以下输出:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 shutil.copytree(src=src,dst=dst)
File C:pyverpy3.10.5libshutil.py:558, in copytree(src, dst, symlinks, ignore, copy_function, ignore_dangling_symlinks, dirs_exist_ok)
556 with os.scandir(src) as itr:
557     entries = list(itr)
--> 558 return _copytree(entries=entries, src=src, dst=dst, symlinks=symlinks,
559                  ignore=ignore, copy_function=copy_function,
560                  ignore_dangling_symlinks=ignore_dangling_symlinks,
561                  dirs_exist_ok=dirs_exist_ok)
File C:pyverpy3.10.5libshutil.py:457, in _copytree(entries, src, dst, symlinks, ignore, copy_function, ignore_dangling_symlinks, dirs_exist_ok)
454 else:
455     ignored_names = set()
--> 457 os.makedirs(dst, exist_ok=dirs_exist_ok)
458 errors = []
459 use_srcentry = copy_function is copy2 or copy_function is copy
File C:pyverpy3.10.5libos.py:225, in makedirs(name, mode, exist_ok)
223         return
224 try:
--> 225     mkdir(name, mode)
226 except OSError:
227     # Cannot rely on checking for EEXIST, since the operating system
228     # could give priority to other errors like EACCES or EROFS
229     if not exist_ok or not path.isdir(name):
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'Z:/Backup Files/backup_07_13_2022-12:27:22'

有人知道我在这里可能做错了什么吗?

@FObersteiner是正确的。它不工作的原因是由于windows 10不允许冒号(:)用作文件名的字符。我应该亲眼看到的。谢谢你的帮助!!

fobersteiner说的对。根据windows: "文件名不能包含以下任何字符:/:* ?";& lt;比;|">

你也可以像这样在python中添加日期和时间到文件名:

old_file_name = "image1"
from datetime import datetime
date = datetime.now().strftime("%Y_%m_%d-%I_%M_%S_%p")
updated_filename = f'{old_file_name}_{date}'
print(updated_filename)

输出:

image1_2022_07_18-09_47_15_PM

所以对你来说它变成了这样:

from datetime import datetime
date = datetime.now().strftime("%Y_%m_%d-%I_%M_%S_%p")
src = 'C:/test_folder'
dst = f'Z:/Backup Files/backup_{date}'
print(dst)

输出:

Z:/Backup Files/backup_2022_07_18-10_08_11_PM

更多细节Y %, %, % d %, %, % S, p %访问strftime-and-strptime-format-codes

最新更新