【问题标题】:os.chdir doesn't change directoriesos.chdir 不改变目录
【发布时间】:2021-01-05 00:21:51
【问题描述】:

当我要求观看电视节目时,它会列出我可以观看的电视节目,但当我要求进入所选的电视节目以播放季节时,它似乎没有 chdir。我让它打印它所理解的,这是正确的。它实际上并没有更改为新目录。

我的代码如下(understand = 语音转文字):

def entertain():
    if 'tv show' in understand:
        tv_show = os.listdir('D:\\TV_Shows')
        speak('tv shows you have available are {0}'.format(tv_show))
        print(tv_show)
        speak("what show would you like ")
        if understand == tv_show:
            changed = os.chdir('D:\\TV_Shows\\' + understand)
            tv_show = os.listdir(changed)
            print(tv_show)
    else:
        if 'Movie' in understand:
            movie = os.listdir('D\\movies')
            print(movie)

while True:
    understand = take_command().lower()
    if 'i want to watch a' in understand:
        entertain()

【问题讨论】:

  • 为什么要更改工作目录?

标签: python chdir


【解决方案1】:
changed = os.chdir('D:\\TV_Shows\\' + understand)
tv_show = os.listdir(changed)

chdir 不返回任何内容。如果失败,则会引发异常。没有例外意味着它成功了。此代码设置changed = None,然后调用os.listdir(None)

试试这个:

os.chdir('D:\\TV_Shows\\' + understand)
tv_shows = os.listdir()

【讨论】:

  • help(os.listdir) 告诉我If path is None, uses the path='.'.
  • 啊。在旧版本的 Python 中,这种行为并不总是如此。那么是什么让你认为目录没有改变呢?
  • '.' 是相对于工作目录的,如果我没记错的话。换句话说,os.listdir() 应该列出你切换到的任何目录。
  • @JohnKugelman 我的代码当我使用 usr = input() 运行它时它可以完美运行 必须与其他行相关 我需要检查它 不需要 chdir 存在感谢您的帮助
  • 值得一提的是,这可以在不更改工作目录的情况下完成。
猜你喜欢
  • 2017-10-22
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2011-06-05
相关资源
最近更新 更多