티스토리 뷰

string 형태가 아닌 다른 타입의 변수를 f.write()함수 내부로 전달하면 아래와 같이 str 형태의 데이터를 전달하라며 오류가 난다.

a = {"A":143}

with open (..., "W") as f:
	f.write(a)

# TypeError: write() argument must be str, not dict

 

그럴 때 write 함수 내에서 변수를 repr()로 감싸서 전달하면 정상적으로 저장이 된다.

a = {"A":123}

with open (... ,"W") as f:
	f.write(repr(a))
    
# 정상적으로 저장된다.

 

다만 이렇게 저장된 변수는 string 형태로 저장되기 때문에 다시 원하는 타입 (딕셔너리 등)의 형태로 이용하려면 eval()함수를 사용해야한다.

with open ("test.txt", "r") as f:
    for line in f:
        a = line

print("a :" ,a)
print("type(a) :", type(a))

print("eval(a) :",eval(a))
print("type(eval(a)) :",type(eval(a)))

# a : {'A': 123}
# type(a) : <class 'str'>
# eval(a) : {'A': 123}
# type(eval(a)) : <class 'dict'>

 

댓글