0
파이썬에서 변수에 stdout을 저장하려고합니다. 내 현재의 솔루션은 파이썬 셸에서 잘 작동하지만 스크립트로 실행하면 오류가 발생합니다. 내가 무엇을 기대변수에 파이썬 표준 출력을 저장하는 것은 파이썬 쉘에서 작동하지만 스크립트로는 작동하지 않습니다.
가import yaml
import sys
from slackclient import SlackClient
from io import StringIO # Python3
slack_token = "SOME TOKEN HERE"
sc = SlackClient(slack_token)
old_stdout = sys.stdout
result = StringIO()
sys.stdout = result
row_message = '[{"title": "Test", "pretext": "this is an example message!", "text": "Super Awesome Test!"}]'
sc.api_call(
"chat.postMessage",
channel="#channel_name",
username="My User",
icon_url="http://some.url.here/",
attachments=row_message
)
sys.stdout = old_stdout
result_string = result.getvalue()
example = yaml.load(result_string)['ts']
print(example)
파이썬 쉘에서 내 출력이됩니다 : 여기 내 현재 테스트 코드는
>>> print(example)
1489460593.207577
>>>
을하지만 코드를 저장하고 스크립트로 실행하면
# ./test
Traceback (most recent call last):
File "./test", line 22, in <module>
example = yaml.load(result_string)['ts']
TypeError: 'NoneType' object is not subscriptable
누구나 나를 파이썬 셸에서 작동하지만 스크립트로 작동하지 않는 이유를 밝힐 수 있습니까? 이 작품을 만들기 위해 무엇을 시도 할 수 있습니까? 감사.
아무 것도 인쇄되지 않으므로 아무 것도 출력되지 않습니다. 아마도 Slack은 문자열을 반환하고 인쇄하지는 않습니다. 통역사가 어딘가에 저장하지 않은 결과를 처리하기 때문에 통역사에 인쇄됩니다. stdout 스왑을 제거하면 어떻게됩니까? 값이 인쇄됩니까? 내 추측은 그렇지 않다. 그냥 변수에 직접 저장하고 stdout을 사용하는 것을 그만 두십시오. – zstewart