Latest web development tutorials

Python3 вход и выход

В первых нескольких главах мы фактически коснулись ввода Python и функцию выхода. В этой главе мы представим Python конкретный вход и выход.


Выходной формат украсит

способ два значения Python вывода: условия выражения и функция печати ().

Третий способ заключается в использовании метода файлового объекта записи (), стандартный выходной файл может быть использован sys.stdout ссылки.

Если вы хотите вывести в виде более разнообразны, вы можете использовать функцию str.format () для форматирования выходного значения.

Если вы хотите, чтобы превратиться в строковое значение выхода, вы можете использовать магнезии () или функции ул (), чтобы достичь.

  • ул (): функция возвращает читаемую пользователем форму выражения.
  • магнезии (): генерирует форму выражения интерпретатора читаемый.

Например

>>> 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'))"

Есть два способа вывода квадрат и куб таблицы:

>>> 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

Примечание: В первом примере, пространство между каждой колонки была добавлена печать ().

Этот пример показывает метод rjust объект строки (), который может быть строка справа, и заполнить пространство слева.

Есть подобные методы, такие как ljust () и в центре (). Эти методы ничего не пишут, они просто возвращают новую строку.

Другой метод zfill (), она заполнит в левой цифрой 0, следующим образом:

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

str.format () основное использование выглядит следующим образом:

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

А внутри персонажей круглые скобки (так называемые поля формата) будут заменены параметром формата () в.

Формат позиции () в количестве в скобках используется для указания входящего объекта, следующим образом:

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

Если ключевое слово аргумента () в формате, то их значение будет указывать на имя параметра.

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

Место и ключевые аргументы могут быть любой комбинацией:

>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'w3big',
                                                       other='Taobao'))
