def load_file(self): """加载外部文件获取文章""" path = QFileDialog.getOpenFileName(self, "Open File", '', "Any Files (*.*)") if path: try: inFile = QFile(path[0]) if inFile.open(QFile.ReadOnly | QFile.Text): text = str(inFile.readAll(), encoding='utf8') _, filename = os.path.split(inFile.fileName()) self.refresh_control_post( post_id=0, title=filename, url="", data=text, ) except Exception as ex: self.statusBar().showMessage("文件读取错误:%s" % str(ex))
def organize_files(): separator = window.cmb_separator.currentText() target_dir = QDir(window.edit_target_dir.text()) list_target_dirs = target_dir.entryList() progress = progress_window() progress.set_max(window.list_files.count()) for index in range(window.list_files.count()): progress.set_value(index) # # STEP 1: Create target directory if necessary # # Get folder name for file fn_src = window.list_files.item(index).text() progress.set_text("Processing \"{0}\"".format(fn_src)) md = pyexiv2.ImageMetadata(fn_src) image_ts = datetime.date try: md.read() image_ts = md['Exif.Photo.DateTimeOriginal'].value except: print("Cannot open file \"{0}\"".format(fn_src)) continue # Makes sure the day and month are always two digits def correct_format(number): if number < 10: return "0" + str(number) else: return str(number) folder_name_trg = str(image_ts.year) + separator + correct_format( image_ts.month) + separator + correct_format(image_ts.day) dir_name_trg = target_dir.absolutePath() + QDir.separator( ) + folder_name_trg # Create folder for day if necessary target_folder = QDir(dir_name_trg) if not target_folder.exists(): QDir.mkdir(target_dir, dir_name_trg) print("Created directory \"{0}\"".format(dir_name_trg)) # # STEP 2: Move file # # absolute file name of the new file fn_trg_abs = dir_name_trg + QDir.separator() + fn_src.split( QDir.separator())[-1] file_trg = QFile(fn_trg_abs) # Don't overwrite existing files if file_trg.exists(): print("Skipping file \"{0}\"".format(file_trg.fileName())) continue QFile.copy(fn_src, fn_trg_abs) print("Copied file from \"{0}\" to \"{1}\"".format(fn_src, fn_trg_abs)) print("Finished!")
def prepare_db(self) -> bool: """Create the Database from the DDL. The DDL is a script that provided as QResource Returns: True if creation succesful. """ if not self.database.isValid(): self.log.warning("The Database is not valid, reopen") self.database = QSqlDatabase.database(self.database_name) self.database.open() query = QSqlQuery(self.database) file = QFile(":/data/script.sql") if not file.exists(): self.log.error("Kritischer Fehler beim erzeugen der Datenbank" " {} nicht gefunden".format(file.fileName())) return False if not file.open(QIODevice.ReadOnly): self.log.error( "Kritischer Fehler bei der Initialisierung der Datenbank." "Die Datei {} konnte nicht geöffnet werden".format( file.fileName())) ts = QTextStream(file) line: str = "" cleaned_line: str = "" string_list: list = [] read_line: list = [] self.log.info("File at end: {}".format(ts.atEnd())) while not ts.atEnd(): has_text: bool = False line = "" string_list.clear() while not has_text: read_line = ts.read_line() self.log.info("read Line: {}".format(read_line)) cleaned_line = read_line.strip() string_list = cleaned_line.split("--") cleaned_line = string_list[0] if not cleaned_line.startswith( "--") and not cleaned_line.startswith("DROP"): line += cleaned_line if cleaned_line.endswith(";"): break if cleaned_line.startswith("COMMIT"): has_text = True if not line == "": self.log.info("Line: {}".format(line)) if not query.exec_(line): self.log.error( "Fehler beim Erzeugen der Tabelle {}".format(line)) self.log.error("Datenbank meldet Fehler {}".format( query.lastError())) return False else: self.log.error( "Fehler beim Lesen der Datei zur Datenbank Erzeugung: ") return False file.close() self.log.info("Datenbank erfolgreich erzeugt") return True