如何复制扩展名为.txt 的文件?

how to copy files with extension .txt?

我正在尝试创建一个程序来自动创建我在 python 中工作的目录文件 .txt。 我设法创建了一个代码来查找所有扩展名为 .txt 的文件。但是我无法将所有这些文件复制到另一个文件夹,因为它显示了以下错误。 我把我的代码留给你,这样你就可以帮助我解决它向我显示的错误。

import pathlib
from datetime import date
from shutil import  copyfile

date_backup = date.today()
str_date_backup = str(date_backup).replace('-','.')

path_input = r'D: PERSONAL'
ruta = pathlib.Path(path_input)
for archivo in ruta.glob("**\*.txt"):
    path_out = r'D:\Backup' + '\' + str_date_backup + " - " + archivo
    copyfile(path_input, path_out)

错误是:

Traceback (most recent call last):
  File "D: PROYECTOS PYTHON\Automatizar_Backup\Automatizar_Backup.py", line 24, in <module>
    path_out = r'D:\Backup' + '\' + str_date_backup + " - " + archivo
TypeError: can only concatenate str (not "WindowsPath") to str

发生这种情况是因为在 pathlib.Path object yields all the files that match the pattern 上使用了 glob(在您的情况下,"**\*.txt")。幸运的是,这就像将 WindowsPath(或其他系统中的 PosixPath)转换为字符串一样简单:

for file in pathlib.Path(".").glob("*.txt"):
    file = str(file)

OS.walk() 通过遍历目录树 top-down 或 bottom-up 在目录树中生成文件名。对于以目录 top 为根的树中的每个目录(包括 top 本身),它产生一个 3 元组(dirpath、dirnames、filenames)。

你可以简单地使用这个:

import os
from datetime import date
from shutil import copyfile
 

date_backup = date.today()
str_date_backup = str(date_backup).replace('-','.')

path_input = 'D:\2 PERSONAL'
for root, dirs, files in os.walk(path_input):#dir_path
    for file in files: 
        # change the extension from '.txt' to 
        # the one of your choice.
        if file.endswith('.txt'):
            path_current = root+'/'+str(file)
            path_out = r'D:\Backup' + '\' + str_date_backup + " - " + str(file)
            copyfile(path_current, path_out)