2017-07-03 7 views
0
のWindows 10上で

、Pythonの3.6は、Pythonでプロンプト歴史をコマンド

のは、私は、コマンドプロンプトセッションオープン(ないPythonコマンド・プロンプトまたはPythonの対話セッション)を持っていると私はしてきたとしましょう多くの設定やその性質のものを持つ環境を設定します。私がそのセッションで使ったコマンドの歴史にPythonモジュールでアクセスする方法はありますか?

理想的には、この履歴をファイルにエクスポートして、将来再利用できるようにしたいと考えています。

例:コマンドプロンプトで

タイプ:python savecmd.py と、それはそのセッションからの歴史が保存されます。

+2

Windowsまたは* nix?あなたはcmdを置くので、私はWindowsを想定していますか? – PressingOnAlways

+0

@cᴏʟᴅsᴘᴇᴇᴅ私は対話的なPythonコマンドプロンプトまたはPythonインタプリタを指していません –

+0

@JonathanPorterもし* Nixを使っているなら 'history = open( '/ home/.bash_history')readlines()'とそこからすべてを得るでしょう。あなたは現在のセッションにどのように制限するのか分かりません。 –

答えて

2

あなたはすなわち、そのためdoskey施設を使用し、まったくのPythonを必要としない:現在のセッションのコマンド履歴をプリントアウトします

doskey /history 

保存したい場合は、そのファイルにそれをリダイレクトすることができますそれ:

doskey /history > saved_commands.txt 

あなたが本当にPythonの内から、それを実行したい場合は、コマンド履歴をキャプチャするsubprocess.check_output()を使用して、ファイルに保存することができます:

import subprocess 

cmd_history = subprocess.check_output(["doskey", "/history"]) 
with open("saved_commands.txt", "wb") as f: 
    f.write(cmd_history) 
+0

doskey.exeのないctypesを使ってPythonでこれを行うことができます。コンソールコードページの代わりにUnicodeを使用することもできます(現在のコードページの文字でない場合は、しかし、doskey.exeが 'GetConsoleCommandHistoryLengthW'と' GetConsoleCommandHistoryW'を呼び出すコンソール関数をMicrosoftが文書化していないので、これはサポートされていません。 – eryksun