Python Language
Entrada y salida básica
Buscar..
Usando input () y raw_input ()
raw_input
esperará a que el usuario ingrese texto y luego devuelva el resultado como una cadena.
foo = raw_input("Put a message here that asks the user for input")
En el ejemplo anterior, foo
almacenará cualquier entrada que proporcione el usuario.
input
esperará a que el usuario ingrese texto y luego devuelva el resultado como una cadena.
foo = input("Put a message here that asks the user for input")
En el ejemplo anterior, foo
almacenará cualquier entrada que proporcione el usuario.
Usando la función de impresión
En Python 3, la funcionalidad de impresión tiene la forma de una función:
print("This string will be displayed in the output")
# This string will be displayed in the output
print("You can print \n escape characters too.")
# You can print escape characters too.
En Python 2, la impresión fue originalmente una declaración, como se muestra a continuación.
print "This string will be displayed in the output"
# This string will be displayed in the output
print "You can print \n escape characters too."
# You can print escape characters too.
Nota: el uso from __future__ import print_function
en Python 2 permitirá a los usuarios usar la función print()
igual que el código de Python 3. Esto solo está disponible en Python 2.6 y superior.
Función para pedir al usuario un número
def input_number(msg, err_msg=None):
while True:
try:
return float(raw_input(msg))
except ValueError:
if err_msg is not None:
print(err_msg)
def input_number(msg, err_msg=None):
while True:
try:
return float(input(msg))
except ValueError:
if err_msg is not None:
print(err_msg)
Y para usarlo:
user_number = input_number("input a number: ", "that's not a number!")
O, si no desea un "mensaje de error":
user_number = input_number("input a number: ")
Imprimir una cadena sin una nueva línea al final
En Python 2.x, para continuar una línea con la print
, finalice la declaración de print
con una coma. Se agregará automáticamente un espacio.
print "Hello,",
print "World!"
# Hello, World!
En Python 3.x, la función de print
tiene un parámetro end
opcional que es lo que se imprime al final de la cadena dada. Por defecto es un carácter de nueva línea, por lo que es equivalente a esto:
print("Hello, ", end="\n")
print("World!")
# Hello,
# World!
Pero podrías pasar en otras cuerdas.
print("Hello, ", end="")
print("World!")
# Hello, World!
print("Hello, ", end="<br>")
print("World!")
# Hello, <br>World!
print("Hello, ", end="BREAK")
print("World!")
# Hello, BREAKWorld!
Si desea más control sobre la salida, puede usar sys.stdout.write
:
import sys
sys.stdout.write("Hello, ")
sys.stdout.write("World!")
# Hello, World!
Leer de stdin
Los programas de Python pueden leer desde las tuberías de Unix . Aquí hay un ejemplo simple de cómo leer desde stdin
:
import sys
for line in sys.stdin:
print(line)
Tenga en cuenta que sys.stdin
es una secuencia. Esto significa que el for-loop solo terminará cuando la secuencia haya finalizado.
Ahora puede canalizar la salida de otro programa a su programa python de la siguiente manera:
$ cat myfile | python myprogram.py
En este ejemplo, cat myfile
puede ser cualquier comando de Unix que salga a stdout
.
Alternativamente, usar el módulo fileinput puede ser útil:
import fileinput
for line in fileinput.input():
process(line)
Entrada desde un archivo
La entrada también se puede leer desde archivos. Los archivos se pueden abrir utilizando la función incorporada open
. Usar un with <command> as <name>
sintaxis with <command> as <name>
(llamado 'Administrador de contexto') hace que el uso de open
y el manejo del archivo sea súper fácil:
with open('somefile.txt', 'r') as fileobj:
# write code here using fileobj
Esto asegura que cuando la ejecución del código deja el bloque, el archivo se cierre automáticamente.
Los archivos se pueden abrir en diferentes modos. En el ejemplo anterior, el archivo se abre como de solo lectura. Para abrir un archivo existente para lectura solamente use r
. Si quieres leer ese archivo como bytes usa rb
. Para adjuntar datos a un archivo existente use a
archivo. Use w
para crear un archivo o sobrescribir cualquier archivo existente del mismo nombre. Puedes usar r+
para abrir un archivo para leer y escribir. El primer argumento de open()
es el nombre del archivo, el segundo es el modo. Si el modo se deja en blanco, el valor predeterminado será r
.
# let's create an example file:
with open('shoppinglist.txt', 'w') as fileobj:
fileobj.write('tomato\npasta\ngarlic')
with open('shoppinglist.txt', 'r') as fileobj:
# this method makes a list where each line
# of the file is an element in the list
lines = fileobj.readlines()
print(lines)
# ['tomato\n', 'pasta\n', 'garlic']
with open('shoppinglist.txt', 'r') as fileobj:
# here we read the whole content into one string:
content = fileobj.read()
# get a list of lines, just like int the previous example:
lines = content.split('\n')
print(lines)
# ['tomato', 'pasta', 'garlic']
Si el tamaño del archivo es pequeño, es seguro leer todo el contenido del archivo en la memoria. Si el archivo es muy grande, a menudo es mejor leer línea por línea o por fragmentos, y procesar la entrada en el mismo bucle. Para hacer eso:
with open('shoppinglist.txt', 'r') as fileobj:
# this method reads line by line:
lines = []
for line in fileobj:
lines.append(line.strip())
Al leer archivos, tenga en cuenta los caracteres de salto de línea específicos del sistema operativo. Aunque for line in fileobj
los for line in fileobj
automáticamente, siempre es seguro llamar a strip()
en las líneas leídas, como se muestra arriba.
Los archivos fileobj
( fileobj
en los ejemplos anteriores) siempre apuntan a una ubicación específica en el archivo. Cuando se abren por primera vez, el identificador de archivo apunta al principio del archivo, que es la posición 0
. El identificador de archivo puede mostrar su posición actual con tell
:
fileobj = open('shoppinglist.txt', 'r')
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 0.
Al leer todo el contenido, la posición del manejador de archivos se señalará al final del archivo:
content = fileobj.read()
end = fileobj.tell()
print('This file was %u characters long.' % end)
# This file was 22 characters long.
fileobj.close()
La posición del manejador de archivos se puede configurar para lo que sea necesario:
fileobj = open('shoppinglist.txt', 'r')
fileobj.seek(7)
pos = fileobj.tell()
print('We are at character #%u.' % pos)
También puede leer cualquier longitud del contenido del archivo durante una llamada determinada. Para hacer esto pasa un argumento para read()
. Cuando se llama a read()
sin ningún argumento, se leerá hasta el final del archivo. Si pasa un argumento, leerá ese número de bytes o caracteres, dependiendo del modo ( rb
y r
respectivamente):
# reads the next 4 characters
# starting at the current position
next4 = fileobj.read(4)
# what we got?
print(next4) # 'cucu'
# where we are now?
pos = fileobj.tell()
print('We are at %u.' % pos) # We are at 11, as we was at 7, and read 4 chars.
fileobj.close()
Para demostrar la diferencia entre caracteres y bytes:
with open('shoppinglist.txt', 'r') as fileobj:
print(type(fileobj.read())) # <class 'str'>
with open('shoppinglist.txt', 'rb') as fileobj:
print(type(fileobj.read())) # <class 'bytes'>