How to “cd” between directories using a python script
本问题已经有最佳答案,请猛点这里访问。
我正在编写一个测试脚本,如果该路径被确认存在并且是一个目录,那么它应该从当前目录CD到一个新的目录中。
1 2 3 4 5 | serial_number = input("Enter serial number:") directory ="/etc/bin/foo" if os.path.exists(directory) and os.path.isdir(directory): #cd into directory? subprocess.call(['cd ..' + directory]) |
我的难题是,我不知道如何将变量正确地传递到子进程命令中,或者是否应该使用call或popen。当我尝试上述代码时,它返回时出错,说
更改使用的工作目录
1 | os.chdir("/your/path/here") |
子进程将产生新的进程,这不会影响您的父进程。
您应该使用
如果你想取回一个文件夹,只需像在shell中那样做。
1 | os.chdir('..') |
或者在你的情况下,你可以,
1 2 3 | directory ="/etc/bin/foo" if os.path.exists(directory) and os.path.isdir(directory): os.path.normpath(os.getcwd() + os.sep + os.pardir) |
输出为:"/etc/bin"
无法使用子进程更改当前目录,因为这样只会在子进程上下文的情况下更改当前目录,而不会影响当前进程。
相反,要更改python进程中的当前目录,请使用python的函数:
1 | os.chdir('../etc/bin/') |
另一方面,如果您的想法是python脚本不做任何其他事情,只改变目录,而不退出(这是我理解问题的方式),这也不会起作用,因为当您退出python进程时,父进程的当前工作目录将不会再次受到影响。