Python Language
기본 입력 및 출력
수색…
input () 및 raw_input () 사용
raw_input
은 사용자가 텍스트를 입력 할 때까지 기다렸다가 그 결과를 문자열로 반환합니다.
foo = raw_input("Put a message here that asks the user for input")
위의 예제에서 foo
는 사용자가 입력 한 내용을 저장합니다.
input
은 사용자가 텍스트를 input
할 때까지 기다린 다음 결과를 문자열로 반환합니다.
foo = input("Put a message here that asks the user for input")
위의 예제에서 foo
는 사용자가 입력 한 내용을 저장합니다.
인쇄 기능 사용
파이썬 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.
파이썬 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.
참고 : Python 2 from __future__ import print_function
을 사용하면 사용자가 Python 3 코드와 동일한 print()
함수를 사용할 수 있습니다. 이것은 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: ")
끝에 개행 문자가없는 문자열 인쇄하기
파이썬 2.X에서 사용하는 전화선 계속 print
최종 print
쉼표로 문을. 자동으로 공간이 추가됩니다.
print "Hello,",
print "World!"
# Hello, World!
파이썬 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에서 읽기
파이썬 프로그램은 유닉스 파이프 라인 에서 읽을 수있다. 다음은 stdin
에서 읽는 간단한 예제입니다 :
import sys
for line in sys.stdin:
print(line)
sys.stdin
은 스트림이라는 점에 유의하십시오. 이것은 for-loop가 스트림이 끝날 때만 종료된다는 것을 의미합니다.
이제 다음과 같이 다른 프로그램의 출력을 파이썬 프로그램에 파이프 할 수 있습니다.
$ cat myfile | python myprogram.py
이 예제에서 cat myfile
은 stdout
출력하는 unix 명령 일 수 있습니다.
또는 fileinput 모듈을 사용하면 편리합니다 :
import fileinput
for line in fileinput.input():
process(line)
파일에서 입력
파일로부터 입력을 읽을 수도 있습니다. 파일은 내장 함수 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
으로 그것들 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'>