Latest web development tutorials

de entrada e de saída Python3

Nos primeiros capítulos, temos realmente tocou entrada Python e função de saída. Este capítulo vamos apresentar Python entrada e saída específica.


formato de saída embelezar

forma dois valores Python saída: declarações de expressão e a função print ().

A terceira maneira é usar o método do objeto de arquivo write (), o arquivo de saída padrão pode ser usado sys.stdout referência.

Se você quiser para a saída na forma de mais diversificada, você pode usar a função str.format () para formatar o valor de saída.

Se você deseja transformar em um valor de cadeia da saída, você pode usar o repr () ou a função str () para alcançar.

  • str (): função retorna uma forma legível usuário de expressão.
  • repr (): gera uma forma de intérprete expressão legível.

Por exemplo

>>> s = 'Hello, w3big'
>>> str(s)
'Hello, w3big'
>>> repr(s)
"'Hello, w3big'"
>>> str(1/7)
'0.14285714285714285'
>>> x = 10 * 3.25
>>> y = 200 * 200
>>> s = 'x 的值为: ' + repr(x) + ',  y 的值为:' + repr(y) + '...'
>>> print(s)
x 的值为: 32.5,  y 的值为:40000...
>>> #  repr() 函数可以转义字符串中的特殊字符
... hello = 'hello, w3big\n'
>>> hellos = repr(hello)
>>> print(hellos)
'hello, w3big\n'
>>> # repr() 的参数可以是 Python 的任何对象
... repr((x, y, ('Google', 'w3big')))
"(32.5, 40000, ('Google', 'w3big'))"

Há duas maneiras para a saída um quadrado e cubo tabelas:

>>> for x in range(1, 11):
...     print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
...     # 注意前一行 'end' 的使用
...     print(repr(x*x*x).rjust(4))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1, 11):
...     print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x))
...
 1   1    1
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

Nota: No primeiro exemplo, o espaço entre cada coluna foi adicionado por a impressão ().

Este exemplo mostra o método rjust objeto string (), que pode ser uma cadeia para a direita, e preencher o espaço no lado esquerdo.

Existem métodos semelhantes, tais como ljust () e centro (). Estes métodos não escrever nada, eles apenas retornam a string.

Outra zfill método (), ele irá preencher o dígito à esquerda 0, como segue:

>>> '12'.zfill(5)
'00012'
>>> '-3.14'.zfill(7)
'-003.14'
>>> '3.14159265359'.zfill(5)
'3.14159265359'

str.format () A utilização de base é a seguinte:

>>> print('{}网址: "{}!"'.format('本教程', 'www.w3big.com'))
本教程网址: "www.w3big.com!"

E dentro dos personagens parênteses (campos formato chamado) será substituído com o parâmetro format () in.

formato de posição () no número entre parênteses é usada para apontar o objecto de entrada, como segue:

>>> print('{0} 和 {1}'.format('Google', 'w3big'))
Google 和 w3big
>>> print('{1} 和 {0}'.format('Google', 'w3big'))
w3big 和 Google

Se a palavra-chave argumento () no formato, em seguida, o seu valor irá apontar para o nome do parâmetro.

>>> print('{name}网址: {site}'.format(name='本教程', site='www.w3big.com'))
本教程网址: www.w3big.com

Localização e argumentos palavras-chaves pode ser qualquer combinação de:

>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'w3big',
                                                       other='Taobao'))
