Antinor
21-02-2013, 19:16
Salute a tutti Voi !
Perdonatemi innanzitutto se il mio problema potrà sembrare banale, ma è la prima volta che mi avvicino a questo linguaggio di programmazione.
L'associazione di Volontariato presso la quale presto servizio, mi ha chiesto di creare un solo ed unico file eseguibile essendo in possesso di uno script in Python. (Script è corretto?).
Nello specifico si tratta di un questionario le cui domande e risposte si trovano su un altro file .txt
Pertanto mi trovo :
Questionario.py
quesiti.txt
Ovviamente prima di scrivere su questo poliedrico e spettacolare Forum ho cercato in rete ed ho trovato il famoso py2exe. Ne ho studiato le caratteristiche e i modi di utilizzo ed infine l'ho provato.
Dopo aver creato il file setup.py ho eseguito il comando : python setup.py py2exe e tutto è andato bene a parte il "piccolo dettaglio" che se tento di eseguire il file .exe non visualizzo ne le domande ne le risposte.
Sono certo che devo includere nella compilazione il file .txt ma non so come fare.
Inoltre se prendo il solo file .exe e tento di eseguirlo in altro PC, noto che si apre la schermata DOS soltanto per pochi istanti per poi richiudersi immediatamente.
L'anomalia non si manifesta più se mi porto anche il file compresso "library.zip" creato da py2exe.
E' normale che mi serva anche questo file ? Io pensavo che il risultato finale fosse un solo file eseguibile.
Questo è il contenuto del file "setup.py" :
from distutils.core import setup
import py2exe
setup(console=['questionario.py']
)
Mentre questo è il contenuto del file "questionario.py" :
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
def NumRand():
import random
Insieme = range(1,1420,5)
rand = random.sample(Insieme, 10)
return rand
def Quesito(y):
from linecache import getline
FileRif = "quesiti.txt"
domanda = getline(FileRif, y)
risp1 = getline(FileRif, y+1)
risp2 = getline(FileRif, y+2)
risp3 = getline(FileRif, y+3)
controllo = getline(FileRif, y+4)
return domanda, risp1, risp2, risp3, controllo
def Pulisci():
import os, platform
if platform.system() == "Linux":
os.system("clear")
if platform.system() == "Windows":
os.system("cls")
import time
lista = NumRand()
x = 0
giusta = 0
sbagliata = 0
while x <= 9:
Pulisci()
question = lista[x]
gruppo = Quesito(question)
domanda = gruppo[0]
risp1 = gruppo[1]
risp2 = gruppo[2]
risp3 = gruppo[3]
controllo = gruppo[4]
print("\n\n\n\n----------------------------------------")
print domanda, '\n', risp1, risp2, risp3
ValOk = ["1","2","3"]
risposta = raw_input("Digita il numero corrispondente alla risposta che ritieni esatta: ")
if risposta in ValOk:
if int(risposta) == int(controllo):
print("\n\n******************")
print("*RISPOSTA ESATTA!*")
print("******************")
giusta = giusta + 1
time.sleep(2)
else:
print("\n\nRisposta errata! La risposta giusta era: \n" + gruppo[int(controllo)])
sbagliata = sbagliata + 1
time.sleep(6)
else:
print("\n\nATTENZIONE!!! Devi digitare un numero valido corrispondente alla risposta! (1,2,3)")
x = x - 1
time.sleep(2)
x = x+1
Pulisci()
print("\n\nHai dato: " + str(giusta) + " risposte corrette e ne hai sbagliate: " + str(sbagliata))
if int(giusta) <= int(sbagliata):
print("\n\nDevi ancora studiare un bel po'!")
time.sleep(2)
else:
print("\n\n**************")
print("*COMPLIMENTI!*")
print("**************")
print("\nHai buone possibilitÃ* di superare l'esame!\n\n")
Scusatemi nuovamente ma sono proprio nuovo a questo linguaggio.
Grazie e a presto !
Perdonatemi innanzitutto se il mio problema potrà sembrare banale, ma è la prima volta che mi avvicino a questo linguaggio di programmazione.
L'associazione di Volontariato presso la quale presto servizio, mi ha chiesto di creare un solo ed unico file eseguibile essendo in possesso di uno script in Python. (Script è corretto?).
Nello specifico si tratta di un questionario le cui domande e risposte si trovano su un altro file .txt
Pertanto mi trovo :
Questionario.py
quesiti.txt
Ovviamente prima di scrivere su questo poliedrico e spettacolare Forum ho cercato in rete ed ho trovato il famoso py2exe. Ne ho studiato le caratteristiche e i modi di utilizzo ed infine l'ho provato.
Dopo aver creato il file setup.py ho eseguito il comando : python setup.py py2exe e tutto è andato bene a parte il "piccolo dettaglio" che se tento di eseguire il file .exe non visualizzo ne le domande ne le risposte.
Sono certo che devo includere nella compilazione il file .txt ma non so come fare.
Inoltre se prendo il solo file .exe e tento di eseguirlo in altro PC, noto che si apre la schermata DOS soltanto per pochi istanti per poi richiudersi immediatamente.
L'anomalia non si manifesta più se mi porto anche il file compresso "library.zip" creato da py2exe.
E' normale che mi serva anche questo file ? Io pensavo che il risultato finale fosse un solo file eseguibile.
Questo è il contenuto del file "setup.py" :
from distutils.core import setup
import py2exe
setup(console=['questionario.py']
)
Mentre questo è il contenuto del file "questionario.py" :
#!/usr/bin/python
# -*- coding: iso-8859-15 -*-
def NumRand():
import random
Insieme = range(1,1420,5)
rand = random.sample(Insieme, 10)
return rand
def Quesito(y):
from linecache import getline
FileRif = "quesiti.txt"
domanda = getline(FileRif, y)
risp1 = getline(FileRif, y+1)
risp2 = getline(FileRif, y+2)
risp3 = getline(FileRif, y+3)
controllo = getline(FileRif, y+4)
return domanda, risp1, risp2, risp3, controllo
def Pulisci():
import os, platform
if platform.system() == "Linux":
os.system("clear")
if platform.system() == "Windows":
os.system("cls")
import time
lista = NumRand()
x = 0
giusta = 0
sbagliata = 0
while x <= 9:
Pulisci()
question = lista[x]
gruppo = Quesito(question)
domanda = gruppo[0]
risp1 = gruppo[1]
risp2 = gruppo[2]
risp3 = gruppo[3]
controllo = gruppo[4]
print("\n\n\n\n----------------------------------------")
print domanda, '\n', risp1, risp2, risp3
ValOk = ["1","2","3"]
risposta = raw_input("Digita il numero corrispondente alla risposta che ritieni esatta: ")
if risposta in ValOk:
if int(risposta) == int(controllo):
print("\n\n******************")
print("*RISPOSTA ESATTA!*")
print("******************")
giusta = giusta + 1
time.sleep(2)
else:
print("\n\nRisposta errata! La risposta giusta era: \n" + gruppo[int(controllo)])
sbagliata = sbagliata + 1
time.sleep(6)
else:
print("\n\nATTENZIONE!!! Devi digitare un numero valido corrispondente alla risposta! (1,2,3)")
x = x - 1
time.sleep(2)
x = x+1
Pulisci()
print("\n\nHai dato: " + str(giusta) + " risposte corrette e ne hai sbagliate: " + str(sbagliata))
if int(giusta) <= int(sbagliata):
print("\n\nDevi ancora studiare un bel po'!")
time.sleep(2)
else:
print("\n\n**************")
print("*COMPLIMENTI!*")
print("**************")
print("\nHai buone possibilitÃ* di superare l'esame!\n\n")
Scusatemi nuovamente ma sono proprio nuovo a questo linguaggio.
Grazie e a presto !