2012-07-27 2 views
3

여기에 비슷한 질문이 있지만 다른 문제가 있다는 것을 알고 있습니다.파이썬에서 코드 문자열을 실행하는 방법은 무엇입니까?

플러그인에 일부 코드 파일이 있지만 플러그인은 소프트웨어 만 알고있는 내부 경로 만 사용하므로 execfile과 함께 사용하려면 해당 경로에 액세스 할 수 없습니다.

그러나이 내부 경로를 사용할 수있는 readInternalFile (path)이라는 내부 파이썬 함수가 있으며이 파일의 내용을 문자열로 반환합니다.

그래서 표준 파이썬 함수 exec을 사용할 수 있다고 생각했지만 최대한 빨리 '\ r \ n'이라는 첫 줄에 대해 불평합니다.

어떻게 해결할 수 있습니까? 나는 readInternalFile이 반환하는 데이터 타입을 출력하고, 그 값은 str이므로 모든 것이 잘되어야한다. 맞습니까? 등

답변

0
s1 = readInternalFile(path) 
statements = s1.split("\r\n") 
for stmt in statements: 
    exec(stmt) 

>>> s1 = "a=32\r\nb=a+5\r\nprint b" 
>>> statements = s1.split("\r\n") 
>>> for stmt in statements: 
... exec(stmt) 
... 
37 
>>> 

작동합니다 아니면 그냥 함께 endlines을 대체 할 수있는 파일의 코드는 그 자체로 작동하고 어떤 구문 오류가 없습니다

, ";" 같은 나는 또한 일반적으로 사용 간부를 언급해야한다

>>> s1 = "a=32\r\nb=a+5\r\nprint b" 
>>> s2 = s1.replace("\r\n",";") 
>>> exec(s2) 
37 

나쁜 생각 ... 또한

당신이 당신의 endline 인코딩 ....

+0

감사를 전환하면이 중단됩니다, 지금은 준다 예기치 않은 EOL 오류. 나는 다른 길을 찾기 위해 폭력을 다할 것이다. –

+0

세미콜론으로 대체하는 두 번째 방법은 아마도 더 잘 작동합니다 ... –

+0

"# //////////////"와 같은 파일 헤더 주석과 함께 파일의 맨 위에있는 빈 줄을 제거했습니다. "이제는 작동합니다. 왜 그런 식으로 작동하지 않을지 모르겠다. 왜냐하면 내가 execfile을 플러그인 외부의 테스트로 사용했기 때문에 모든 것들과 함께 수행합니다. –

관련 문제