2017-07-03 64 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

你不需要Python的所有,使用doskey设施为,即:

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'。 – eryksun