【问题标题】:Why os.chdir() cant change dir in this case?为什么 os.chdir() 在这种情况下不能更改目录?
【发布时间】:2020-08-12 16:06:33
【问题描述】:

----输入

print(os.getcwd(), '\n')
print(os.listdir(), '\n')

Gui_path = '/Gui'

os.chdir(Gui_path)

----输出

C:\Users\vhass\Documents\Coding Projects\金库

C:\Users\vhass\Documents\Coding Projects\金库

['application.py', 'crypto.py', 'encrypting.py', 'genaccount.py', 'Gui', 'Home.py', 'icons', 'login.py', 'main .py'、'Pics'、'test.py'、'Usernamepass.py'、'pycache']

Traceback(最近一次调用最后一次): 文件“C:\Users\vhass\Documents\Coding Projects\The vault\login.py”,第 19 行,在 os.chdir(Gui_path) FileNotFoundError: [WinError 2] 系统找不到指定的文件:'/Gui'

注意**** 此项目中的路径不是静态的,可能会根据用户偏好进行更改,因此我无法使用完整路径。

【问题讨论】:

  • 注释说明了问题——您不能使用完整路径。然而你做到了。 “/Gui”是一个完整的路径——这就是前导斜杠的意思,
  • "Why os.chdir() cant change dir in this case?" 错误清楚地说明了为什么它不能更改目录,因为它找不到它。
  • 当 os.listdir() 清楚地显示目录中的 Gui 时,它怎么不能?查看我的输出。

标签: python operating-system


【解决方案1】:

问题在于您提供的是完整路径而不是相对路径。 os.chdir('/Gui') 正在尝试转到您的根目录 (/) 并在那里查找文件夹 Gui

我认为您要做的是查找相对于当前目录的文件夹Gui。尝试类似

>>> import os
>>> os.getcwd()
'/Users/tyler/tmp/stackoverflow'
>>> os.listdir()
['a', 'f', 'Gui', 'c', 'd', 'e', 'b']
>>> os.chdir(os.getcwd() + '/Gui') # <- This is the important line
>>> os.getcwd()
'/Users/tyler/tmp/stackoverflow/Gui'
>>> os.listdir()
['HELLO']
>>>

看看我们如何进行os.getcwd() + '/Gui' 的字符串连接,而不仅仅是'/Gui'?这确保我们正在查看当前所在的目录。

您还应该查看 stdlib pathlib 以了解其他有用的原语,并确保您的代码能够处理奇怪的文件系统边缘情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2017-01-07
    相关资源
    最近更新 更多