站点列表 Google, w3big, 和 Taobao。
"! A '(utilizando o ASCII ()), (usando str ()) e (Usando repr ()) pode ser utilizado para formatar um valor antes da sua transformação' r! '' S! ':
>>> import math
>>> print('常量 PI 的值近似为: {}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。
>>> print('常量 PI 的值近似为: {!r}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。

Opções ':' seguido pelo identificador de nome e formato pode campo. Isto permite um melhor valor de formato. O exemplo a seguir irá manter o Pi com três casas decimais:

>>> import math
>>> print('常量 PI 的值近似为 {0:.3f}。'.format(math.pi))
常量 PI 的值近似为 3.142。

Em ':' depois de passar um inteiro, você pode pelo menos garantir que há tantos largura domínio. Úteis quando utilizados na forma paisagismo.

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> for name, number in table.items():
...     print('{0:10} ==> {1:10d}'.format(name, number))
...
w3big     ==>          2
Taobao     ==>          3
Google     ==>          1

Se você tem uma seqüência de formato longo, e você não quer separá-los, em seguida, ao formatar pelo nome da variável ao invés de localização seria uma coisa boa.

O mais simples é passar em um dicionário e, em seguida, usar colchetes "[] 'para acessar chave:

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> print('w3big: {0[w3big]:d}; Google: {0[Google]:d}; '
          'Taobao: {0[Taobao]:d}'.format(table))
w3big: 2; Google: 1; Taobao: 3

Você também pode usar a variável antes da tabela '**' para obter a mesma funcionalidade:

>>> table = {'Google': 1, 'w3big': 2, 'Taobao': 3}
>>> print('w3big: {w3big:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
w3big: 2; Google: 1; Taobao: 3

formatação de strings de estilo antigo

O operador% pode ser alcançado formatação de strings. argumento de cadeia de formato para a esquerda, uma vez que é semelhante ao sprintf () fórmula, eo direito de substituição, em seguida, o exemplo string formatada retornado:

>>> import math
>>> print('常量 PI 的值近似为:%5.3f。' % math.pi)
常量 PI 的值近似为:3.142。

Porque a função str.format () é relativamente novo, a maioria código Python ainda usa o operador%. No entanto, porque este formato antigo será eventualmente removido do idioma, você deve usar mais str.format ().


Leia a entrada do teclado

Python fornece a função input () da entrada está definido para ler uma linha de texto a partir do padrão, a entrada padrão padrão é o teclado.

entrada pode receber uma expressão Python como entrada e devolve o resultado da operação.

#!/usr/bin/python3

str = input("请输入:");
print ("你输入的内容是: ", str)

Isto produz os seguintes resultados correspondentes à entrada:

请输入:本教程
你输入的内容是:  本教程

Ler e escrever arquivos

open () retorna um objeto de arquivo e sintaxe básica é a seguinte:

open(filename, mode)
  • filename: variável nome é uma string contendo o valor que você deseja acessar um nome de arquivo.
  • mode: Modo determina o arquivo aberto: Ler, Escrever, acrescentando. Veja a lista completa de todos os valores possíveis da seguinte forma. Este parâmetro não-obrigatório, o modo de acesso de arquivo padrão é somente leitura (r).

Abra a lista completa dos diferentes modos de arquivo:

modo descrição
r Abra o arquivo em modo de somente leitura. arquivo ponteiro vai ser colocado no início do ficheiro. Este é o modo padrão.
rb Abrir um arquivo para somente leitura no formato binário. Vai apresentar ponteiro no início do arquivo. Este é o modo padrão.
r + Abrir um arquivo para leitura e escrita. Vai apresentar ponteiro no início do arquivo.
rb + Abrir um arquivo para leitura e escrita em formato binário. Vai apresentar ponteiro no início do arquivo.
w Abra um arquivo somente para escrita. Se o arquivo já existe ele será substituído. Se o arquivo não existir, criar um novo arquivo.
wb Abrir um arquivo para documentos em formato binário somente. Se o arquivo já existe ele será substituído. Se o arquivo não existir, criar um novo arquivo.
w + Abrir um arquivo para leitura e escrita. Se o arquivo já existe ele será substituído. Se o arquivo não existir, criar um novo arquivo.
wb + Abrir um arquivo para leitura e escrita em formato binário. Se o arquivo já existe ele será substituído. Se o arquivo não existir, criar um novo arquivo.
um Abra um arquivo para acrescentar. Se o ficheiro já existe, o ponteiro de arquivo será colocado no final do ficheiro. Em outras palavras, após o novo conteúdo será escrito para o conteúdo existente. Se o arquivo não existir, criar um novo arquivo para a escrita.
ab Abra um arquivo para anexar em formato binário. Se o ficheiro já existe, o ponteiro de arquivo será colocado no final do ficheiro. Em outras palavras, após o novo conteúdo será escrito para o conteúdo existente. Se o arquivo não existir, criar um novo arquivo para a escrita.
a + Abrir um arquivo para leitura e escrita. Se o ficheiro já existe, o ponteiro de arquivo será colocado no final do ficheiro. É o modo de o arquivo é aberto irá acrescentar. Se o arquivo não existir, criar um novo arquivo para leitura e escrita.
ab + Abra um arquivo para anexar em formato binário. Se o ficheiro já existe, o ponteiro de arquivo será colocado no final do ficheiro. Se o arquivo não existir, criar um novo arquivo para leitura e escrita.

Os exemplos a seguir serão gravados no foo.txt arquivo na string:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "w")

f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )

# 关闭打开的文件
f.close()
  • O primeiro parâmetro é o nome do arquivo que você deseja abrir.
  • Character segundo parâmetro descreve como usar o arquivo. modo pode ser 'r' Se o arquivo é somente leitura, 'w' for só de escrita (se o arquivo existe ele será apagado), e 'a' para o conteúdo do arquivo adicionais; todos os dados gravados serão adicionados automaticamente ao fim . 'r +' tanto para ler e escrever. argumento mode é opcional; 'r' será o valor padrão.

Abre o foo.txt arquivo, aparece da seguinte forma:

$ cat /tmp/foo.txt 
Python 是一个非常好的语言。
是的,的确非常好!!

O método de objectos de ficheiro

Este exemplo assume que a seção restante criou um objeto de arquivo chamado f do.

f.read ()

Para ler o conteúdo de um arquivo, chamar f.read (tamanho), que irá ler um certo número de dados, e depois voltou como um objeto string ou bytes.

tamanho é um parâmetro numérico opcional. Quando o tamanho é ignorado ou é negativa, todo o conteúdo do ficheiro será lido e devolvido.

O exemplo a seguir assume que existe o foo.txt arquivo (no exemplo acima foi criado):

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.read()
print(str)

# 关闭打开的文件
f.close()

O programa acima, a saída é:

Python 是一个非常好的语言。
是的,的确非常好!!

f.readline ()

f.readline () você lê uma única linha do arquivo. caractere de nova linha '\ n'. f.readline () retorna uma string vazia se, explicou que tinha sido lido para a última linha.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.readline()
print(str)

# 关闭打开的文件
f.close()

O programa acima, a saída é:

Python 是一个非常好的语言。

f.readlines ()

f.readlines () irá retornar todas as linhas contidas no arquivo.

Se parâmetros opcionais sizeHint, em seguida, ler bytes de comprimento especificados, e esses bytes divididos por linha.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

str = f.readlines()
print(str)

# 关闭打开的文件
f.close()

O programa acima, a saída é:

['Python 是一个非常好的语言。\n', '是的,的确非常好!!\n']

Outra forma é a iteração sobre um objeto de arquivo e, em seguida, lê cada linha:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "r")

