私はPythonが初めてで、C++ファイルをPythonに変換していますが、次のC++コード行を変換する方法がわかりませんでした:
virtual void show() const override
{ system(("cat " + filename).c_str()); }
system()
システムコマンドを実行する関数です。
Python でこれを行うには、通常、サブプロセスモジュールを使用します。詳細については、この質問を参照してください。
ドキュメントsystem
には、呼び出しを置き換える方法を示すセクションもあります。
subprocess.call("cat " + filename, shell=True)
Python には、C 関数の薄いラッパーであるため、C 関数とまったくos.system
同じことを行う関数があります。
これは、標準 C 関数 system() を呼び出すことによって実装され、同じ制限があります。
そして、これが真実であることをソースで簡単に確認できます。
しかし、ドキュメントが言うように、「subprocess
モジュールは、新しいプロセスを生成し、その結果を取得するためのより強力な機能を提供します。そのモジュールを使用することは、この関数を使用することよりも望ましいです。」
import os
関数 system() が通常実装されている < cstdlib > < stdlib.h > と「同等」であることを確認してください。
正確な変換は次のようになります。
os.system(str("cat" + filename))
ただし、ファイル名がすでに文字列の場合は、次のように呼び出します: os.system("cat" + filename)
また、私は C++ にはあまり詳しくありませんが、ANSI C を知っていると、virtual void show() はメソッドまたは関数のように見えるため、探している可能性があります。
def show(filename):
os.system("cat" + filename)
#notice that i used the filename as parameter,
#however if its a global variable this is unnecessary.
重要なアドバイス: ファイル名変数がこのクラスのメソッドに対して「グローバル」またはパブリックである場合、クラス内に実装されている可能性があります。パラメーターは必要ありません。
幸運を!