如何在 Python 中改变工作目录
本文讨论的是如何将 Python 中的当前工作目录改变到其他位置。
使用 os
模块来改变 Python 中的目录
假设出于某种原因,你想通过 Python 而不是命令控制台来改变你的工作目录。在这种情况下,模块 os
提供了直接通过 Python 实现各种操作系统实用程序的工具。
import os
比方说,你当前的工作目录是/Users/user
,想改成 Users/user2
:首先,通过打印出 os.getcwd()
的结果来验证当前的工作目录。接下来就是调用 os.chdir("Users/user2")
块来切换当前的工作目录。
print (os.getcwd())
os.chdir("/Users/user2")
print (os.getcwd())
输出:
/Users/user
/Users/user2
它验证了你的程序已经成功地将工作目录从 user
切换到 user2
。
异常检查
路径是用户输入的,所以很可能出现输入错误。例如,用户输入了一个不存在的路径;这个函数很可能会非常容易出现 FileNotFound 异常。鉴于此,我们应该实现异常检查。
使用 if-else
检查错误
简单的方法是使用 if-else
检查指定的路径是否存在。
import os
def changeDir(newPath):
if os.path.exists(newPath):
os.chdir("Directory moved: ", newPath)
print(os.getcwd())
else:
print("Directory ", newPath, " not found.")
print("Base directory: ", os.getcwd())
changeDir('/Users/user2')
changeDir('/Users/nonexistentpath')
假设/Users/user2
是一个现有的文件路径,而/Users/nonexistentpath
不存在。
输出:
Base directory: /Users/user
Directory moved: /Users/user2
Directory Users/nonexistentpath not found.
对 changeDir()
块的第一个调用通过了 if
语句,因为路径存在。另一方面,第二个经过 else
,并打印一个类似错误的信息,因为路径不存在。
使用 try...except
来检查错误
如果 os.chdir()
命令没有找到文件路径,它将抛出一个 FileNotFoundError
通知。为此,我们需要在代码中使用 try...except
块。
import os
def changeDir(newPath):
try:
os.chdir(newPath)
print("Directory moved: newPath")
except OSError:
print("Directory ", newPath, "does not exist.")
print("Base directory: ", os.getcwd())
changeDir('/Users/user2')
changeDir('/Users/nonexistentpath')
输出:
Base directory: /Users/user
Directory moved: /Users/user2
Directory Users/nonexistentpath does not exist.
或多或少,两者都会产生相同的输出;然而,使用 try...except
异常处理比使用 if-else
语句要安全得多。因为用户定义的条件可能无法覆盖处理文件路径操作中可能发生的所有异常。
综上所述,os
模块为文件和目录操作提供了广泛的支持,除此之外,它还提供了其他实用程序。
我们可以直接使用 os.chdir()
块来改变工作目录,但为了避免异常情况的发生,还是用 if-else
或 try...except
块来包住它比较安全。
如果你想探索更多关于文件操作的问题,异常处理和更新文件名或内容是非常重要的。
Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.
LinkedIn