데이터분석/둘째주
파이썬 Python : 반복 가능한 객체의 파일 쓰기 writelines( )
핑크댕댕이
2023. 10. 16. 04:27
728x90
iterable 객체 : 반복 가능한 객체
- 대표적으로 iterable한 타입 - list , tuple, dict, set, str, bytes, range
- iterable한 타입인지 확인 - instance(변수명, collections.Iterable)
iterable한 타입이 맞으면 True 반환
iterator 객체 : 값을 차례대로 꺼낼 수 있는 객체
- iterator는 iterable한 객체를 내장함수(iter) 또는 iterable 객체의 메소드로 객체를 생성할 수 있습니다.
- 파이썬 내장함수 iter()를 사용해 iterator 객체를 만들수 있습니다.
a = [1,2,3]
a_iter = iter(a)
print(type(a_iter))
-- 출력 -- |
<class 'list_itertator'> |
- iterable객체는 매직메소드 __iter__ 메소드를 가지고 있습니다.
b = {1, 2, 3}
dir(b)
-- 출력 -- |
['__and__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__iand__', '__init__', '__init_subclass__', '__ior__', '__isub__', '__iter__', '__ixor__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__or__', '__rand__', '__reduce__', '__reduce_ex__', '__repr__', '__ror__', '__rsub__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__xor__', 'add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update'] |
b = {1, 2, 3}
b_iter = b.__iter__()
print(type(b_iter))
-- 출력 -- |
<class 'set_iterator'> |
- iterator는 내장함수(next( )) 또는 iterator 매직 메소드(__next__( ))로 값을 하나씩 꺼낼 수 있습니다.
a = [1, 2, 3]
a_iter = iter(a)
print(next(a_iter))
print(next(a_iter))
print(next(a_iter))
-- 출력 -- |
1 2 3 |
a = [1, 2, 3]
a_iter = iter(a)
print(a_iter.__next__())
print(a_iter.__next__())
print(a_iter.__next__())
-- 출력 -- |
1 2 3 |
728x90
writelines( )
writelines()는 리스트 또는 튜플 데이터(반복 가능한 자료형, iterable)를 파일에 쓰기 위한 함수이다.
language = ['c/c++', 'jave', 'c#', 'python', 'javascript']
url = '경로/~/'
for item in language:
with open(url+'파일명.txt', 'a') as f:
f.write(item)
f.write('/n')
# writelines() 함수 사용
language = ['c/c++', 'jave', 'c#', 'python', 'javascript']
url = '경로/~/'
with open(url+'파일명.txt','a') as f:
# f.writelines(language)
f.writelines(item + '\n' for item in language) #줄바꿈 추가
-- 출력 -- |
[실습]
딕셔너리에 저장된 과목별 점수를 파일에 저장하는 코드를 작성하자.
(국어: 85, 영어: 90, 수학: 92, 과학: 79, 역사: 82)
scoreDict = {'kor':85, 'eng':90, 'math':92, 'sci':79, 'his':82}
url = '경로/~/'
for key in scoreDict.keys():
with open(url+'파일명.txt', 'a') as f:
f.write(key + '\t' + str(scoreDict[key]) + '\n')
-- 파일에 저장된 값 -- |
kor : 85 eng : 90 math : 92 sci : 79 his : 82 |
# print() file옵션 사용
# 변수의 값 형태 그대로 저장됨
# iterable한 타입전부 가능
scoreDict = {'kor':85, 'eng':90, 'math':92, 'sci':79, 'his':82}
url = '경로/~/'
with open(url+'파일명.txt', 'a') as f:
print(scoreDict, file=f)
-- 파일에 저장된 값 -- |
{'kor':85, 'eng':90, 'math':92, 'sci':79, 'his':82} |
반응형