What your code tries to do is call a program named cd ..
. What you want is call a command named cd
.
But cd
is a shell internal. So you can only call it as
subprocess.call('cd ..', shell=True) # pointless code! See text below.
But it is pointless to do so. As no process can change another process’s working directory (again, at least on a UNIX-like OS, but as well on Windows), this call will have the subshell change its dir and exit immediately.
What you want can be achieved with os.chdir()
or with the subprocess
named parameter cwd
which changes the working directory immediately before executing a subprocess.
For example, to execute ls
in the root directory, you either can do
wd = os.getcwd()
os.chdir("https://stackoverflow.com/")
subprocess.Popen("ls")
os.chdir(wd)
or simply
subprocess.Popen("ls", cwd="https://stackoverflow.com/")