Change directory not successfully done
Bengt Richter
bokr at oz.net
Fri Nov 11 21:42:06 EST 2005
On Fri, 11 Nov 2005 10:16:02 +0800, Samuel Yin <samuel.yin at 163.com> wrote:
>Hi, guys,
>
>This should be a simple problem, but I just can not resolve it. I just
>want to use a python script to change my working directory. see my
>following code:
>
># mycd.py
>1) destdir = "xxxxxxxx"
>2) command = "cd "+ destdir
>3) os.system(command)
>4) os.chdir(destdir)
>
>But neither 3) nor 4) is used, I just can not change the directory after
>execute mycd.py. This remind me of bash script. If you change directory
I think you are reminded well. It is no use to create a throwaway child process
that has the working directory you want, but is just thrown away along with the process ;-)
>in your bash script file, it will only impact the sub process of that
>script, except that you invoke that bash script by ./script_file_name.
>But what should I do in the case of python script?
If you do 1) 2) and 4) _within_ your script, the process that is running
your script should see the new working directory. E.g., interactively,
>>> import os
>>> os.getcwd()
'C:\\pywk\\grammar\\ast'
>>> os.chdir('..')
>>> os.getcwd()
'C:\\pywk\\grammar'
But if you execute 1) 2) and 4) by running mycd.py (comment out "3)") in
a separate process like os.system('python mycd.py') or such, that's only
going to throw it away. If you really want the directory change as a script
that will affect your running script, import it or execfile it. E.g.,
>>> open('mycd.py','w').write("""\
... import os
... print 'changing cwd %s to parent =>'%(os.getcwd()),
... os.chdir('..')
... print os.getcwd()
... """)
Ok see where we are
>>> import os
>>> os.getcwd()
'C:\\pywk\\grammar'
Now see if importing the module we just wrote will do what it's supposed to
>>> import mycd
changing cwd C:\pywk\grammar to parent => C:\pywk
Check effect
>>> os.getcwd()
'C:\\pywk'
Seems like it worked.
But note:
(BTW we now have to specify the old subdirectory
from current working dir in order to reach mycd.py ;-)
>>> os.system('py24 grammar\\mycd.py')
changing cwd C:\pywk to parent => C:\
0
>>> os.getcwd()
'C:\\pywk'
I.e., changed but thrown away with subprocess
Does this help?
Regards,
Bengt Richter
More information about the Python-list
mailing list