Форум сайта python.su
0
Привет.
По мере написания небольшой утилитки с гуи для ежедневного копирования определенных папок, у меня возникло 2 вопроса.
1) в нескольких местах,я использую cmd-команды для копирования папок через xcopy или через утилиту, которая забирает файлы через перфорс определенным образом.
сейчас у меня это реализовано так:
cmd=('echo Hello &exit')
subprocess.check_call(cmd, shell=True)
если команда выполняется - subprocess.check_call(cmd, shell=True) возвращает 0…
для копирования это подходит, но утилита для перфорса выдает сообщения, если не может сама переписать какие-то файлы..
и мне важно получить эти строки назад. я так понимаю, это делается через stdout каким-то образом..
можно,конечно,выполнить команды через os.system(), но так теряется красота и кошерность)))
вопрос в том, каким образом я могу возвращать результаты команд?
2) сейчас моя утилитка работает в ручном режиме,а задача - сделать копирование ежедневно в определенное время.
сейчас у меня сделано так:
в основном классе BuildManagerMainWindow(QMainWindow, Ui_MainWindow)
есть функция
def auto_update(self, autoUpdateTime):
while 1:
if timerHours==curTimeHours and timerMinutes==curTimeMinutes:
print ‘Do smth..’
time.sleep(1)
вызывая ее из мейна:
if __name__ == “__main__”:
import sys
app = QtGui.QApplication(sys.argv)
ui = BuildManagerMainWindow()
ui.show()
thread.start_new_thread(ui.auto_update(ui.autoUpdateTime),())
sys.exit(app.exec_())
приложение виснет на стадии отрисовки интерфейса. меня положение вызова ф-ии, приложение все равно виснет.иногда до начала выполнени оной, иногда после..
у меня есть подозрение,что из-за кривости рук, функция не запускается в новом потоке… бьюсь уже второй день и буду благодарен любой помощи.
пишу под winxp professional x64 2003 sp2 на питоне 2.6 x64
Офлайн
0
я, например, пользуюсь батником для копирования в определенное время, текст батника примерно следующий -
c:\Python24\python.exe time.py
(путь до папки с питоном должен быть прописан в переменной среды)
а дальше этот батник пихай в стандартный windows scheduler
Офлайн
0
в принципе можно и так.
ну у я в познавательных целях хочу сделать эту утилитку.
можно и руками просто копировать)
но хочется,чтобы пока утилита запущена - можно либо тыкая в кнопочки копировать нужные билды либо по наступлению определенного времени, оно автоматом включает копирование.
тоесть, она у меня открыта висит постоянно,так как втечение дня иногда надо скопировать заново что-то..
а вопрос по возврату cmd команд решил костылями вида
'echo Hello > log.txt' - записью результатов команд в лог..и потом чтением из него.
уныло и стыдно, но до лучшего варианта не додумался :)
так что осталось как-то таймер для полного счастья прикрутить
Офлайн