Мне было поручено написать очень простой сценарий, но я не могу понять, как ...

Все, что мне нужно сделать, это использовать модуль Shutil, чтобы скопировать все файлы, которые содержат «Tax_», из папки ~ / Documents в мой текущий рабочий каталог.

import shutil
import os

src = os.path.expanduser('~/Documents/Tax 2018')
dst = os.getcwd()

for files in src:
    if 'bdd' in files: # also tried: if files.startswith("Tax_")
        shutil.copy(files,dst)

Не работает. Нам также дали возможность найти файлы с Shutil.which("Tax_"), но это просто не работает.

0
DivZ 29 Июн 2019 в 02:21

2 ответа

Лучший ответ

Может быть, что-то вроде этого будет работать для вас. Он запрашивает у вас входной каталог, а затем спрашивает, где вы хотите сохранить файлы. Если каталог сохранения не существует, он создается, если каталог сохранения уже существует, он просто продолжается. Последняя функция input() предназначена для того, чтобы оставить консоль python, чтобы вы могли видеть, что она завершена.

Преимущество использования shutil.copy2 состоит в том, что он пытается сохранить метаданные файлов.

Кроме того, в зависимости от того, как названы ваши файлы, вы не очень конкретны, вам может потребоваться немного изменить эту строку if 'tax_' in file.lower():.

import shutil
import os


input_dir = input('Please enter directory that contains that tax files.\n')
output_dir = input('\nPlease enter the path where you want to save the files.\n')


for file in os.listdir(input_dir):
    if 'tax_' in file.lower():

        if not os.path.exists(output_dir):
            os.makedirs(output_dir)

        shutil.copy2(os.path.join(input_dir, file), os.path.join(output_dir, file))

input('\nFinished --> Files are saved to %s' % output_dir)  # format() or f strings are ideal but not sure which python version you have
1
probat 29 Июн 2019 в 00:37

Вы можете попробовать что-то вроде этого:

from glob import glob

for file in glob('~/Documents/Tax 2018/Tax_*'):
    shutil.copy(file, dst)

glob вернет список файлов, соответствующих шаблону с подстановочными знаками, в этом случае это файлы, начиная с Tax_ по указанному пути.

1
jacalvo 28 Июн 2019 в 23:53