El siguiente programa tiene por función el poder restaurar un archivo que se ha modificado o eliminado.
El funcionamiento del programa es muy sencillo
Clic en "Buscar..." , ubicamos el archivo que deseamos proteger y damos clic en "Abrir" , una vez hecho esto el programa ya estará atento a los cambios del programa. El programa lanzará un alerta en caso de que:
- El archivo se haya eliminado.
- El archivo se haya modificado.
Sin más que decir, el código
Código
# -*- coding: utf-8 -*- #Autor: JaAViEr | 0X5D #Twitter: @javieresteban__ from PyQt4 import QtCore, QtGui import sys, threading, os try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s class Formulario(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setWindowTitle("Protector de Archivos :: 2014") self.setFixedSize(400, 48) self.gridLayout = QtGui.QGridLayout(self) self.label = QtGui.QLabel(self) self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.archivo = QtGui.QLineEdit(self) self.archivo.setDisabled(True) self.gridLayout.addWidget(self.archivo, 0, 1, 1, 1) self.boton = QtGui.QPushButton(self) self.gridLayout.addWidget(self.boton, 0, 2, 1, 1) self.label.setText("Archivo:") self.boton.setText("Buscar...") self.connect(self.boton, QtCore.SIGNAL("clicked()"), self.buscar_archivo) self.connect(self.archivo, QtCore.SIGNAL("returnPressed()"), self.empezar) def buscar_archivo(self): self.file = QtGui.QFileDialog.getOpenFileName(self, 'Buscar Archivo', '') leer = open(self.file, "rb") self.lineas = leer.read() leer.close() self.archivo.setText(self.file) self.size = os.path.getsize(self.file) self.empezar() def empezar(self): h = Hilo() h.start() class Hilo(threading.Thread): def run(self): while True: try: open(form.file) estado = True except: estado = False if estado: tama = os.path.getsize(form.file) if tama == form.size: pass else: self.restaurar() else: self.restaurar() def restaurar(self): try: f = open(form.file, "wb") f.write(form.lineas) f.close() QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('El archivo se restauró exitosamente!')) except: QtGui.QMessageBox.about(None, 'Alerta',_fromUtf8('Error al intentar restaurar!')) app = QtGui.QApplication(sys.argv) form = Formulario() form.show() app.exec_()
Saludos, Javier.