[英]how to copy files with extension .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:\2 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:\5 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 上使用 glob 會產生所有與模式匹配的文件(在您的情況下為"**\*.txt"
)。 幸運的是,這就像將WindowsPath
(或其他系統中的PosixPath
)轉換為字符串一樣簡單:
for file in pathlib.Path(".").glob("*.txt"):
file = str(file)
OS.walk()
通過自上而下或自下而上遍歷樹來生成目錄樹中的文件名。 對於以目錄 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.