一、./
的基础含义
-
当前目录
./
表示当前工作目录(Current Working Directory, CWD),即Python脚本运行时所在的目录。例如:open('./data.txt', 'r') # 打开当前目录下的data.txt文件
- 作用:避免直接写文件名可能引发的路径歧义
注意:若当前目录中存在子目录
sub
,./sub/file.txt
表示子目录下的文件
- 作用:避免直接写文件名可能引发的路径歧义
-
与其他符号的对比
../
:表示当前目录的上级目录,例如../config/settings.ini
会定位到父目录下的配置文件/
(根目录):在绝对路径中使用,如Linux的/home/user/file.txt
或Windows的C:\Users\file.txt
二、扩展使用场景
1. 结合os
模块操作路径
- 路径拼接:使用
os.path.join()
自动处理分隔符:import os config_path = os.path.join('.', 'config', 'settings.ini') # 生成'./config/settings.ini'
- 路径检查:
if os.path.exists('./logs'): # 检查当前目录下是否存在logs目录 print("日志目录存在")
2. 使用pathlib
库(推荐)
from pathlib import Path
current_dir = Path('.') # 当前目录对象
config_file = current_dir / 'config' / 'settings.ini' # 路径拼接
print(config_file.resolve()) # 解析为绝对路径(如:/home/user/project/config/settings.ini)
- 优势:避免手动拼接路径分隔符,支持链式操作和跨平台兼容性
3. 动态路径操作
- 获取当前目录:
import os print(os.getcwd()) # 输出当前工作目录,如:/home/user/project
- 切换目录:
os.chdir('../') # 切换到上级目录
三、常见问题与示例
示例1:读取当前目录下的文件
with open('./data.csv', 'r') as f: # 直接打开当前目录文件
content = f.read()
示例2:递归遍历子目录
from pathlib import Path
for file in Path('.').rglob('*.txt'): # 递归查找当前目录及其子目录下的所有txt文件
print(file.absolute()) # 输出绝对路径
示例3:避免路径错误
# 错误写法(Windows反斜杠未转义)
wrong_path = '.\subdir\file.txt' # 反斜杠需转义或使用原始字符串r'.\subdir\file.txt'
# 正确写法(使用正斜杠或pathlib)
correct_path1 = './subdir/file.txt'
correct_path2 = Path('subdir') / 'file.txt'
四、注意事项
-
跨平台兼容性
- Windows允许使用
/
或\
,但推荐用os.path
或pathlib
处理分隔符 - 避免硬编码路径,如直接写
C:\Users
,改用动态获取(如Path.home()
)
- Windows允许使用
-
相对路径的基准
- 相对路径的解析基于当前工作目录,而非脚本所在目录。若需固定基准,建议使用
__file__
获取脚本路径:script_dir = Path(__file__).parent # 脚本所在目录
- 相对路径的解析基于当前工作目录,而非脚本所在目录。若需固定基准,建议使用
-
特殊字符处理
- 路径含空格或中文时,建议使用
pathlib
的write_text()
/read_text()
方法,避免编码问
- 路径含空格或中文时,建议使用