Source code for ReadWriteFiles
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from MainLib import *
import os
ORIGINAL = "Partitura.txt"
ROM = "ROM.txt"
VHDL = "VHDL.txt"
[docs]def checkFilesExist(fol):
"""
Chequeja si el directori fol conté els fitxers necessaris
:param fol: El directori que s'ha de comprobar si té els fitxers o no
:return: True si conté els fitxers necessàris i False si no
"""
return (os.path.isfile(fol + "/" + ROM) and os.path.isfile(fol + "/" + VHDL) and os.path.isfile(fol + "/" + ORIGINAL))
[docs]def prepareFiles(folderName, createDir =True):
"""
Crea els fitxers necessàris en un directori, que, si no existeix, també es crea
:param folderName: El nom del directori
:param createDir: Si s'ha de crear o no un directori
"""
if(createDir):
os.makedirs(folderName)
open(folderName +"/" + ROM, "w").close()
open(folderName + "/" + VHDL, "w").close()
open(folderName + "/" + ORIGINAL, "w").close()
[docs]def createUseFolder():
"""
S'utilitza per guardar dades (crear el directori i fitxers, utilitzar-ne de ja existents, etc.)
:return: El nom del directori on s'han guardat
"""
while True:
fol = raw_input("Esculli un directori on hi té/vol la informació: ")
if(not os.path.exists(fol)):
logInfo("Creació fitxers", "Aquestes dades no exiteixen")
logInfo("Creació fitxers", "Creant el directori i fitxers necessaris")
prepareFiles(fol)
logSuccess("Creació de fitxers completada!")
logInfo("Ajuda", "Ara has d'editar el fitxer {0} on hi has d'escriure la teva partitura".format(ORIGINAL))
return [fol, False]
else:
if(not checkFilesExist(fol)):
logInfo("Creació fitxers", "Aquest directori no conte els fitxers necessaris. Creant els fitxers...")
prepareFiles(fol, False)
logSuccess("Creació de fitxers completada!")
return [fol,False]
return [fol,True]
[docs]def checkIfTypeExists(type):
"""
Chequeja si el nom del fitxer és un dels existents en el mòdul
:param type: El nom del fitxer
:return: True si existeix i False si no
"""
return type == ROM or type == VHDL or type == ORIGINAL
[docs]def writeToFile(folderName, type, txt):
"""
Escriu al fitxer type dins de folderName el text (lines)
:param folderName: El nom del directori que conté els fitxers adeqüats
:param type: El nom del fitxer que es vol accedir
:param lines: El text que se li vol posar
:return: False si no s'ha pogut realitzar correctament i True si s'ha pogut fer tot correctament
"""
if not checkIfTypeExists(type):
warning("El fitxer {0} no existeix".format(type))
return False
try:
f = open(folderName+"/"+type,"w")
except IOError as e:
exception("Error al obrir el fitxer {0} : {1}".format(type,e.message))
return False
except Exception as e:
exception("Error al obrir el fitxer {0} : {1}".format(type, e.message))
return False
f.write(txt)
f.close()
return True
[docs]def readlines(folderName, type):
"""
Llegeix el fitxer type dins de folderName
:param folderName: El nom del directori que conté els fitxers adeqüats
:param type: El nom del fitxer que es vol accedir
:return: False si no s'ha pogut fer amb èxit i la llista de línies si si que s'ha pogut
"""
if not checkIfTypeExists(type):
exception("El fitxer {0} no existeix".format(type))
return False
try:
f = open(folderName + "/" + type)
except IOError as e:
exception("Error al obrir el fitxer {0} : {1}".format(type, e.message))
return False
except Exception as e:
exception("Error al obrir el fitxer {0} : {1}".format(type, e.message))
return False
l = f.readlines()
l = [value for value in l if value != "\n"]
for line in range(len(l)):
l[line] = l[line].rstrip("\n")
f.close()
return l