копирование файлов в python
мне нужно скопировать все файлы у которых в названии есть буква "f" со всей системы в отдельную папку есть начало кода с выводом полных ссылок. помогите мне с написанием второй части кода для копирования этих фалов в одну папку. учитывая что у меня сотни текстовых файлов
import os
import glob
import shutil
for filename in glob.iglob('../**/*f*', recursive=True):
if os.path.isfile(os.path.abspath(filename)) and filename.endswith('.txt'):
print(os.path.abspath(filename))
if len(filename) == 0:
print("nothing")
else:
save_dir = "C:\python\TXT"
if not os.path.isdir(save_dir):
res = os.mkdir(save_dir)
if res == OSError:
print("cant create directory")
shutil.copyfile()
Ответы (1 шт):
Автор решения: Alexey Leshchenko
→ Ссылка
import os
import glob
import shutil
# сюда будем сохранять все подходящие имена файлов
files_to_copy = []
for filename in glob.iglob('../**/*f*', recursive=True):
if os.path.isfile(os.path.abspath(filename)) and filename.endswith('.txt'):
print(os.path.abspath(filename))
# сохраняем в списочек
files_to_copy.append(filename)
if len(filename) == 0:
print("nothing")
else:
save_dir = "C:\python\TXT"
if not os.path.isdir(save_dir):
res = os.mkdir(save_dir)
if res == OSError:
print("cant create directory")
# копируем файлы по списку
for f in files_to_copy:
shutil.copy(f, save_dir)
Но есть подозрение, что в вашем изначальном коде лучше вместо:
for filename in glob.iglob('../**/*f*', recursive=True):
if os.path.isfile(os.path.abspath(filename)) and filename.endswith('.txt'):
писать
for filename in glob.iglob('../**/*f*.txt', recursive=True):
if os.path.isfile(os.path.abspath(filename)):