함수에 있는 변수 값을 밖으로 빼서, 다른py파일에 import 하려 합니다.

조회수 2578회

안녕하세요. 간단히 설명하자면, control.py의 input()함수에 있는 변수값kkk(result2)를 다른 실행파일(run.py)에 넣고자 하는데요.

이문제를 해결하기위해 [1] global kkk라는 전역변수를 만들어 놓고, [2] input()함수가 app.route로 호출됐을때, 웹에서 받아온 result2 값을 kkk에 저장시킨 후, [3] subprocess로 run.py를 실행시키면, [4] run.py는 control.py의 kkk 변수 값을 import해서 실행 했었습니다.

run.py가 실행되지 않아서, 여러가지로 테스트 해본 결과 control.py에서 input() 함수 안의 kkk(result2) 값을 밖으로 빼낼수 없었습니다.

kkk값을 밖으로 뺴내려고, input()함수의 return 값을 2개로( return (kkk,redirect('/',302) ) 시도 해봤는데 안되고 결국 여기에 질문 남깁니다.. 문제를 해결할수 있게 방법론 등을 조언해 주시면 갑사하겠습니다ㅠ.

control.py

...
global kkk

@app.route('/')
def main():
    connection = engine.connect()                      # DB 연결
    result = connection.execute("select * from users") # DB에서 result1,2,값 가져옴
    return render_template('index.html',table=result)  # 홈페이지에 정의해둔 table에 값 뿌려줌

#여기부터 입니다. ---------- --------- ------------ --------
@app.route('/input', methods = ['POST'])
def input():
    result1 = request.form['a']   # 웹에서 a 값 가져옴
    result2 = request.form['b']   # 웹에서 b 값 가져옴
    ...
    DB에 result1,2 값 저장
    ...

    kkk = result2    # result2 값을 run.py에 보내기위해 kkk에 저장

    path="python run.py"                 
    subprocess_check_out(path, shell=True) #subprocess로 run.py 파일 실행

    return redirect('/',302)



run.py

...
control.py에서 subprocess로 실행하려는 파일
...
from control import kkk    # control.py에서 변수 kkk(result2)를 import 해 실행

run(kkk)

index.html

...
 <form action="http://localhost:5000/input" method="post">
                <label >a 경로:</label>
                <input type="text" name="a">
                <label >b 경로:</label>
                <input type="text" name="b">
                  <label >생성:</label>
                <input type="submit" value="create">
            </form>
...

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 전역은 쓰지 마세요 ㅠㅠ Global variable is evil !! 차라리 역으로 control.py가 run.py를 import해 와서 그 안의 함수(run)를 실행하는게 나아 보입니다. doodoji 2018.10.26 16:44
  • 답변 감사합니다.ㅎ 결국 input()함수에서 가져오지 못했어요ㅠ 대신 DB저장 하면 마지막 순번으로 부여되는데, 그 순번 값을 가져오는 형식으로 일단 구현 해놨습니다ㅠ run.py 전체 내용을 함수로 담아서 한번 실행 해봐야겠네요.. 반대 방향은 생각 못해봤어요.. run.py 코딩이 함수 포함해서 400줄 이상이라서.. 답변 감사해요! 알 수 없는 사용자 2018.10.26 19:51

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)