我发现这个代码片段在线用于python终端模拟器,我觉得它看起来很酷,所以我继续尝试使用它。我注意到我无法使用“cd”命令,我被困在我运行文件的目录中。为什么会这样?这是怎么回事?我如何修改此代码以使其像完美的本机终端一样运行?我仍然是编程的新手,并且在我的生活中只使用过子模块。请帮忙!
import subprocess
import re
while True:
# prevents lots of python error output
try:
s = raw_input('> ')
except:
break
# check if you should exit
if s.strip().lower() == 'exit':
break
# try to run command
try:
cmd = subprocess.Popen(re.split(r'\s+', s), stdout=subprocess.PIPE)
cmd_out = cmd.stdout.read()
# Process output
print cmd_out
except OSError:
print 'Invalid command'
答案 0 :(得分:2)
当您打开新进程时,您将更改新进程的当前目录,而不是调用进程。您应该使用os.chdir
来更改程序的目录。因此,您需要解析命令行并检查命令是否为cd
,然后决定不再调用Popen
而是调用os.chdir
。