尝试并排除 os.chdir

Try and except with os.chdir

我在两台不同的计算机上使用相同的脚本工作。将文件写入我的云存储\在两台计算机上的路径略有不同。我想我可以使用 try-except 来简单地查看哪条路径有效(取决于我使用的是哪台计算机)。

我认为我可以通过执行以下操作来解决此问题:

import os
try:
    os.chdir('C://Users//comp1//Cloud//Data')
except:
    os.chdir('C://Users//comp2//Cloud//Data')

但是如果我 运行 它,我仍然得到:

FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C://Users//comp1//Cloud//Data')

谁能告诉我我做错了什么,或者我是否应该使用不同的解决方案。

正如多条评论所建议的,将双正斜杠替换为一个正斜杠,或使用双反斜杠。

现在我 运行 您的代码,它似乎确实有效,但这取决于上下文(这是您的整个脚本吗?)。但是,使用 if-else 语句而不是 try-except 可以做得更好,因为后者首先要慢很多,而且通常不是最佳实践。

import os

if os.path.isdir('C:/Users/comp1/Cloud/Data'):
    os.chdir('C:/Users/comp1/Cloud/Data')
elif os.path.isdir('C:/Users/comp2/Cloud/Data'):
    os.chdir('C:/Users/comp2/Cloud/Data')

如果您想坚持使用 try-except 并且两个目录都不存在,您可以尝试像这样嵌套 try-except:

编辑:忘了提,谢谢 @Tzane,不要使用空 try-except 语句。

import os

try:
    try:
        os.chdir('C:/Users/comp1/Cloud/Data')
    except FileNotFoundError:
        os.chdir('C:/Users/comp2/Cloud/Data')
except FileNotFoundError:
    # handle the case where neither directory exist
    pass

或者结合这两个建议:

import os

if os.path.isdir('C:/Users/comp1/Cloud/Data'):
    os.chdir('C:/Users/comp1/Cloud/Data')
elif os.path.isdir('C:/Users/comp2/Cloud/Data'):
    os.chdir('C:/Users/comp2/Cloud/Data')
else:
    # handle the case where neither directory exist
    pass