关于linux:如何使用python脚本在目录之间“cd”

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。当我尝试上述代码时,它返回时出错,说No such file or directory"cd ../etc/bin/"。我需要从当前目录返回一个目录,这样我就可以输入/etc并读取其中的一些文件。有什么建议吗?


更改使用的工作目录

1
os.chdir("/your/path/here")

子进程将产生新的进程,这不会影响您的父进程。


您应该使用os.chdir(directory),然后调用以打开您的进程。我想这会更简单易读


如果你想取回一个文件夹,只需像在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的函数:os.chdir,例如:

1
os.chdir('../etc/bin/')

另一方面,如果您的想法是python脚本不做任何其他事情,只改变目录,而不退出(这是我理解问题的方式),这也不会起作用,因为当您退出python进程时,父进程的当前工作目录将不会再次受到影响。