Скопируйте файлы в папку на один каталог в Python - PullRequest
5 голосов
/ 01 июня 2010

У меня есть папка с несколькими файлами, которые я хотел бы скопировать в один каталог (в этой папке также есть файлы, которые я не хочу копировать) Я знаю, что есть команда os.chdir (".."), чтобы переместить меня в каталог. Однако я не уверен, как скопировать те файлы, которые мне нужны, в этот каталог. Любая помощь будет принята с благодарностью.


UPDATE:

Вот что у меня сейчас:

from shutil import copytree, ignore_patterns

copytree("/Users/aaron/Desktop/test/", "/Users/aaron/Desktop/", ignore=ignore_patterns('*.py', '*.txt'))

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "update.py", line 61, in <module>
    copytree("/Users/aaron/Desktop/test/", "/Users/aaron/Desktop/", ignore=ignore_patterns('*.py', '*.txt'))
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/shutil.py", line 146, in copytree
    os.makedirs(dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] File exists: '/Users/aaron/Desktop/'

1 Ответ

8 голосов
/ 01 июня 2010

Модуль shutil может делать это, в частности функции copyfile, copy, copy2 и copytree. http://docs.python.org/library/shutil.html

Вы, вероятно, хотите что-то вроде этого:

import os
import shutil

fileList = os.listdir('path/to/source_dir')
fileList = ['path/to/source_dir/'+filename for filename in fileList]

for f in fileList:
    shutil.copy2(f, 'path/to/dest_dir/')

Конечно, вы можете отфильтровать некоторые имена файлов во время вызова os.listdir(). Например,

fileList = [filename for filename in os.listdir('path/to/source_dir') if filename[-3] is '.txt']

вместо fileList = os.listdir('path/to/source_dir'), чтобы получить только .txt файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...