Форум сайта python.su
В общем пытаюсь решить такую задачку. На диске С создается папка с текущей датой, так же на диске D. На диске С, в созданной папке, я создал несколько текстовых файлов (вручную), теперь их необходимо скопировать в папку с текущей датой на диске D. Во теперь вопрос, чтобы скопировать файлы нужно прописать путь (от куда и куда), но можно ли эти пути записать в переменные или с помощью форматирования строк подставить и скопировать файлы. Так как эту операцию нужно проделывать каждый день на автомате, а если писать весь путь (а дата как мы знаем меняется каждый день), то придется вручную дату изменять в пути.
Отредактировано Mutant (Авг. 18, 2019 15:39:46)
Прикреплённый файлы:
Снимок.PNG (10,6 KБ)
Офлайн
забавно вы код показываете, так наверное лучше будет
import os import time h import shutil as s source2 = 'C:' source2 = 'D:' today = sourcel + os.sep + time.strftime('IY %m %d') today2 = source2 + os.sep + time.strftime('%Y %m %d') #os.mkdir (today) #os.mkdir (today2) source3 = today source4 = today2 #open('source','w') s.copyfile(source3,source4)
Отредактировано AD0DE412 (Авг. 18, 2019 16:25:43)
Офлайн
Перемещать файлы
Офлайн
Mutant
чтобы скопировать файлы
MutantВы уж определитесь копировать или перемещать. Это далеко не одно и тоже. Вообще всякого рода бекапы архивирование делаются средствами командного интерпретатора ОС в одну-две строчку, питон тут совершенно не нужен.
Перемещать файлы
Офлайн
Mutantкак то так, ну такое, на коленке …
еремещать файлы
;cfg.ini [cfg] source = /home/qwerty/Рабочий стол/A backup = /home/qwerty/Рабочий стол/B
#python 2.x #запускать один раз в сутки import os, time, ConfigParser, shutil class MyDir(): def __init__(self): self.cfg = ConfigParser.ConfigParser() self.cfg.read("cfg.ini") self.root = self.cfg.get("cfg", "source") self.in__root = os.listdir(self.root) self.source = os.path.join(self.root, time.strftime('%Y_%m_%d')) self.out = self.myFunk() def myFunk(self): if len(self.in__root) == 0: os.mkdir(self.source) return "1 ===>" else: try: shutil.move(os.path.join(self.root, self.in__root[0]), self.cfg.get("cfg", "backup")) os.mkdir(self.source) return "2 :::>" except shutil.Error as it__err: return "3 ~~~> " + str(it__err) finally: print("fine") if __name__ == "__main__": print(MyDir().out)
Отредактировано AD0DE412 (Авг. 19, 2019 09:24:02)
Офлайн
AD0DE4121. А чего на питоне 2?? он уже того…
критика эээ и советы приветствуются
self.in__root[0]
Отредактировано doza_and (Авг. 19, 2019 09:56:22)
Офлайн
doza_andэт не критично там различий то … просто 2 под рукой был
1. А чего на питоне 2?? он уже того…
doza_andто же верно но, вдруг он(а) расширять будет функционал (сомительно) классы для меня новая тема вот и осаиваю тему (в них удобно зворачивать всякое имена итд без всякого ООП даже)
2. Создание одного объекта явный признак того что класс тут не нужен
doza_andавтору темы нужно перемещение вот и мы этого того его перемещаем, зачем лишнее. кроме того в try - except - finally можно накрутить разное (возможно это будет переусложнение, скорее всего так и есть)
непонятно почему обрабатывается 1 элемент.
doza_andкто ж спорит (зачем чинить исправное, можешь не писать не пиши итд)
Я бы рекомендовал архивировать результат или модулем zip или системными утилитами.
doza_and… ммм … подразумевается что в корневом каталоге А только 1 элемент который перемещается в каталог B, ежесуточно. (такие вещи надо документировать)
непонятно почему обрабатывается 1 элемент.
Отредактировано AD0DE412 (Авг. 19, 2019 12:00:36)
Офлайн
;cfg.ini [cfg] source = path/A backup = path/B trick = it.txt
# coding: utf-8 #------------------------------------------------------------------------------- # Name: xz #------------------------------------------------------------------------------- # запускать один раз в сутки на NT платформе (хотя хз можно и больше, просто # скрипт будет все переносить из каталога A/data в каталог B/data # после чего снова создавать каталог A/data) # хз как будт вести себя с кирилецей, спецсимволами итд, cмд оно такое #------------------------------------------------------------------------------- # скрипт создает каталог с текущей датой в указоном каталоге "source" # (есле его еще нет) и копирует в другой указанный каталог "backup", каталоги с # именами указанными в it.txt (куда записваются все созданые каталоги скриптом) # после чего удаляет все коталоги с этим именами из исходного каталога "source". # используются cmd windows (xcopy, rd) # в каталоге скрипта должен быть файл it.txt #------------------------------------------------------------------------------- # 1. А чего на питоне 2?? он уже того… # >>> ok python 3.x import os, time, configparser # 2 .Создание одного объекта явный признак того что класс тут не нужен # >>> ok no comment oлл охладите он верхнем уровне модуль все inifile = r"cfg.ini" cfg = configparser.ConfigParser() cfg.read(inifile) root1 = cfg.get("cfg", "source") root2 = cfg.get("cfg", "backup") log = cfg.get("cfg", "trick") in__root1 = os.listdir(root1) name = time.strftime('%Y_%m_%d') source = os.path.join(root1, name) # 3. непонятно почему обрабатывается 1 элемент. # >>> ok тут такое, как бы ok, чё, норм. # 4. При аварийном сохранении я думаю большинство людей не ожидает что файлы # исчезнут (те copy уместнее move). Я бы рекомендовал архивировать результат # или модулем zip или системными утилитами. # >>> ok, но архивировать архилонг -о, поэтому будем ближе к системе и ее утилитам # ... непонятный момент, вы и в правду считаете, что при перемещении файлов # ... при сбое файлы исчезнут, в обоих каталогах (0_0)!? че, правда def sourceCopyDel(A, B): print("(0_0)!?") if os.name == "nt": name = os.path.join(B, os.path.basename(A)) try: os.mkdir(name[:-1]) except: print("err2") itcopy = " ".join(["XCOPY", r"/E /S", '\"' + A[:-1] + '\"', '\"' + name[:-1] + '\"']) itdel = " ".join(["RD", r"/S /Q", "".join(['\"', A[:-1], '\"'])]) code = os.system(itcopy) if code == 0: print(os.system(itdel)) else: print(code) else: print("it will work in only windows") def writeLog(): if os.path.isfile(log): logfile = open(log, "a") else: logfile = open(log, "w") logfile.write(name + "\n") logfile.close() def main(): if not name[:-1] in in__root1: [sourceCopyDel(os.path.join(root1, i), root2) for i in open(log)] try: os.mkdir(source) except: print("err") writeLog() else: [sourceCopyDel(os.path.join(root1, i), root2) for i in open(log)] if __name__ == '__main__': main() """ зы кстате, сложно было перестраиваться обратно в безклассовость, мне не пондддравилось ... полностью. """
Отредактировано AD0DE412 (Авг. 22, 2019 12:29:59)
Офлайн