def Send(configPath, content, attPath): f = ConfigHelper.Get( configPath, 'email', 'from') pwd = ConfigHelper.Get( configPath, 'email', 'pwd') t = ConfigHelper.Get( configPath, 'email', 'to') message = MIMEMultipart() # 出现554 是因为from to没有设置 message['From'] = f message['To'] = t message['Subject'] = '爬虫邮件通知' # 构造附件 if os.path.exists(attPath): for parent, dirnames, filenames in os.walk(attPath): if(len(filenames) == 0): content += " 日志文件夹内日志文件不存在:%s" % attPath break for file in filenames: att1 = MIMEText( open(os.path.join(parent, file), 'rb').read(), 'base64', 'utf-8') att1["Content-Type"] = 'application/octet-stream' att1[ "Content-Disposition"] = 'attachment; filename="%s"' % file message.attach(att1) else: content += " 日志文件夹不存在:%s" % attPath message.attach(MIMEText(content, 'plain', 'utf-8')) server = smtplib.SMTP('smtp.163.com', 25) server.login(f, pwd) server.sendmail(f, t, message.as_string()) server.quit()
def __init__(self, parent=None): QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.portManager = PortManager(self.ui, startmonitor=True) self.configHelper = ConfigHelper(self.ui) self.initSignal() self.setupUi_Ex()
def __init__(self, configPath, table): self.server = ConfigHelper.Get(configPath, 'db', 'server') self.uid = ConfigHelper.Get(configPath, 'db', 'uid') self.pwd = ConfigHelper.Get(configPath, 'db', 'pwd') self.database = ConfigHelper.Get(configPath, 'db', 'database') self.params = urllib.quote_plus( "DRIVER={SQL Server Native Client 10.0};SERVER=%s;DATABASE=%s;UID=%s;PWD=%s" % (self.server, self.database, self.uid, self.pwd)) self.engine = sqlalchemy.create_engine( "mssql+pyodbc:///?odbc_connect=%s" % self.params) self.metaData = sqlalchemy.MetaData(bind=self.engine) self.table = sqlalchemy.Table(table, self.metaData, autoload=True)
def getSettings(filename=f'{PROGRAM_NAME}-settings.ini'): return ConfigHelper(SETTINGS_GROUP, filename).getSettings()
import os from ConfigHelper import ConfigHelper import xlrd import json import time import re configData = ConfigHelper.load() DMS_data_path = configData["path"] OutPath = configData["OutPath"] filelist = os.listdir(DMS_data_path) names = [] col_data = [] returnData = {} for file in filelist: workbook = xlrd.open_workbook(DMS_data_path + '/' + file) names = workbook.sheet_names() for name in names: if name == '330_340': worksheet = workbook.sheet_by_name(name) nrows = worksheet.nrows ncols = worksheet.ncols for i in range(16): col_values = worksheet.col_values(i) col_value = col_values[2:] # print(col_value) col_data.append(col_value) newdatas = [] for data in col_data[8:16]:
class ArduloaderWindow(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.portManager = PortManager(self.ui, startmonitor=True) self.configHelper = ConfigHelper(self.ui) self.initSignal() self.setupUi_Ex() def setupUi_Ex(self): self.setWindowTitle(const.windowtitle) self.ui.textEdit.append(const.aboutinfo) self.ui.headLabel.setPixmap(QPixmap(":/main/icons/main/arduloader.png")) self.setWindowIcon(QtGui.QIcon(":/main/icons/main/logo.png")) self.setBoards() self.configHelper.updateUiByConfig() def setBoards(self): ret, self.__boardsinfodict = BoardHelper.getBoardsInfo() if not ret: self.__boardsinfodict = {} return for boardname in self.__boardsinfodict.keys(): self.ui.mcuCombox.addItem(boardname) def onUploadFinish(self, ret, text): self.timer.stop() try: res = ret == 0 and "Upload SUCCESS:)" or ("%s\nUpload FAILED:(" % text) except IOError: res = "Read tmp file error" except: res = "Unknown error" self.ui.textEdit.append(res) def onUploading(self): prev_cursor = self.ui.textEdit.textCursor() self.ui.textEdit.moveCursor(QtGui.QTextCursor.End) self.ui.textEdit.insertPlainText (".") self.ui.textEdit.setTextCursor(prev_cursor) def getUploadArgs(self): infodict = self.__boardsinfodict.get(tostr(self.ui.mcuCombox.currentText())) if not infodict: return mcu = infodict["mcu"] speed = infodict["speed"] protocol = infodict["protocol"] maximum_size = infodict["maximum_size"] comport = tostr(self.ui.portCombox.currentText()) flash_bin = togbk(self.ui.hexfileCombox.currentText()) return {"mcu": mcu, "speed": speed, "protocol": protocol, "maximum_size": maximum_size, "comport": comport, "flash_bin": flash_bin } def checkUploadArgs(self, argsdict): if not argsdict: self.ui.textEdit.append("Get chip data error") return False if not OSPath.exists(argsdict.get("flash_bin", "")): self.ui.textEdit.append("Hex file not exists") return False # TODO: 检查文件大小是否超多当前芯片允许的最大值 return True def startUpload(self): argsdict = self.getUploadArgs() if not self.checkUploadArgs(argsdict): return self.uploader = Uploader() self.connect(self.uploader.qobj, QtCore.SIGNAL(const.finish_sig), self.onUploadFinish) self.uploader.resetUploadArgs(argsdict) self.ui.textEdit.clear() self.ui.textEdit.append("Start uploading\n") self.timer = QtCore.QTimer() self.timer.timeout.connect(self.onUploading) self.uploader.start() self.timer.start(const.process_interval) def onOpenHexFile(self): filename = QtGui.QFileDialog.getOpenFileName(self, "Choose a HEX file", ".", "HEX (*.hex)") if filename == "": return index = self.ui.hexfileCombox.findText(filename) if index < 0: self.ui.hexfileCombox.insertItem(0, filename) index = 0 self.ui.hexfileCombox.setCurrentIndex(index) def closeEvent(self, e): hex = tostr(self.ui.hexfileCombox.currentText()) com = tostr(self.ui.portCombox.currentText()) board = tostr(self.ui.mcuCombox.currentText()) self.configHelper.updateConfig(hex, com, board) e.accept() def initSignal(self): self.ui.exitButton.clicked.connect(self.close) self.ui.uploadButton.clicked.connect(self.startUpload) self.ui.openHexButton.clicked.connect(self.onOpenHexFile)
class ArduloaderWindow(QMainWindow): def __init__(self, parent=None): QMainWindow.__init__(self) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.portManager = PortManager(self.ui, startmonitor=True) self.configHelper = ConfigHelper(self.ui) self.initSignal() self.setupUi_Ex() def setupUi_Ex(self): self.setWindowTitle(const.windowtitle) self.ui.textEdit.append(const.aboutinfo) self.ui.headLabel.setPixmap( QPixmap(":/main/icons/main/arduloader.png")) self.setWindowIcon(QtGui.QIcon(":/main/icons/main/logo.png")) self.setBoards() self.configHelper.updateUiByConfig() def setBoards(self): ret, self.__boardsinfodict = BoardHelper.getBoardsInfo() if not ret: self.__boardsinfodict = {} return for boardname in self.__boardsinfodict.keys(): self.ui.mcuCombox.addItem(boardname) def onUploadFinish(self, ret, text): self.timer.stop() try: res = ret == 0 and "Upload SUCCESS:)" or ("%s\nUpload FAILED:(" % text) except IOError: res = "Read tmp file error" except: res = "Unknown error" self.ui.textEdit.append(res) def onUploading(self): prev_cursor = self.ui.textEdit.textCursor() self.ui.textEdit.moveCursor(QtGui.QTextCursor.End) self.ui.textEdit.insertPlainText(".") self.ui.textEdit.setTextCursor(prev_cursor) def getUploadArgs(self): infodict = self.__boardsinfodict.get( tostr(self.ui.mcuCombox.currentText())) if not infodict: return mcu = infodict["mcu"] speed = infodict["speed"] protocol = infodict["protocol"] maximum_size = infodict["maximum_size"] comport = tostr(self.ui.portCombox.currentText()) flash_bin = togbk(self.ui.hexfileCombox.currentText()) return { "mcu": mcu, "speed": speed, "protocol": protocol, "maximum_size": maximum_size, "comport": comport, "flash_bin": flash_bin } def checkUploadArgs(self, argsdict): if not argsdict: self.ui.textEdit.append("Get chip data error") return False if not OSPath.exists(argsdict.get("flash_bin", "")): self.ui.textEdit.append("Hex file not exists") return False # TODO: 检查文件大小是否超多当前芯片允许的最大值 return True def startUpload(self): argsdict = self.getUploadArgs() if not self.checkUploadArgs(argsdict): return self.uploader = Uploader() self.connect(self.uploader.qobj, QtCore.SIGNAL(const.finish_sig), self.onUploadFinish) self.uploader.resetUploadArgs(argsdict) self.ui.textEdit.clear() self.ui.textEdit.append("Start uploading\n") self.timer = QtCore.QTimer() self.timer.timeout.connect(self.onUploading) self.uploader.start() self.timer.start(const.process_interval) def onOpenHexFile(self): filename = QtGui.QFileDialog.getOpenFileName(self, "Choose a HEX file", ".", "HEX (*.hex)") if filename == "": return index = self.ui.hexfileCombox.findText(filename) if index < 0: self.ui.hexfileCombox.insertItem(0, filename) index = 0 self.ui.hexfileCombox.setCurrentIndex(index) def closeEvent(self, e): hex = tostr(self.ui.hexfileCombox.currentText()) com = tostr(self.ui.portCombox.currentText()) board = tostr(self.ui.mcuCombox.currentText()) self.configHelper.updateConfig(hex, com, board) e.accept() def initSignal(self): self.ui.exitButton.clicked.connect(self.close) self.ui.uploadButton.clicked.connect(self.startUpload) self.ui.openHexButton.clicked.connect(self.onOpenHexFile)