如何使用python脚本在目录之间“ cd”

时间:2019-01-24 18:22:28

标签: python linux python-3.x subprocess

我正在编写一个测试脚本,如果该路径已确认存在并且是目录,则该脚本应该从当前目录cd进入新目录。

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并在其中读取一些文件。有什么建议吗?

4 个答案:

答案 0 :(得分:2)

更改使用的工作目录

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

无法使用子流程更改当前目录,因为这只会在该子流程的上下文内更改当前目录,并且不会影响当前流程。

相反,要在Python进程中更改当前目录,请使用Python的函数来执行此操作:os.chdir,例如:

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

另一方面,如果您的想法是Python脚本不执行任何其他操作,而只是更改目录然后退出(这是我对问题的理解),那么这也不起作用,因为当您退出Python时进程,父进程的当前工作目录将再次不受影响。

答案 3 :(得分:0)

如果您想找回一个文件夹,只需像在shell中一样进行操作即可。

os.chdir('..')

或者您可以,

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”