Привет.
По мере написания небольшой утилитки с гуи для ежедневного копирования определенных папок, у меня возникло 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