Как выбрать указанный каталог c для копирования из его источника в новое место назначения, используя Python? - PullRequest
3 голосов
/ 12 февраля 2020

У меня есть скрипт, который копирует папки и файлы из их источника в новое место назначения, скрипт работает как надо, используя модуль shutil. Но я жестко кодирую источник для папок.

Мне нужно, чтобы скрипт выбрал нужную папку, в которой он имеет имя c. как
pdf 11-12-02-2020 так что pdf + дата вчера - текущая дата - текущий месяц - текущий год.

как я могу это сделать?

код:

import os
import shutil
from os import path
import datetime

src = "I:\\"
src2 = "I:/pdf 11-12-02-2020"

dst = "C:/Users/LT GM/Desktop/pdf 11-12-02-2020/"


def main():
    copy()

def copy():
    if os.path.exists(dst): 
        shutil.rmtree(dst)
        print("the deleted folder is :{0}".format(dst))
        #copy the folder as it is (folder with the files)
        copieddst = shutil.copytree(src2,dst)
        print("copy of the folder is done :{0}".format(copieddst))
    else:
        #copy the folder as it is (folder with the files)
        copieddst = shutil.copytree(src2,dst)
        print("copy of the folder is done :{0}".format(copieddst))

if __name__=="__main__":
    main()

1 Ответ

1 голос
/ 12 февраля 2020

Вы ищете модуль datetime.

Кроме того, вы можете использовать модуль os для правильного определения пути, см. это , поскольку переменная src кажется неиспользуемой, лучше удалить ее, учитывая все это:

import calendar
import os
import shutil
from datetime import date
from os import path

def yesterday():
    day = int(date.today().strftime("%d"))
    month = int(date.today().strftime("%m"))
    year = int(date.today().strftime("%Y"))
    if day != 1:
        return day - 1
    long_months = [1, 3, 5, 7, 8, 10, 12]
    if month in long_months:
        return 31
    elif month == 2:
        if calendar.isleap(year):
            return 29
        return 28
    else:
        return 30

name = "pdf " + str(yesterday()) + date.today().strftime("-%d-%m-%Y")

src2 = os.path.join("I:/", name)

dst = os.path.join(os.path.expanduser("~"), "Desktop",name)

В качестве примечания, хотя в данном случае dst = os.path.join(os.path.expanduser("~"), "Desktop" ,name) работает, это на самом деле не рекомендуется использовать его, см. мой ответ здесь

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