как скопировать файлы и каталог из источника в место назначения, используя python - PullRequest
0 голосов
/ 31 января 2020

Мне нужен сценарий python, который выполняет эти три задачи:

  1. проверить, содержит ли путь файл слова, скопированный в указанный c destination
  2. , проверить, содержит ли путь pdf файлы, скопированные в конкретный c пункт назначения
  3. , проверьте, содержит ли путь каталог, и скопируйте папку с отверстием в указанный c пункт назначения.

, по этой причине я использую os.walk () для просмотра каталогов и файлов пути, и я использую библиотеку shutil для копирования файлов и каталогов.

код

import os
from distutils.dir_util import copy_tree
import shutil
from os import path
import datetime

def main():
    src = "C:/Users/LT GM/Desktop/Python_files/"


    dst2 = "C:/Users/LT GM/Desktop/"
    for root,dirs,files in os.walk(src):
        for name in files:
            print("files: ",os.path.join(root,name))
        for name in dirs:
            copieddst = copy_tree(src,dst2)
            print("directory: ",os.path.join(root,name))
            print(" coppied directory :{0}".format(copieddst) )
    # make a duplicate of an existing file
        if path.exists(src):
    # get the path to the file in the current directory
            print("****")
            src = path.realpath("pandas.pdf")

    #seperate the path from the filter
        head, tail = path.split(src)
        print("path:" +head)
        print("file:" +tail)    
        dst =str(datetime.date.today()) + tail  
    # nowuse the shell to make a copy of the file
        shutil.copy(src, dst)

if __name__=="__main__":
    main()

проблема в том, что я могу копировать файлы или содержимое каталога. не дырявый каталог, а как проверить файлы pdf или do c?

1 Ответ

0 голосов
/ 31 января 2020

Если вы хотите скопировать каталог, а не файл, используйте shutil.copytree . При использовании он похож на shutil.copy2, то есть:

import shutil
shutil.copytree('mydir', 'mydircopy')

Обратите внимание, что по умолчанию dirs_exist_ok равен False, что означает, что пункт назначения не должен существовать при запуске shutil.copytree.

...