for line in f:
    print(line, end='')

# 关闭打开的文件
f.close()

O programa acima, a saída é:

Python 是一个非常好的语言。
是的,的确非常好!!

Este método é muito simples, mas não fornece um bom controle. Tanto por causa do mecanismo de processamento diferentes, é melhor não misturar.

f.write ()

f.write (string) A cadeia de caracteres gravados no arquivo, e retorna o número de caracteres escritos.

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo.txt", "w")

num = f.write( "Python 是一个非常好的语言。\n是的,的确非常好!!\n" )
print(num)
# 关闭打开的文件
f.close()

O programa acima, a saída é:

29

Se você quer escrever algumas das coisas que não é uma string, você terá que ser convertido:

#!/usr/bin/python3

# 打开一个文件
f = open("/tmp/foo1.txt", "w")

value = ('www.w3big.com', 14)
s = str(value)
f.write(s)

# 关闭打开的文件
f.close()

O programa acima, arquivo foo1.txt aberta:

$ cat /tmp/foo1.txt 
('www.w3big.com', 14)

f.tell ()

f.tell () retorna a posição de um objeto de arquivo atualmente está localizada, é o número de bytes a partir do início da contagem de arquivo.

f.seek ()

Se você quiser mudar a posição atual do arquivo, você pode usar f.seek (offset, from_what) função.

From_what valor, se for o início de 0 indica, se for o fim de 1 indica a posição actual, dois para o arquivo, por exemplo:

  • seek (x, 0): A partir da posição inicial, que é a primeira linha do primeiro caractere do arquivo começa a se mover x caracteres
  • seek (x, 1): indica movimento x caracteres para trás a partir da posição actual
  • buscar (-X, 2): mostra uma caracteres x móveis a partir da extremidade da frente do ficheiro

from_what valor padrão é 0, isto é, o início do ficheiro. Aqui está um exemplo completo:

>>> f = open('/tmp/foo.txt', 'rb+')
>>> f.write(b'0123456789abcdef')
16
>>> f.seek(5)     # 移动到文件的第六个字节
5
>>> f.read(1)
b'5'
>>> f.seek(-3, 2) # 移动到文件的倒数第三字节
13
>>> f.read(1)
b'd'

f.close ()

No arquivo de texto (não b aqueles modo de arquivos abertos) apenas em relação ao início do arquivo para localizar.

Quando você é feito com um arquivo, chamar f.close () para fechar o arquivo e liberar recursos do sistema, se você tentar recuperar o arquivo, uma exceção é lançada.

>>> f.close()
>>> f.read()
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: I/O operation on closed file
<pre>
<p>
当处理一个文件对象时, 使用 with 关键字是非常好的方式。在结束后, 它会帮你正确的关闭文件。 而且写起来也比 try - finally 语句块要简短:</p>
<pre>
>>> with open('/tmp/foo.txt', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

objeto File Existem outros métodos, tais como isatty () e trucate (), mas estes são geralmente menos.


módulo pickle

O módulo python pickle implementa a sequência de dados básico e desserialização.

Fomos capazes de salvar o programa de destino módulo pickle operação de serialização correndo informações em um arquivo de armazenamento permanente.

Pelo módulo pickle desserialização, podemos criar um programa para salvar o objeto do arquivo.

Interface Básica:

pickle.dump(obj, file, [,protocol])

Com este objeto picles, para ser capaz de abrir o arquivo como leitura:

x = pickle.load(file)

Nota: Leia uma string a partir do arquivo, e a reconstrução de seus objetos python originais.

file: objeto como arquivo com read () e readline () interface.

Exemplo 1:

#!/usr/bin/python3
import pickle

# 使用pickle模块将数据对象保存到文件
data1 = {'a': [1, 2.0, 3, 4+6j],
         'b': ('string', u'Unicode string'),
         'c': None}

selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)

output = open('data.pkl', 'wb')

# Pickle dictionary using protocol 0.
pickle.dump(data1, output)

# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)

output.close()

Exemplo 2:

#!/usr/bin/python3
import pprint, pickle

#使用pickle模块从文件中重构python对象
pkl_file = open('data.pkl', 'rb')

data1 = pickle.load(pkl_file)
pprint.pprint(data1)

data2 = pickle.load(pkl_file)
pprint.pprint(data2)

pkl_file.close()