On Fri, 11 Nov 2005 10:16:02 +0800, Samuel Yin <[EMAIL PROTECTED]> 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 -- http://mail.python.org/mailman/listinfo/python-list