1.open()函数
Python的open()函数用于打开文件并返回一个文件对象。
当你使用相对路径作为参数调用open()函数时,Python会根据当前工作目录来解析相对路径。
2. OS模块的chdir()函数
os.chdir()函数用于改变当前工作目录。
当你调用os.chdir()函数改变了当前工作目录后,后续对open()函数传递的相对路径就会受到这个改变的影响。
3.总结:
open()函数的相对路径是相对于当前工作目录来解析的。
如果你在调用open()函数之前使用了os.chdir()函数切换了工作目录,那么open()函数解析的相对路径将基于新的工作目录。
4.使用代码避免:调用os.chdir()之前记录原始的工作目录,然后使用os.chdir()后再恢复回去。
假设我们有以下目录结构:
- /home/user
- script.py
- files
- file.txt
我们的当前工作目录是"/home/user",并且在该目录下有一个Python脚本文件script.py。我们想在脚本中使用open()函数打开"file.txt"文件
# script.py
import os
# 获取当前工作目录
cwd = os.getcwd()
print("当前工作目录:", cwd)
# 切换工作目录到files目录
os.chdir("files")
# 打开文件
with open("file.txt", "r") as f:
content = f.read()
print(content)
# 恢复工作目录
os.chdir(cwd)
首先使用os.getcwd()函数获取当前工作目录,并将其保存在变量cwd中。然后,我们调用os.chdir()函数将工作目录切换到"files"目录。
接下来,我们使用open()函数打开"file.txt"文件,并通过with语句来确保文件在使用完后自动关闭。请注意,仅提供了文件名"file.txt",而没有给出完整的路径。
最后,我们使用os.chdir(cwd)将工作目录恢复到之前保存的值,以确保对其他文件操作时不受影响。
这样,即使在脚本执行期间改变了工作目录,open()函数仍然能够正确解析相对路径,并打开"file.txt"文件。
5.除此之外,还可以使用绝对路径
如果你想避免os.chdir()对open()函数的影响,可以使用绝对路径来代替相对路径
注意,相对路径也可以使用"./"表示当前目录、"../"表示上级目录等形式。