Основы ввода и вывод данных

Введение

Примеры

  • 1

    Использование input () и raw_input ()

    raw_input будет ждать пользователя , чтобы ввести текст , а затем возвращать результат в виде строки.

     foo = raw_input("Put a message here that asks the user for input")
    
     

    В приведенном выше примере foo будет хранить все входные пользователь предоставляет.

    input будет ждать пользователя , чтобы ввести текст , а затем возвращать результат в виде строки.

     foo = input("Put a message here that asks the user for input")
    
     

    В приведенном выше примере foo будет хранить все входные пользователь предоставляет.

  • 4

    Использование функции печати

    В Python 3 функции печати представлены в виде функции:

     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.
    
     

    В Python 2 print изначально был оператором, как показано ниже.

     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.
    
     

    Примечание: использование from __future__ import print_function в Python 2 позволит пользователям использовать print() работают так же , как и Python 3 кода. Это доступно только в Python 2.6 и выше.

  • 1

    Функция запрашивать у пользователя номер

     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)
    
    
    
     

    И использовать это:

     user_number = input_number("input a number: ", "that's not a number!")
    
     

    Или, если вы не хотите «сообщение об ошибке»:

     user_number = input_number("input a number: ") 
  • 1

    Печать строки без перевода строки в конце

    В Python 2.x, чтобы продолжить линию с print , конец print заявления с запятой. Это автоматически добавит пробел.

     print "Hello,",
    print "World!"
    # Hello, World!
     

    В Python 3.x, то print функция имеет дополнительный end параметр , который является то , что он печатает в конце данной строки. По умолчанию это символ перевода строки, поэтому эквивалентен этому:

     print("Hello, ", end="\n")
    print("World!")
    # Hello, 
    # World!
    
     

    Но вы могли бы передать в других строках

     print("Hello, ", end="")
    print("World!")
    # Hello, World!
    
    print("Hello, ", end="<br>")
    print("World!")
    # Hello, <br>World!
    
    print("Hello, ", end="BREAK")
    print("World!")
    # Hello, BREAKWorld!
    
     

    Если вы хотите получить больше контроля над выходом, вы можете использовать sys.stdout.write :

     import sys
    
    sys.stdout.write("Hello, ")
    sys.stdout.write("World!")
    # Hello, World! 
  • 1

    Читать со стандартного ввода

    Программы Python могут читать UniX трубопроводов . Вот простой пример того, как читать из stdin :

     import sys
    
    for line in sys.stdin:
        print(line) 

    Имейте в виду , что sys.stdin представляет собой поток. Это означает, что цикл for завершится только после завершения потока.

    Теперь вы можете направить вывод другой программы в вашу программу на Python следующим образом:

     $ cat myfile | python myprogram.py 

    В этом примере cat myfile может быть любая команда Unix , которая выводит на stdout .

    Кроме того , с помощью модуля FileInput может пригодиться:

     import fileinput
    for line in fileinput.input():
        process(line)
    
    
     
  • 1

    Ввод из файла

    Ввод также может быть прочитан из файлов. Файлы могут быть открыты с помощью встроенной функции open . Использование with <command> as <name> , open with <command> as <name> синтаксис ( так называемый «Контекст - менеджер») делает работу с open и получить дескриптор файла супер легко:

     with open('somefile.txt', 'r') as fileobj:
        # write code here using fileobj
    
     

    Это гарантирует, что когда выполнение кода покидает блок, файл автоматически закрывается.

    Файлы могут быть открыты в разных режимах. В приведенном выше примере файл открывается только для чтения. Чтобы открыть существующий файл для чтения только использовать r . Если вы хотите , чтобы прочитать этот файл как байты использовать rb . Для добавления данных в существующий файл с помощью . a Используйте w , чтобы создать файл или перезаписать существующие файлы с тем же именем. Вы можете использовать r+ , чтобы открыть файл для чтения и записи. Первый аргумент open() это имя файла, второй режим. Если режим остается пустым, то по умолчанию будет 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']
    
     

    Если размер файла крошечный, безопасно прочитать все содержимое файла в память. Если файл очень большой, часто лучше читать построчно или по частям и обрабатывать ввод в том же цикле. Для этого:

     with open('shoppinglist.txt', 'r') as fileobj:
        # this method reads line by line:
        lines = []
        for line in fileobj:
            lines.append(line.strip())
    
     

    При чтении файлов учитывайте характерные для операционной системы символы перевода строки. Хотя for line in fileobj автоматически удаляет их, это всегда безопасно вызывать strip() на линии чтения, как показано выше.

    Открытые файлы ( fileobj в приведенных выше примерах) всегда указывают на определенное место в файле. Когда они первые открыли точки дескриптор файла в самом начале файла, который является положение 0 . Дескриптор файла может отображать его текущее положение с tell :

     fileobj = open('shoppinglist.txt', 'r')
    pos = fileobj.tell()
    print('We are at %u.' % pos) # We are at 0.
    
     

    После прочтения всего содержимого позиция обработчика файла будет указана в конце файла:

     content = fileobj.read()
    end = fileobj.tell()
    print('This file was %u characters long.' % end)
    # This file was 22 characters long.
    fileobj.close()
    
     

    Позиция обработчика файла может быть установлена ​​на то, что нужно:

     fileobj = open('shoppinglist.txt', 'r')
    fileobj.seek(7)
    pos = fileobj.tell()
    print('We are at character #%u.' % pos)
    
     

    Вы также можете прочитать любую длину из содержимого файла во время данного вызова. Чтобы сделать это передать аргумент для read() . Когда read() вызывается без аргументов он не будет читать до конца файла. Если передать аргумент он прочтет , что количество байтов или символов, в зависимости от режима ( rb и r соответственно):

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

    Чтобы продемонстрировать разницу между символами и байтами:

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

Синтаксис

Параметры

Примечания