Topic: "Apri con.." script Python  (Letto 771 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline Kami

  • python sapiens
  • *****
  • Post: 519
  • Punti reputazione: 0
    • Mostra profilo
"Apri con.." script Python
« il: Novembre 26, 2008, 22:29 »
E' piuttosto difficile da spiegare, ma ci provo attraverso un esempio:
Sul desktop ho un file di testo file.ext. Ci clicco con il tasto destro, e seleziono "Apri con.."; quindi inserisco il nome del mio script.py.
In che modo lo script puo' gettare il contenuto di "file.ext"?

Bye  ;)

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #1 il: Novembre 27, 2008, 01:23 »
L'"apri con" dovrebbe essere equivalente a fare "python script.py file.ext" da cmd, quindi in teoria ti basta usare sys.argv per ricevere il nome del file e poi farci quello che devi.

Offline Cristiano87

  • python unicellularis
  • *
  • Post: 33
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #2 il: Novembre 27, 2008, 01:35 »
Esempio di applicazione:
Citazione
#!/usr/bin/python

import sys,os

name = "ext.py"
ext = "filename.ext"

def help():
    print "Usage: %s %s" % ( name, ext)

def main():
    if len(sys.argv) < 2:
        help()
        sys.exit(1)
    filename = sys.argv[1]
    if os.path.isfile(filename):
        source = open(filename).read()
        print source
    else:
        help()
    os.system("PAUSE")
main()

L'unico problema è che non puoi associare direttamente un file ad un sorgente.py, devi ricorrere a py2exe o a qualche escamotage (che penso posterà qualcun altro :D )

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #3 il: Novembre 27, 2008, 01:52 »
Dopo ulteriori indagini pare che con "Apri con" ottieni solo "script.py file.ext" e quindi non è sufficiente ad aprire il file perché su win script.py non è riconosciuto come programma. Un possibile workaround è fare un bat con dentro "python.exe %*" e poi aprire il bat da "apri con", se sei su linux, quello che ha scritto Cristiano87 dovrebbe andare (anche se definire il main() e poi chiamarlo è inutile :P).
Altrimenti puoi aprire il file da cmd o chiedere all'utente di inserire il nome del file con un raw_input().

Offline Kami

  • python sapiens
  • *****
  • Post: 519
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #4 il: Novembre 27, 2008, 13:33 »
Dimenticavo: sono su linux ^^'
Avevo gia' provato con sys.argv, dopo aver reso lo script eseguibile, ma.. appunto, non lo apre con python .-.

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #5 il: Novembre 27, 2008, 14:33 »
"Non lo apre con python" nel senso che prova ad aprirlo con un'altra roba o nel senso che lo apre ma non funziona?

Offline Kami

  • python sapiens
  • *****
  • Post: 519
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #6 il: Novembre 27, 2008, 15:07 »
Nel senso che.. non fa niente. Gli ho detto di leggere ciò che c'è scritto nel file e crearne una copia, ma anche se dico al file di aprirsi con quello script.. non succede niente .-. Probabilmente lo apre, ma non con python...

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #7 il: Novembre 27, 2008, 15:24 »
Puoi pastare il codice dello script?

Offline Kami

  • python sapiens
  • *****
  • Post: 519
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #8 il: Novembre 30, 2008, 17:49 »
Sì, anche se non credo ti servirà a molto. Fa esattamente ciò che ho detto: legge il file in input e ne crea una copia.
[hlpycode]# script.py
import sys
fname = sys.argv[1]
f = open(fname)
fa= open('copy.fi', 'w')
fa.write(f.read())
fa.close()
f.close()[/hlpycode]
[hlpycode]# file.fi
Un testo a caso
Toh
Prova.[/hlpycode]

Ho provato a fare "Apri con..", "/home/kami/Scrivania/script.py" (oppure 'python /home/kami/Scrivania/script.py')
ma in entrambi i casi non succede assolutamente niente..

Offline Wolf

  • python sapiens sapiens
  • *
  • moderatore
  • Post: 1.010
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #9 il: Novembre 30, 2008, 17:52 »
Prova a mettere qualche print per vedere se riceve il nome del file e/o se il programma parte.

Offline xFra32

  • python neanderthalensis
  • ****
  • Post: 481
  • Punti reputazione: 1
    • Mostra profilo
    • Utopico
Re: "Apri con.." script Python
« Risposta #10 il: Novembre 30, 2008, 19:08 »
devi dirgli di aprirlo con:
python script.py

altrimenti non riesce a leggerlo.

Offline Kami

  • python sapiens
  • *****
  • Post: 519
  • Punti reputazione: 0
    • Mostra profilo
Re: "Apri con.." script Python
« Risposta #11 il: Novembre 30, 2008, 19:39 »
Citazione
Prova a mettere qualche print per vedere se riceve il nome del file e/o se il programma parte.
No, non si apre, ho gia' provato. Ma COME accidenti si fa ** Voglio dire.. un modo ci deve essere.. no?  :confused: