Python/Python 기초

[Python] Python File

데이터 세상 2021. 2. 23. 13:35
728x90
반응형

Python 출력

print()

  • print(출력대상1, 출력대상2, ..., sep='-', end='-')
  • python 표준 출력 함수
  • sep: 출력 시 출력 대상들의 사이에 구분자를 삽입(기본값: 공백)
  • end: 마지막 문자열을 출력하고 이어서 출력할 문자 기술(기본값 : 줄바꿈 문자)
  • file: 출력 위치를 변경(기본값:  sys.stdout(표준 출력 장치, 모니터))
  • flush: 스트림을 강제적으로 flush할지를 지정(기본값: False)
print("일","이",1,2)
print("일","이",1,2,sep='-')
print("첫번째", end='---->')
print("두번째")

>>
일 이 1 2
일-이-1-2
첫번째---->두번째
with file("test.txt", "w") as f:
	print("hello, world!", file=f)

>> test.txt
hello, world!

 

formatting

  • 데이터를 가지고 작업할 때 구조화된 출력(테이블 등)을 생성하고자 할 때 사용
  • 형식화된 문자열을 만든 다음 이를 출력하는 방식

%

  • %d: int
  • %f: float
  • %s: string
  • %c: 문자 1개
  • %%: %자체

format()

  • '문자열'.format(포맷할 자료)
  • {표현식:포맷}
print('%d 와 %d 를 더하면 %d" %(a, b, (a+b))
>> 3 와 5 를 더하면 8

print('문자열 포맷팅 예시 {}').format(2))
>> 문자열 포맷팅 예시 2
ch = '이름'
print('내 이름은: {}'.format(ch))
>> 내 이름은: 이름

# 실수(소수점) formatting
fl = 235.345343
print("소수점 포맷팅하기 : {:.3f}".format(fl))
>> 소수점 포맷팅하기 : 235.345

# 변수명을 이용한 formatting
커피 = '커피'
print('나는 오늘 {음료}를 {개수} 잔이나 마셨다'.format(음료=커피, 개수=3))
>> 나는 오늘 커피를 3 잔이나 마셨다
  • 길이와 정렬
    • {:길이} : 출력할 데이터의 길이를 지정, 문자열(왼쪽 정렬), 숫자(오른쪽 정렬)
    • {:<길이} : 왼쪽 정렬
    • {:>길이} : 오른쪽 정렬
    • {:^길이} : 가운데 정렬
print('{:15}'.format('good'))
print('{:<15}'.format('good'))
print('{:>15}'.format('good'))
print('{:^15}'.format('good'))
print('{:15}'.format(22))
print('{:<15}'.format(22))
print('{:>15}'.format(22))
print('{:^15}'.format(22))

>>
good
good
           good
     good
             22
22
             22
      22
  • 0 으로 채우기, 부호 출력
# 0으로 채우기
for x in range(1, 4):
	print('[{0:02d} [{1:03d}] [{2:04d}]'.format(x, x*x, x*x*x))
