파이썬 함수에 존재하는 리스트를 가져오고 싶습니다.
조회수 789회
import sys
import os
def get_fruit_list(fruit_list):
fruit_path = os.getcwd() + '\\fruit_list.txt'
try:
fruits = open(fruit_path, 'r')
fruit_love = fruits.readlines()
for fi in fruit_love:
fruit_list.append(fi)
except FileNotFoundError:
fruit_list = ['사과', '포도', '바나나']
aaa = []
get_fruit_list(aaa)
print(aaa)
get_fruit_list 함수는 fruit_list.txt 파일을 열어서 리스트로 저장합니다. 만약 파일이 존재하지 않으면 고정된 fruit_list = ['사과', '포도', '바나나'] 리스트를 사용하는데요.
fruit_list.txt 파일이 존재할 때는 문제없이 txt 파일내의 데이터를 리스트로 가져옵니다. 근데 파일이 존재하지 않을때는 리스트에 데이터가 없습니다.
파이참에서 fruit_list = ['사과', '포도', '바나나']의 fruit_list가 의미없는 변수라고 나오는데 저 데이터를 메인함수에 가져올려면 어떻게 해야될까요?
2 답변
-
except OSError: fruit_list.append('사과') fruit_list.append('포도') fruit_list.append('바나나')
본문과 같이 변수를 생성하지말고 위와 같이 바로 append 메소드를 호출하세요
파이썬은 c하고는 달리 &와 같은 참조연산자가 없습니다. 물론 리스트는 참조로 전달되긴 합니다만 fruit_list = [] 하면 새로운 지역 변수를 만든 것이 됩니다.
-
https://docs.python.org/3/library/functions.html#open
상기 링크를 클릭하여 문서를 보시면
Open file and return a corresponding file object. If the file cannot be opened, an OSError is raised.
라고 되어 있습니다.
즉 예외 처리가 잘못되었습니다.
FileNotFoundError 가 아니라 OSError 처리를 해주세요.
댓글 입력