Python копирует файлы с помощью подстановочных знаков

Я изучаю python (python 3), и я могу скопировать 1 файл в новый каталог, выполнив это

import shutil 
shutil.copyfile('C:/test/test.txt', 'C:/lol/test.txt')

Сейчас я пытаюсь скопировать все файлы * .txt с C: / на C: / test.

* .txt - это шаблон для поиска всех текстовых файлов на моем жестком диске


person Johnny    schedule 22.08.2013    source источник


Ответы (3)


Используйте glob.glob(), чтобы получить список совпадающих имен файлов, а затем повторите над списком.

person Ignacio Vazquez-Abrams    schedule 22.08.2013
comment
блин на 2 секунды раньше: D - person Antti Haapala; 22.08.2013
comment
import shutil, glob dest_dir = C: \\ для f в glob.glob (*. dat): shutil.copy (f, dest_dir) - person Johnny; 22.08.2013
comment
Чтобы быть более полезным, этот ответ должен объяснять, как его использовать. - person JBentley; 28.03.2019

Сначала я использую тест python 2.7, чтобы убедиться, что он работает. Я использовал подстановочный знак *, потому что добавляю дату во все свои текстовые файлы. filename1_2016_04_18.txt Также к текстовым файлам некоторых текстовых файлов прикреплены разные конечные пользователи. имя_файла2_имя_пользователя.txt

import os, glob

directorypath = 'C:\\Program Files\\Common Files'
os.chdir(directorypath)

files = ['filename1', 'filename2', 'filename3']
print ('A %(files)s'% vars())
for filename in files:
    file1 = filename + "*" + "." + "txt"; print ('1 %(file1)s'% vars())
    file2 = ('%(file1)s') % vars (); print ('2 %(file2)s'% vars())
    file3=glob.glob(file2); print ('3 %(file3)s'% vars())
    for filename4 in file3:
        try:
            if os.path.isfile(filename4):
                    print ('I am deleteing this file %(filename4)s'% vars())
                    os.remove(filename4)
            else:    ## Show an error ##
                    print("Error can not delete text file : %s because file not found" % filename4)
        except OSError, e:  ## if failed, report it back to the user ##
                print ("Error: %s - %s." % (e.filename,e.strerror))
person Jamsey    schedule 16.05.2016
comment
Проверяя, существует ли на самом деле файл с только что возвращенным glob.glob именем, вы делаете его ... поточно-ориентированным? (Ты не.) - person bers; 09.04.2018
comment
В чем разница между переменными file2 и file1? - person bers; 09.04.2018

person    schedule
comment
Что такое r в glob.glob (r? - person Ridhuvarshan; 02.05.2018
comment
Я прошу того же ... Например, я не нашел ничего по этому r в официальном документе (docs.pytahon.org/3.5/library/glob.html). Кроме того, я попытался использовать решение без аргументов, и, похоже, ничего не изменилось. Какой-то glob мастер: проясните, пожалуйста, это сомнение. В любом случае: отличный ответ :). - person ivanleoncz; 02.05.2018
comment
Я нашла ответ @ivanleoncz. Символ r используется перед строкой в ​​Python для переопределения управляющих последовательностей (т.е. \ n будет рассматриваться как \ n, а не как новая строка). В ответ использование r не имеет значения, потому что здесь нет управляющих последовательностей, но если бы разделителем файлов был \ вместо /, то влияние было бы замечено. Другими словами, r не имеет ничего общего с glob. Это префикс, который можно использовать перед строками в Python - person Ridhuvarshan; 03.05.2018
comment
В python это называется необработанной строкой :) docs.python.org/2.0/ref/strings .html - person timtody; 23.09.2019