본문 바로가기

About coding/Today I learned

2023년 03월 29일

문제:

팀과제로 게임을 만드는 중인데, 내가 엔딩 부분을 맡아서 작업하는 중에

이렇게 주석처리된 부분처럼 다시 게임 시작 부분으로 사용자를 리턴시키는 명령을 만들어야 하는데...

음... 검색하다보니 "스크립트를 재시작" 시키는 명령을 찾으면 될 것 같았다.

 

 

시도:

그래서 하다가 아래와 같은 코드를 찾았는데...

import os import sys
sys.stdout.flush()
os.execv(sys.argv[0], sys.argv)

 

이걸 코드 밑에도 넣어보고...

결과는...

안된다.

 

GPT에 물어보니 이건 안에다 써 넣는 코드가 아니라 파일을 따로 만들어서 써넣고 장치시키는 코드라는데,

restart.py 파일을 만들어서 넣고 실행해봐도 안된다.

아마 뭔가 연결해야 하는 것 같아서 argv자리가 인수 넣는 자리 같길래 내 main.py 파일의 파일명을 넣어봤는데,

그래도 안된다.

그럼 main.py에서도 매개변수로써 restart.py 파일의 코드들을 받는 자리를 만들어야 하는 거 아닐까???

하는 느낌적인 느낌의 의문을 갖고 있지만

일단은 팀프로젝트가 바쁘기 때문에 불가하다 치고 넘어간다.

 

위 코드를 치는 방법 말고도

내 터미널의 파이썬 파일 실행을 종료하고 새로 파이썬 파일의 스크립트를 윗줄에서부터 실행시키는 코드는 없는지...

그렇다고 전체를 while 문에 넣을 수는 없고 ㅋㅋㅋ

다른 방법은 없을 지 생각해 보는 중...

 

오 이런게 있다는데 해볼까

 

오!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 되는 거 같다!!

된다 돼!!! ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

해결:

import subprocess

subprocess.call(["python", "script.py"]) #여기서 python은 파이썬 인터프리터의 경로이고
# script.py는 실행할 파이썬 파일의 이름으로써, 이 코드가 적힌 엄마파일의 이름을 그대로 적어줘도 된다.

알게된점:

1. 일단은 GPT에 질문할 때 한 번에 원하는 대답이 안나와도,  여러가지 문장으로 다시 질문해보면 답이 나올 수 있다는 점

2. 포기하지 않으면 문제가 해결될 순 있으나, 걸리는 시간을 잘 어림 잡아야 작업 효율을 챙길 수 있다는 점.

'About coding > Today I learned' 카테고리의 다른 글

2023년 03월 31일 TIL  (0) 2023.03.31
2023년 03월 30일 TIL  (0) 2023.03.30
2023년 03월 28일 TIL  (0) 2023.03.28
2023년 03월 27일 TIL  (0) 2023.03.27
2023년 03월 24일 TIL  (0) 2023.03.26