J'ai écrit un petit script qui m'aide à résoudre des problèmes de scrabble et de déformation de mots. Cela fonctionne bien quand je l'exécute à partir du terminal Mac OS X. Je voudrais partager le script avec mes amis en tant qu'application Mac autonome. D'où j'ai utilisé py2app pour cela, mais l'App s'est écrasé quand je double-cliquez dessus. La console affiche le message d'erreur suivant:Python raw_input provoquant EOFError après avoir créé l'application avec py2app
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] Enter letters: Traceback (most recent call last):
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] File "/Users/***/wordwarp/dist/warp.app/Contents/Resources/__boot__.py", line 137, in <module>
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] _run('warp.py')
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] File "/Users/***/wordwarp/dist/warp.app/Contents/Resources/__boot__.py", line 134, in _run
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] execfile(path, globals(), globals())
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] File "/Users/***/wordwarp/dist/warp.app/Contents/Resources/warp.py", line 4, in <module>
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] word = raw_input("Enter letters: ")
1/17/11 2:13:51 PM [0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875] EOFError: EOF when reading a line
1/17/11 2:13:51 PM warp[9875] warp Error
1/17/11 2:13:51 PM warp[9875] warp Error
1/17/11 2:13:52 PM com.apple.launchd.peruser.501[469] ([0x0-0x4a44a4].org.pythonmac.unspecified.warp[9875]) Exited with exit code: 255
Voici le script réel:
import string
word = raw_input("Enter letters: ")
dict = open('dict.txt')
wordmap = {}
for c in string.lowercase:
wordmap[c] = 0
for c in word:
if c in wordmap:
wordmap[c] = wordmap[c]+1
for line in dict:
line = line.strip()
if len(line) >= 3:
linemap = {}
for c in string.lowercase:
linemap[c] = 0
for c in line:
if c in linemap:
linemap[c] = linemap[c]+1
match = True
for c in linemap:
if linemap[c] > wordmap[c]:
match = False
if match is True:
print line
Comment puis-je me débarrasser de l'erreur?
Je vois. Quel serait le moyen le plus simple d'utiliser Automator ou AppleScript (que je n'avais jamais utilisé auparavant)? Il n'y a que deux fichiers: warp.py et dict.txt – occasionalcoder123
Je n'ai pas utilisé py2app, mais serait-il acceptable de lire 'word' dans un fichier ou une option de ligne de commande? – James
La raison pour laquelle 'py2app' est utilisé en premier lieu est de produire une application GUI OS X standard qui peut être lancée en double-cliquant dans le Finder. Dans ce cas, il n'y a pas de ligne de commande. Si votre application doit être exécutée à partir d'une ligne de commande shell, vous ne devriez probablement pas utiliser 'py2app'. Juste empaquetez-le avec Python Distutils et un script de console comme la plupart des paquets Python multiplateformes. –