在Windows 10,Python的3.6如何访问命令提示符历史与Python
比方说,我有一个命令提示符会话打开(而不是Python命令提示符或Python交互式会话)和我一直建立一个具有许多配置或某种性质的环境。有没有什么办法让我访问我在该会话中使用的命令的历史记录,例如用python模块?
理想情况下,我希望能够将此历史记录导出到一个文件,以便将来可以重复使用它。
例子:
键入命令提示符:python savecmd.py
并将其保存从会话历史记录。
在Windows 10,Python的3.6如何访问命令提示符历史与Python
比方说,我有一个命令提示符会话打开(而不是Python命令提示符或Python交互式会话)和我一直建立一个具有许多配置或某种性质的环境。有没有什么办法让我访问我在该会话中使用的命令的历史记录,例如用python模块?
理想情况下,我希望能够将此历史记录导出到一个文件,以便将来可以重复使用它。
例子:
键入命令提示符:python savecmd.py
并将其保存从会话历史记录。
你不需要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)
你可以通过没有doskey.exe的ctypes在Python中做到这一点,甚至可以使用Unicode代替控制台代码页(如果它不是当前代码页中的字符,可能是你输入的有损编码),这一点更好。然而,它不被支持,因为微软从来没有记录过doskey.exe调用的控制台函数:'GetConsoleCommandHistoryLengthW'和'GetConsoleCommandHistoryW'。 – eryksun
Windows或* nix?你把CMD,所以我假设Windows? – PressingOnAlways
@cᴏʟᴅsᴘᴇᴇᴅ我不是指交互式Python命令提示符或Python解释器 –
@JonathanPorter如果你在* Nix,你可以执行'history = open('/ home/.bash_history').readlines()'和你会从那里得到一切。事情是,我不知道你将如何限制它到目前的会议。 –