前提・実現したいこと
コンソール上で出力結果を上書きしたいです(Mac)。
Windowsでは以下のコードで動作することができました。
import os import time import ctypes os.system('cls') STD_OUTPUT_HANDLE = -11 h = ctypes.windll.kernel32.GetStdHandle(ctypes.c_long(STD_OUTPUT_HANDLE)) c = 0 while True: ctypes.windll.kernel32.SetConsoleCursorPosition(h, ctypes.c_ulong(0)) text = '-' * 11 + '\n' text += '| ' + str(c) + ' |\n' text += '-' * 11 print(text) c += 1 time.sleep(0.5)
発生したエラー
Macで同じように動作しようとしましたが、以下のエラーが発生しました。
import os import ctypes os.system('clear') libc=ctypes.CDLL("libSystem.B.dylib") libc.GetStdHandle(ctypes.c_long(-11))
AttributeError: dlsym(0x10efe97c8, GetStdHandle): symbol not found
上のエラーは読み込むライブラリに関数(GetStdHandle)が含まれていないために発生したものだと思うのですが、c++の関数?を扱うためのライブラリ?dll?を読み込むために、自分でファイルを作成するのか、サイトからダウンロードすればいいのかわからない状況です。ご教授頂ければ幸いです。
補足情報
macOS High Sierra バージョン10.13.4
Python 3.6.4
C言語詳しくないです
参考にしたサイト
・コンソールのクリア、カーソル制御
・16.16. ctypes — Pythonのための外部関数ライブラリ
・OSXのlibcはlibSystem.B.dylibなのかも
・C/C++で作成したDLLのテストをPythonで行う
追記(2018/4/12 14:00)「Windowsでcursesモジュールのインポート」
Windowsでcursesモジュールを以下のサイトでimportできました。
→Unofficial Windows Binaries for Python Extension Packages
ファイル名の意味についてはこちらを参考に
→What does version name 'cp27' or 'cp35' mean in Python?
.whlファイルをインストールする際にエラーが出る場合はこちらを参考に
→filename.whl is not a supported wheel on this platform
自分の場合はファイルのあるディレクトリ上で以下を実行してインストールできました。
> pip install curses‑2.2‑cp36‑none‑win_amd64.whl
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/04/11 14:23