站点列表 Google, w3big, 和 Taobao。
'! А' (с использованием ASCII ()), (с использованием Str ()) и (с использованием магнезии ()) может быть использован для форматирования значения до его преобразования 'г!' 'S!':
>>> import math
>>> print('常量 PI 的值近似为: {}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。
>>> print('常量 PI 的值近似为: {!r}。'.format(math.pi))
常量 PI 的值近似为: 3.141592653589793。

Опции: '', а затем имя и формат идентификатора может поле. Это позволяет лучше формат значения. Следующий пример сохранит Pi до трех знаков после запятой:

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

В ':' после прохождения целое число, вы можете по крайней мере убедиться, что существует так много ширина домена. Полезно при использовании в форме озеленения.

>>> 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

Если у вас есть длинная строка формата, и вы не хотите, чтобы отделить их, то при форматировании по имени переменной, а не место было бы хорошо.

Проще всего пройти в словаре, а затем использовать квадратные скобки '[]' для доступа ключ:

>>> 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

Вы также можете использовать переменную перед таблицей '**' для достижения той же функциональности:

>>> 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

Старый стиль строки форматирования

Оператор% может быть достигнуто форматирования строк. Форматной строки аргумента влево, как он похож на Sprintf () формулы, а также право замещения, то возвращаемая строка отформатирована например:

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

Поскольку функция str.format () является относительно новым, большая часть кода Python все еще использует оператор%. Однако, так как этот старый формат, в конечном счете быть удалены из языка, вы должны использовать больше str.format ().


Читать ввод с клавиатуры

Python предоставляет функцию ввода () на входе установлен считывать строку текста из стандарта, стандарт по умолчанию введите является клавиатура.

ввод может получить выражение Python в качестве входных данных и возвращает результат операции.

#!/usr/bin/python3

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

Это дает следующие результаты, соответствующие ввода:

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

Чтение и запись файлов

открытый () возвращает объект файла и базовый синтаксис выглядит следующим образом:

open(filename, mode)
  • Имя файла: имя файла переменной является строка, содержащая значение, которое вы хотите получить доступ к имени файла.
  • Режим работы: Режим определяет открытый файл: чтение, запись, добавление. Смотрите полный список всех возможных значений следующим образом. Это необязательный параметр, режим доступа к файлу по умолчанию только для чтения (r).

Открыть полный список различных режимов файла:

режим описание
R Откройте файл в режиме только для чтения. Файл указатель будет помещен в начале файла. Этот режим используется по умолчанию.
Р.Б. Открыть файл для чтения только в двоичном формате. Будет ли файловый указатель в начало файла. Этот режим используется по умолчанию.
г + Открыть файл для чтения и записи. Будет ли файловый указатель в начало файла.
Р.Б. + Открыть файл для чтения и записи в двоичном формате. Будет ли файловый указатель в начало файла.
вес Открыть файл только для записи. Если файл уже существует, он будет перезаписан. Если файл не существует, создать новый файл.
термометру Открыть файл для записи только в двоичном формате. Если файл уже существует, он будет перезаписан. Если файл не существует, создать новый файл.
ш + Открыть файл для чтения и записи. Если файл уже существует, он будет перезаписан. Если файл не существует, создать новый файл.
термометру + Открыть файл для чтения и записи в двоичном формате. Если файл уже существует, он будет перезаписан. Если файл не существует, создать новый файл.
Открыть файл для добавления. Если файл уже существует, то указатель файл будет помещен в конце файла. Другими словами, после того, как новое содержание будет записано в существующий контент. Если файл не существует, создайте новый файл для записи.
аб Открыть файл для Append в двоичном формате. Если файл уже существует, то указатель файл будет помещен в конце файла. Другими словами, после того, как новое содержание будет записано в существующий контент. Если файл не существует, создайте новый файл для записи.
а + Открыть файл для чтения и записи. Если файл уже существует, то указатель файл будет помещен в конце файла. Это будет режим открыт файл добавления. Если файл не существует, создать новый файл для чтения и записи.
аб + Открыть файл для Append в двоичном формате. Если файл уже существует, то указатель файл будет помещен в конце файла. Если файл не существует, создать новый файл для чтения и записи.

Следующие примеры будут записаны в файл foo.txt в строке:

#!/usr/bin/python3

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

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

# 关闭打开的文件
f.close()
  • Первый параметр это имя файла, который вы хотите открыть.
  • Характер Второй параметр описывает, как использовать файл. Режим может быть 'г' Если файл доступен только для чтения, 'W' только для записи (если файл существует, он будет удален), а 'а' для дополнительного содержимого файла, любые данные, записанные будут автоматически добавляться в конец . 'г +' для чтения и записи. Режим аргумент является необязательным; 'г' будет значение по умолчанию.

Открывает файл foo.txt, выглядит следующим образом:

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

Метод файловых объектов

В этом примере предполагается, что оставшаяся часть создает объект файла под названием F 'S.

f.read ()

Чтобы прочитать содержимое файла, вызовите f.read (размер), который будет считывать определенное количество данных, а затем возвращается в виде строки или байты объекта.

размер является необязательным числовой параметр. Когда размер игнорируется или имеет отрицательное значение, все содержимое файла будет считан и возвращается.

В следующем примере предполагается, что файл foo.txt существует (в приведенном выше примере было создано):

#!/usr/bin/python3

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

str = f.read()
print(str)

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

Вышеприведенная программа, выход:

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

f.readline ()

f.readline () вы читаете одну строку из файла. Newline символ '\ п'. f.readline () возвращает пустую строку, если, пояснил, что он был прочитан до последней строки.

#!/usr/bin/python3

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

str = f.readline()
print(str)

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

Вышеприведенная программа, выход:

Python 是一个非常好的语言。

f.readlines ()

f.readlines () возвращает все строки, содержащиеся в файле.

Если необязательные параметры sizehint, а затем прочитать байты заданной длины, и эти байты разделены линией.

#!/usr/bin/python3

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

str = f.readlines()
print(str)

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

Вышеприведенная программа, выход:

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

Другой способ заключается в перебрать файлового объекта, а затем читает каждую строку:

#!/usr/bin/python3

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

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

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

Вышеприведенная программа, выход:

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

Этот метод очень прост, но он не обеспечивает хороший контроль. И из-за различного механизма обработки, то лучше не смешивать.

f.write ()

f.write (строка) Строка записывается в файл, и возвращает количество записанных символов.

#!/usr/bin/python3

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

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

Вышеприведенная программа, выход:

29

Если вы хотите, чтобы написать некоторые из вещей, которые не является строкой, то вам нужно быть преобразованы:

#!/usr/bin/python3

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

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

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

Выше программы, открыть файл foo1.txt:

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

f.tell ()

f.tell () возвращает позицию файла-объекта в настоящее время находится, это число байтов от начала подсчета файла.

f.seek ()

Если вы хотите изменить текущее положение файла, вы можете использовать f.seek (офсет, from_what) функция.

From_what значение, если это начало 0 указывает на то, если это конец 1 указывает на текущее положение, 2 для файла, например:

  • искать (х, 0): Из начальной позиции, то есть первая строка первого символа файла начинает двигаться х символов
  • искать (х, 1): показывает обратные символы движения х от текущей позиции
  • искать (-х, 2): демонстрирует мобильный символов х от переднего конца файла

from_what значение по умолчанию равно 0, то есть, начало файла. Вот полный пример:

>>> 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 ()

В текстовом файле (не б те режим открытых файлов) только относительно начала файла, чтобы найти.

Когда вы закончите с файлом, вызовите f.close (), чтобы закрыть файл и освободить системные ресурсы, если вы попытаетесь вспомнить файл, создается исключение.

>>> 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

Объект File Существуют и другие методы, такие как isatty () и trucate (), но они, как правило, меньше.


модуль рассол

Модуль Python рассол реализует основную последовательность данных и десериализации.

Нам удалось сохранить операцию сериализации модуля рассол целевой программы, выполняемой информацию в файл для постоянного хранения.

По модуля маринад десериализации, мы можем создать программу для сохранения объекта из файла.

Базовый интерфейс:

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

С помощью этого объекта рассол, чтобы иметь возможность открыть файл как для чтения:

x = pickle.load(file)

Примечание: Чтение строки из файла, а также реконструкцию своих исходных объектов Python.

Файл: файл-подобный объект с правами на чтение () и Readline () интерфейс.

Пример 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()

Пример 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()