Поиск…


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

Python 2.x 2.3

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

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

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

Python 3.x 3.0

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

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

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

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

Python 3.x 3.0

В 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.x 2.3

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

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 и выше.

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

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

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

Python 2.x 2.3

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

print "Hello,",
print "World!"
# Hello, World!
Python 3.x 3.0

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

Читать с stdin

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

import sys

for line in sys.stdin:
    print(line)

Имейте в sys.stdin что sys.stdin - это поток. Это означает, что for-loop прекратится только после завершения потока.

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

$ cat myfile | python myprogram.py

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

В качестве альтернативы, использование модуля fileinput может оказаться полезным:

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

Вход из файла

Входные данные также можно считывать из файлов. Файлы могут быть открыты с помощью встроенной функции open . Использование a with <command> as <name> синтаксис 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'>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow