我想在Macbook Pro上使用python脚本删除bash历史记录。
我知道有两种方法可以使用bash shell删除bash历史记录
1.rm~ / .bash_history
2.history -c
但是这些命令在带有子进程的python脚本中不起作用:
1.rm~ / .bash_history
import subprocess
subprocess.call([‘rm’, ‘~/.bash_history'])
错误:
rm:〜/ .bash_history:没有这样的文件或目录
2.history -c
import subprocess
subprocess.call(['history', '-c'])
错误:
文件“test.py”,第8行,in subprocess.call(['history',' - c']) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,行> 524,正在通话中 返回Popen(* popenargs,** kwargs).wait() 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,行> 711,在 init 中 errread,errwrite) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,行> 1308,在_execute_child中 提出child_exception
有什么想法吗?
答案 0 :(得分:4)
这里有两个问题:
首先,python不理解~
,你需要扩展它:
subprocess.call(['rm', os.path.expanduser('~/.bash_history')])
其次,history
是一个内置的shell。使用shell来调用它:
subprocess.call(['bash', '-c', 'history -c'])