python - 我如何在 PyCharm 中使用 curses?

标签 python macos pycharm macos-sierra

因此,我查看了 Internet 的最深处,似乎无法找到解决我的问题的方法。我在 MacOS 10.12.4 上使用 PyCharm Community Edition 2017.1.1,并在以下代码中使用 curses 和 Python 3.6.1。

#!/usr/local/bin/python3
import sys
import urllib.request
import json
import time
from datetime import datetime
from datetime import timezone
import curses
import ssl

class Stock:
    def stockFromYahooWebService(ticker):
        url = "https://finance.yahoo.com/webservice/v1/symbols/{}/quote?format=json&view=detail".format(ticker.upper())
        user_agent = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1"

        urlrequest = urllib.request.Request(url, data=None, headers={"User-Agent": user_agent})

        ssl._create_default_https_context = ssl._create_unverified_context

        urlcontent = json.loads(urllib.request.urlopen(urlrequest).read().decode())
        fields = urlcontent['list']['resources'][0]['resource']['fields']    
        return fields
stdscr = curses.initscr()
curses.cbreak()
stdscr.keypad(1) 
try: 
    if len(sys.argv) == 2:
        ticker = sys.argv[1]
        while ('true') :
            stdscr.erase()
            fields = Stock.stockFromYahooWebService(ticker) 
            utctime = datetime.strptime(fields['utctime'], "%Y-%m-%dT%H:%M:%S+%f")
            localtime = utctime.replace(tzinfo=timezone.utc).astimezone(tz=None)
            localtimeString = localtime.strftime("%I:%M%p %Z %m/%d/%y")
            stdscr.addstr(0, 0, "{} ({})".format(fields['issuer_name'], fields['symbol']))
            stdscr.addstr(1, 0, "Price: ${:,.2f}".format(float(fields['price'])))
            stdscr.addstr(2, 0, "Change: {:+,.2f} ({:+,.2f}%)".format(float(fields['change']),float( fields['chg_percent'])))
            stdscr.addstr(3, 0, "Volume: {:,}".format(int(fields['volume'])))
            stdscr.addstr(4, 0, "Last Trade: {}".format(localtimeString))
            stdscr.refresh()
            time.sleep(5)
finally:
    curses.nocbreak()
    stdscr.keypad(0)
    curses.echo()
    curses.endwin()
    if len(sys.argv) != 2 : 
        print('Usage: ./rtquote.py <ticker>')

我知道 PyCharm 使用它自己的终端来显示输出,但我似乎无法弄清楚如何配置它以便我的程序在 PyCharm 中运行。我可以在 Mac 的终端中成功运行我的程序,但是我希望能够在 PyCharm 中运行它。

我很谦虚地向你们这些互联网上的好心陌生人寻求帮助。请让我知道我正在尝试做的事情在 PyCharm 中是否可行,如果可行,如何实现。

我在 PyCharm 的终端窗口中收到以下错误:

)07[?47h[1;24r[m[4lTraceback (most recent call last):
  File "/rtquote.py", line 24, in <module>
    curses.cbreak()
_curses.error: cbreak() returned ERR

Process finished with exit code 1

最佳答案

我通过配置运行首选项解决了这个问题:

  • 点击菜单运行然后编辑配置...
  • 选择你项目对应的配置
  • 选中复选框在输出控制台中模拟终端

关于python - 我如何在 PyCharm 中使用 curses?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43511432/

相关文章:

python - 无法为 django/python3 安装 msqlclient [OSX 10.12.4]

javascript - 如何跳转到JavaScript库源?

指定兼容解释器版本的 Python 约定?

python - OpenAI API 错误 : "Module ' openai' has no attribute 'ChatCompletion' , 您的意思是 'Completion' 吗?”

python - 使用唯一集初始化 python 列表

Python if else 条件错误

python - 导入错误 : No module named 'Cython' when installing Cython on mac for darkflow

python - 验证 sqlalchemy session

objective-c - 修改 NSEvent 以发送与按下的键不同的键

python - 使用西里尔字母时出现 UnicodeDecodeError