본문 바로가기

파이썬

Visual Studio Code 파일 입출력

Visual Studio Code(이하 VSC)로 파이썬 코드 작성 시 기본 경로에 대해 정리해봅니다. 

실습을 위해 hello_prj라는 디렉토리를 생성한 후 해당 디렉토리 안으로 fread01.py와 info.txt 파일을 위치합니다. 각 파일의 내용은 다음 그림과 같습니다. 

 

fread01.py를 Ctrl+F5를 눌러서 실행하면 프로젝트 디렉토리인 hello_prj로부터 info.txt 파일을 읽습니다. 

 

이번에는 hello_prj 디렉토리 안으로 mydir 디렉토리를 생성하고 fread02.py 파일을 생성합니다. 해당 파일은 fread01.py 코드와 동일합니다. 현재 디렉토리에서 info.txt 파일을 읽은 후 이를 출력합니다. 

 

이때 fread02.py에서 `./info.txt`는 어떤 디렉토리를 의미할까요? VSC에서는 따로 설정하지 않으면 프로젝트 디렉토리가 현재 디렉토리입니다. 따라서 hello_prj/info.txt 파일을 fread02.py에서도 열게 됩니다. 하지만 일반적으로 `./info.txt`라고 하면 실행하고자 하는 파이썬 파일과 동일 디렉토리를 의미합니다. 

 

이를 위해서는 VSC에서 추가 설정이 필요합니다. 왼쪽 메뉴에서 Run and Debug를 선택한 후 다시 'create a launch.json file'을 클릭합니다. 

 

 

디버그 구성 선택이 나오면 첫 번째 항목인 'Python 파일'을 선택합니다. 

생성된 launch.json 파일을 다음과 같이 수정합니다. 'cwd'라는 항목이 추가되었고 이를 위해 기존의 마지막 코드에 ','를 추가했습니다. cwd는 current working directory의 약자이며 현재 작업 디렉토리를 어디로 할지를 지정할 수 있습니다. 

 

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: 현재 파일",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "justMyCode": true,
            "cwd": "${fileDirname}"      // 추가된 설정
        }
    ]
}

 

mydir/fread02.py 파일을 다시 실행하면 이제 파일을 찾을 수 없다는 에러가 발생하게 됩니다. 

 

 

에러가 발생한 이유는 fread02.py파일을 기준으로 info.txt 파일은 한 디렉토리 위에 존재하기 때문이죠? 이제 코드를 다음과 같이 변경해야 정상적으로 파일을 찾을 수 있습니다. 

 

f = open("../info.txt")   # 파일 상대 경로 변경
lines = f.readlines()
print(lines)
f.close()