A veces, su programa tendrá que interactuar con el usuario. Por ejemplo, usted querrá obtener el contenido de la entrada del usuario, y para imprimir algunos de los resultados devueltos por el usuario. Podemos respectivamente input()
funcionar y print
para cumplir la función de demanda.
Para la entrada, también podemos usar str
una variedad de métodos (String, String) clase. Por ejemplo, se puede utilizar el rjust
método para obtener una anchura de un alineado a la derecha a la cadena especificada. Usted puede mirar help(str)
para más detalles.
Otro tipo común de archivos de entrada y de salida se procesan. Crear, leer y escribir archivos en la mayoría de los programas es esencial para la función, y vamos a explorar este aspecto en este capítulo.
1. entrada de usuario
Guardar el siguiente programa es io_input.py
:
def reverse(text):
return text[::-1]
def is_palindrome(text):
return text == reverse(text)
something = input("Enter text: ")
if is_palindrome(something):
print("Yes, it is a palindrome")
else:
print("No, it is not a palindrome")
salida:
$ python3 io_input.py
Enter text: sir
No, it is not a palindrome
$ python3 io_input.py
Enter text: madam
Yes, it is a palindrome
$ python3 io_input.py
Enter text: racecar
Yes, it is a palindrome
Utilizamos el texto rebanar característica de giro. Ya sabemos que podemos utilizar seq[a:b]
desde la posición a
inicial a la posición b
final de la secuencia de corte en rodajas . También podemos proporcionar tercer parámetro para determinar la rebanada paso (el paso) . El paso por defecto es 1
, devolverá un texto continuo. Dado un paso negativo, como -1
la tapa de retorno a través del texto.
input()
Función puede tomar una cadena como un argumento, y mostrarlo al usuario. Más tarde se esperará a la entrada del usuario o golpear la tecla de retorno. Una vez que el usuario introduce algo y tecla de retorno Qiaoxia, input()
la función devuelve el texto introducido por el usuario.
Obtenemos el texto y voltear. Si el texto del texto original y la misma inversa como la presente, se determina que el texto es un palíndromo .
Ejercicio +
Para comprobar si el texto es parte de la necesidad de ignorar palíndromo de puntuación, espacios y el caso de ellos. Por ejemplo, "Subida a voto, señor." Palíndromo es un fragmento de texto, pero nuestro programa actual no lo cree así. Puede mejorar el programa anterior para reconocer este palíndromo le permitan hacer?
Si necesitas algunos consejos, entonces aquí tienes una idea ......
2. archivo
Se puede crear una parte de file
y el uso apropiado de su clase de objeto read
, readline
, write
método para abrir o usar el archivo, y leer o escribir. La capacidad de leer o escribir archivos depende de la manera en la que se especifica para abrir el archivo. Por último, cuando se termine de archivos, puede llamar al close
método para contar Python hemos completado el uso del archivo.
Caso (guardar como io_using_file.py
):
poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
# 打开文件以编辑('w'riting)
f = open('poem.txt', 'w')
# 向文件中编写文本
f.write(poem)
# 关闭文件
f.close()
# 如果没有特别指定,
# 将假定启用默认的阅读('r'ead)模式
f = open('poem.txt')
while True:
line = f.readline()
# 零长度指示 EOF
if len(line) == 0:
break
# 每行(`line`)的末尾
# 都已经有了换行符
#因为它是从一个文件中进行读取的
print(line, end='')
# 关闭文件
f.close()
salida:
$ python3 io_using_file.py
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
En primer lugar, se utiliza el incorporado en la open
función y especificar el nombre del archivo, y queremos utilizar para abrir un modo de abrir el archivo. Modo abierto puede ser un modo de lectura 'r'
(), el modo de escritura ( 'w'
) y la modalidad de apertura 'a'
(). También podemos elegir ser por el modo de texto ( 't'
) o el modo binario ( 'b'
leer), escritura o texto anexión. De hecho, hay otros modos más están disponibles, help(open)
le dará más detalles acerca de ellos. Por defecto, open()
será tratado como un archivo de texto ( t EXT) de archivos, y para leer ( r abrirlo EAD) de modo.
En nuestro caso, primero se abre el archivo en modo escritura y el uso del objeto archivo de write
métodos para escribir en un archivo, y finalmente a través de close
cerrar el archivo.
A continuación, volver a abrir el mismo archivo en modo de lectura. No necesitamos un patrón especificado como "leer el archivo de texto" es el valor predeterminado. Se utilizó en un bucle readline
para leer cada línea del método de archivo. Este enfoque completar una serie de filas, en el que el extremo de la línea también incluye un salto de línea. Cuando se devuelve una cadena vacía, significa que hemos llegado al final del archivo, ya través de break
la salida del bucle.
Por último, se close
cierra el archivo.
Ahora, se puede comprobar los poem.txt
contenidos del archivo para confirmar que el programa hace de este archivo para escritura y las operaciones de lectura.
3. salmuera
Llamado Python proporciona un Pickle
módulo estándar, a través del cual se puede en cualquier almacén de objetos de Python puro en un archivo y más tarde para recuperarlo. Esto se llama * de forma permanente (persistente) * objeto de almacenamiento.
Caso (guardar como io_pickle.py
):
import pickle
# 我们存储相关对象的文件的名称
shoplistfile = 'shoplist.data'
# 需要购买的物品清单
shoplist = ['apple', 'mango', 'carrot']
# 准备写入文件
f = open(shoplistfile, 'wb')
# 转储对象至文件
pickle.dump(shoplist, f)
f.close()
# 清除 shoplist 变量
del shoplist
# 重新打开存储文件
f = open(shoplistfile, 'rb')
# 从文件中载入对象
storedlist = pickle.load(f)
print(storedlist)
salida:
$ python io_pickle.py
['apple', 'mango', 'carrot']
Para almacenar un objeto en un archivo, en primer lugar hay open
que escribir ( w Rite) binario ( b modo de ciertas piezas) para abrir el archivo, y luego llamar a la pickle
del módulo de dump
funciones. Este proceso se llama encapsulación (decapado) .
A continuación, se pasa pickle
el módulo de load
recepción de la función de objeto devuelto. Este proceso se llama desembalaje (deserialiación) .
4. Unicode
Hasta ahora, cuando escribimos o utilizar una cadena, leer o escribir en un archivo, se utiliza únicamente caracteres inglés llano.
Nota: Si está utilizando Python 2, esperamos ser capaces de leer y escribir otros idiomas distintos del inglés, tenemos que utilizar el
unicode
tipo que todas las letrasu
al principio, por ejemplou"hello world"
.
>>> "hello world"
'hello world'
>>> type("hello world")
<class 'str'>
>>> u"hello world"
'hello world'
>>> type(u"hello world")
<class 'str'>
Cuando leemos o escribimos un archivo o cuando se quiere comunicar, mientras que otros ordenadores en Internet y necesitamos nuestra Unicode
cadena se puede convertir a un formato de transmisión y recepción, que se llama "UTF-8". Podemos leer y escribir en este formato, sólo tiene que utilizar un simple argumentos clave a nuestros estándares open
funciones:
# encoding=utf-8
import io
f = io.open("abc.txt", "wt", encoding="utf-8")
f.write(u"Imagine non-English language here")
f.close()
text = io.open("abc.txt", encoding="utf-8").read()
print(text)
Ahora se puede ignorar la import
declaración, estaremos en capítulos módulo de explorar más detalles acerca de sus capítulos.
Cada vez que utilizamos literales Unicode comentarios como escribir un programa anterior, hay que asegurarse de que el programa de Python se ha dicho que estamos utilizando UTF-8, por lo que tenemos que # encoding=utf-8
los comentarios colocados en la parte superior de nuestro programa.
Utilizamos io.open
y proporciona una "codificación (codificación)" y "decodificar (decodificación)" parámetro para decirle a Python que estamos usando Unicode.
resumen
Hemos discutido sobre los diversos tipos de entrada y salida de manejo tales archivo de contenido, así como sobre el módulo de la salmuera en Unicode.
A continuación, vamos a explorar algunos conceptos inusuales.