>>
[01 [001] [0001]
[02 [004] [0008]
[03 [009] [0027]

# 부호 출력
print('[{0:05d}] [{1:05d}] [{2:05d}]'.format(1, -2, 3))
print('[{0:+05d}] [{1:+05d}] [{2:+05d}]'.format(1, -2, 3))
>>
[00001] [-0002] [00003]
[+0001] [-0002] [+0003]
  • 채움문자와 숫자 표현식: {[인덱스]:[채움문자][정렬][길이][,|_][형식문자]}
    • 공백을 채움문자로 채움
    • , : 천단위 마다 콤마를 삽입
    • _: 천단위 마다 밑줄을 삽입
    • E: 숫자를 지수 형식으로 변환
    • =: 부호를 항상 제일 앞에서 출력(숫자 형식에만 사용)
print('[{0:*<5d}] [{1:*<5d}] [{2:*<5d}]'.format(1, -2, 3))
print('[{0:=5d}] [{1:=5d}] [{2:=5d}]'.format(1, -2, 3))
print('[{0:=05d}] [{1:=05d}] [{2:=05d}]'.format(1, -2, 3))
print('[{0:=5d}] [{1:=5d}] [{2:=5d}]'.format(132323333, -23453235, 3423423554))

>>
[1****] [-2***] [3****]
[    1] [-   2] [    3]
[00001] [-0002] [00003]
[132323333] [-23453235] [3423423554]

f-string

python 3.6 버전 이상부터 지원

다른 포매팅과 달리 표현식을 지원

drink = '커피'
nums = 3
print(f'나는 오늘 {drink}를 {nums+1} 잔이나 마셨다')
>>
나는 오늘 커피를 4 잔이나 마셨다

dictionary formatting

s = {'name':'JJ', 'shares': 100, 'price': 102.3}
print('{name:10s}{shares:10d}{price:10.2f}'.format_map(s))
>>
JJ               100    102.30

 

User Input

input()

  • 사용자가 입력한 값을 특정 변수 등에 할당하여 처리하고 싶을 때 사용
  • 모든 입력에 대해서 string으로 처리
  • 사용자로부터 입력받은 자료를 숫자형 자료로 활용하고 싶으면 타입 캐스팅이 필요
integer = int(input('정수형 숫자를 입력하세요: '))
real = float(input('정수형 숫자를 입력하세요: '))

 

File

file path(파일 경로)

  • 절대 경로: 파일이 가지고 있는 고유한 경로
    • 최초의 시작점으로부터 경유한 경로를 전부 기입
    • 현재 위치와 무관하게 항상 해당 파일에 접근 가능
  • 상대 경로: 현재 내 위치에서부터 해당 파일까지의 경로
    • 현재의 파일 위치를 기준으로 경로를 계산
    • 현재 파일의 위치: ./
    • 현재 파일의 상위 폴더: ../

open(file_path, mode='', encoding= '')

  • file_path: 파일 경로
  • mode: 파일 모드
파일 모드 설명 비고
r 읽기 모드 파일에 새로운 내용을 쓰거나 수정이 불가능
w 쓰기 모드 파일에 새로운 내용을 덮어씀(기존 내용 삭제)
a 수정 모드 파일에 새로운 내용 추가(기존 내용 + 새로운 내용)
rb 바이너리 읽기 모드 바이너리 파일을 읽을 때 사용
wb 바이너리 쓰기 모드 바이너리 파일을 쓸 때 사용
r+ 읽기와 쓰기 모드 파일의 내용을 읽고 쓰기도 가능
t 텍스트 모드  
  • 인코딩
    • 지정하지 않으면 플랫폼을 따름
    • utf8: 대표적인 유니코드 인코딩 방식
# open 함수를 사용하는 경우 close() 함수 반드시 사용해야 한다.
# close(): 파일을 닫고, 열린 파일이 차지하는 시스템 자원을 해제한다.
file_path = "test.txt"
data = "파일 데이터를 추가합니다."
file = open(file_path, 'w')
file.write(data)
file.close()


# with문을 사용하는 경우 명시적으로 close()로 파일을 닫지 않아도 된다.
with (file_path, 'w') as file:
	file.write(data)

write()

with문 활용하여 파일 쓰기

with open(file_path, mode='w') as f:
	f.write("test")

파일 읽기

함수 설명
read(size) 파일 전체를 한 번에 읽어서 string으로 반환
텍스트 모드의 경우에는 문자열을 반환
바이너리 모드의 경우에는 바이트 객체를 반환
size: 정수를 지정하며 선택적 인수
readline 파일을 한 줄만 읽어서 string으로 반환
readlines(size) 파일을 줄 단위로 모두 읽어서 list로 반환
메모리에 전체 파일을 불러올 필요 없이 줄 단위로 효율적으로 읽을 수 있으며, 완전한 행을 반환
size: 파일에서 해당 바이트 수만큼 읽고, 한 행을 완성하는 데 필요한 만큼 더 읽어서 반환
개행문자(\n)이 남아 있음
개행문자는 문자열의 끝에 남으며, 파일의 마지막 행에서만 생략됨
개행문자 제거 등의 처리를 해야 한다.

파일 탐색

  • tell(): 파일의 현재 위치를 나타내는 정수를 반환, 바이트 단위로 측정
  • seek(offset, from-what): 파일 내 탐색 위치를 변경할 때 사용
  • peek(n): 파일 포인터 위치를 이동하지 않고, n 바이트를 반환

fileno()

  • 파일 descriptor를 반환 (파일 descriptor를 가진 파일 객체에서난 사용 가능)

 


References

 

 

 

728x90
반응형

'Python > Python 기초' 카테고리의 다른 글

[Python] Python Exception Handling  (0) 2021.02.24
[Python] Python Class  (0) 2021.02.23
[Python] Python Function  (0) 2021.02.23
[Python] Python Flow Control  (0) 2021.02.22
[Python] Programming Basic  (0) 2021.02.22