파이썬 open함수 질문합니다..
교재 앞쪽을 공부할 때 open함수 형식은
변수명 = open("파일명","모드")
라고 배웠는데 사진의 예제에서는 fName에 큰따옴표가 붙어있지 않네요ㅠㅠ 왜 그런건가요???
안녕하세요~
열정적으로 프로그래밍을 공부하시는 고구마호박님
항상 응원합니다!
fName에 큰 따옴표가 붙어있지 않다고 질문을 주셨는데요.
fName과 관련된 줄번호만 설명을 보여드릴게요.
2 : 먼저 fName 변수에 ""을 할당해서 문자열 변수로 만들었어요.
4 : input()함수는 가로 안에 사용자가 입력한 변수를 할당하는 함수에요.그래서 fName은 아래와 같이 할당돼요.
5 : open함수의 첫번째 파라미터는 큰따옴표가 있어야해요. 즉, 문자열이여야 합니다.
그래서 할당된 fName은 "파일명을 입력하세요"라는 문자열이므로 문제가 되지 않습니다!
정리하자면
큰따옴표로 감싸져 있다는건 해당 파라미터 위치에 문자열이 들어가야한다는 말이에요.
fName 변수는 문자열 변수이므로 문제가 되지 않는 상황입니다!
도움이 되셨으면 좋겠어요~
fName = input("파일명을 입력하세요: ")
코드에서 사용자에게 입력받은 입력값을 fName에 넣어 주고 있습니다.
fName은 변수이기 때문에 큰따움표나 작은 따움표가 들어가지 않습니다.
문자열 변수이기 때문에 그렇습니다.
큰따움표를 붙이고 싶다면 문자열 포멧팅을 사용해서 변경할 수 있습니다.
안녕하세요
inFp=open(fName,"r")에서 왜 fName에는 큰 따옴표가 붙지 않느냐는 질문을 해주셨는데요
결론만 말씀드리면 바로 위의 4번째 줄에 fName =input("파일명을 입력하세요: ")에서 우리는 fName이라는 변수를 선언해주었는데 이 변수는 string 문자열의 형식을 갖는 변수입니다.
큰따옴표로 묶는 것은 문자열 형식이라는 것을 표시해주는 약속입니다.
그렇기 때문에 string 문자열 형식을 그대로 사용하면 이것은 문자열입니다 라는 약속이 필요가 없답니다.
조금 이해를 돕기위해 재미있는 실험 몇가지를 도와드릴까요?
str="Hello" print(str)이라는 py파일을 실행할경우
>>Hello라는 결과값을 얻을 수 있어요. str이라는 변수에 "Hello"라는 문자열을 저장해두었다가 출력하는 내용의 함수이지요.
위에 str="Hello"에서 큰따옴표를 지운다면? Hello는 정의되지 않은 형식이라는 메시지가 출력되지만 요건 질문내용이랑 크게 상관없으니 패스~
자 그럼 질문내용으로 돌아가서 문자열은 큰따옴표로 묶어주어야하는데 큰따옴표로 묶지않은 문자열이 있다? 삐슝빠슝~ 그 정체는 바로 변수 입니다.
input함수는 사용자입력을 받아 그값을 return해주는 함수 인데요. return한다는 것은 함수가 종료가 되었을때 자신을 불러주었던 곳에 그 값을 되돌려준다는 뜻입니다. 그리고 input뒤의 소괄호 안의 문자열은 input함수가 실행될때 표시해주는 안내문자열을 입력하는 곳입니다. 따라서
fName = input("파일명을 입력하세요: ")라는 함수가 의미하는 것은
>>파일명을 입력하세요:라는 문구가 출력이되고 사용자가 입력을 하고 엔터를 눌러 행을 변경할 경우 그값을 fName이라는 변수에 저장한다는 의미를 갖고 있답니다. 만약 제가
>>파일명을 입력하세요: a.txt라고 입력하고 엔터를 누르면 아래 두문장은 같은 의미를 갖는 다는 뜻입니다.
fName = input("파일명을 입력하세요: ") fName="a.txt"그러면 자연스럽게
아래 두개 문장도 같은 의미를 갖겠군요
inFp =open(fName,"r")inFp=open("a.txt","r")왜냐하면 fName="a.txt"니까요!
도움이 되셨길 바라며 언제나 질문이 있으시다면 부담없이 질문해주세요~
4번째 줄의 input 명령은 파일명을 입력받아서
fName 변수에 저장하라는 뜻이구요
5번에서는 fName 변수 안에 저장되어 있는 파일명을 가져와야하기때문에
fName 이라고 한것입니다
만약 이름을 입력안받고 고정으로 다른 이름으로 정하고 싶다면?
"sample.txt" 이런식으로 fname 대신에 따옴표로 묶어 사용하시면 됩니다
왜 따옴표를 쓰지 않았냐면 파일의 주소가 아닌 변수를 입력받기 때문입니다.
위의 코드를 자세히 보면 open 함수 이전에 fName 이란 변수를 만들어 주소값을 입력받게 되는데 그 입력값을 open 함수에서 꺼내서 쓰기 때문에 따옴표를 쓰지 않는 것입니다.
만약 변수를 사용하지 않는다면 따옴표를 쓰는 것이 맞지만 위의 경우는 변수를 이용한 것이기 때문에 따옴표를 쓰지 않은 겁니다.