Hola, buenos días!
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
(https://dl.dropboxusercontent.com/s/kooaq4wk6q2dzg4/Captura%20de%20pantalla%202014-04-25%2023.47.58.png)
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.
Junto con cualquiera de ambas alertas el programa nos dará la posibilidad de restaurar a la versión anterior (A la versión del archivo al momento de ejecutarse este programa y seleccionar el archivo)
Sin más que decir, el 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.
buen code , parece que volviste a programar javier.
buen code , parece que volviste a programar javier.
Estoy intentando retomar el ritmo de PyQT4 :) , hace mucho no programaba Python :)