【问题标题】:linux command using python to go under a specific folderlinux命令使用python进入特定文件夹
【发布时间】:2020-06-16 23:45:59
【问题描述】:

大家好:我的当前目录下只有一个文件夹,我想通过运行“cd $(ls)”进入它。 所以我写了这段代码

import os
os.system("cd $(ls)")

但这对我不起作用。任何人都可以帮助编写 python 语法以进入唯一可用的文件夹。 PS:文件夹的名称是可变的,这就是为什么我要使用“cd $(ls)”

【问题讨论】:

  • 也许它确实改变了目录,但你不知道,因为system() 进程完成并返回。
  • 为什么要使用cd?如果您使用 os 进行系统调用,那么只有该系统调用将具有更改的工作目录。
  • 这能回答你的问题吗? How do I change the working directory in Python?

标签: python python-3.x linux shell command


【解决方案1】:

OS 模块有一些实用功能来实现你想要做的事情。

  • os.listdir():返回当前工作目录中所有文件/目录的列表
  • os.chdir(path): 改变你的工作目录

所以,你可以像这样应用这些:

os.chdir(os.listdir()[0])

【讨论】:

    【解决方案2】:

    “转到它”是指“为脚本代码的剩余部分更改当前目录”还是“将目录更改为 脚本退出后”,这并不明显。如果是后者,您将无法执行此操作 - os.system 启动子 shell,并且子 shell 中当前目录的更改不会传播到父 shell。如果是前者,你应该只使用:

    import glob, os
    os.chdir(glob.glob('*')[0])
    

    【讨论】:

      【解决方案3】:

      改用:

      os.chdir(os.listdir('.')[0])

      虽然os.system("cd %(ls)) 在您的shell 中正常工作,但它不会改变您正在运行的python 解释器的当前工作目录,因为os.system() 正在使用一个单独的shell 实例,该实例将在cd 执行后直接销毁shell 命令。

      通过在之前和之后执行os.getcwd() 进行双重检查(os.getcwd() 返回您的 python 解释器的当前工作目录)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-17
        • 1970-01-01
        • 1970-01-01
        • 2013-04-28
        • 1970-01-01
        • 2012-01-02
        • 2017-02-02
        • 1970-01-01
        相关资源
        最近更新 更多