2010-09-03 15 views
6

estoy aprender Python ahora, y hoy en día, me encontré con un problema en http://docs.python.org/release/2.5.4/tut/node8.htmlmódulos Ejecutora como scripts

6.1.1 Ejecución de módulos como scripts

Cuando se ejecuta un módulo de Python con

python fibo.py <arguments>

el código en el módulo se ejecutará , como si lo hubiera importado, pero con el __name__ establecido en "__main__". Eso significa que al añadir este código al final de su módulo:

if __name__ == "__main__": 
    import sys` 
    fib(int(sys.argv[1])) 

Usted puede hacer que el archivo se puede usar como una secuencia de comandos, así como un módulo importable, porque el código que analiza la línea de comandos sólo se ejecuta si el módulo se ejecuta como el archivo "principal":

$ python fibo.py 50 1 1 2 3 5 8 13 21 34

pero cuando hago esto con cáscara, tengo

File "<input>", line 1 
python fibo.py 222 
SyntaxError: invalid syntax 

la forma de ejecutar correctamente la escritura?

fibo.py es

def fib(n): 
    a,b=0,1 
    while b<n: 
     print b, 
     a,b = b,a+b 


def fib2(n): 
    result=[] 
    a,b=0,1 
    while b<n: 
     result.append(b) 
     a,b=b,a+b 
    return result 

if __name__ =="__main__": 
    import sys 
    fib(int(sys.argv[1])) 
+1

"python fibo.py 222" es correcto. Muéstranos tu script, ve que hay un problema con la sintaxis en primera línea. –

Respuesta

13

Qué hiciste exactamente en la cáscara? ¿Cuál es el código que está ejecutando?

Parece que cometió un error en su secuencia de comandos, es posible que le falten dos puntos o que la sangría sea incorrecta. Sin ver el archivo que está ejecutando, es imposible decir más.

edición:

he dado cuenta de lo que está mal. Está intentando ejecutar python fibo.py 222 en el shell python. Me sale el mismo error cuando hago eso:

[138] % python 
Python 2.6.1 (r261:67515, Apr 9 2009, 17:53:24) 
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> python fibo.py 222 
    File "<stdin>", line 1 
    python fibo.py 222 
      ^
SyntaxError: invalid syntax 
>>> 

necesita ejecutar desde la línea de comandos del sistema operativo no desde dentro shell interactivo de Python.

Primero asegúrese de cambiar al directorio de inicio de Python. Por ejemplo, desde la línea de comandos del sistema operativo, escriba: cd C: \ Python33 \ - según su versión de python. El mío es 3.3. Y luego escriba: python fibo.py 200 (por ejemplo)

+0

Gracias Dev que realmente me ayudó Pero puedo llamar dentro del shell interactivo como fibo.fib (123) y fibo.fib2 (345) –

Cuestiones relacionadas