文件路径
相对路径读取
➜ python-manual ls file/read_path.py file/read_test.txt
file/read_path.py file/read_test.txt
➜ python-manual cat file/read_path.py
with open("read_test.txt") as f:
for line in f:
print line
➜ python-manual python file/read_path.py
Traceback (most recent call last):
File "file/read_path.py", line 1, in <module>
with open("read_test.txt") as f:
IOError: [Errno 2] No such file or directory: 'read_test.txt'
read_path.py找不到在同一个目录里的read_test.txt
解决相对关系
➜ python-manual cat file/read_path.py
import os
cur_dir = os.path.dirname(__file__)
file_path = os.path.join(cur_dir, "read_test.txt")
with open(file_path) as f:
for line in f:
print line
➜ python-manual python file/read_path.py
第1行
第2行
第3行
通过
read_path.py的__file__可以获取文件的绝对路径
更换工作目录
➜ python-manual cat file/read_path.py
import os
cur_dir = os.path.dirname(__file__)
if cur_dir is not None and cur_dir != "":
os.chdir(cur_dir)
with open("read_test.txt") as f:
for line in f:
print line
➜ python-manual python file/read_path.py
第1行
第2行
第3行
工作目录
当前工作目录(current working directory)是相对路径的参考目录
当前工作目录对于
相对路径和包的加载都有重要影响
➜ file cat get_cwd.py
import os
print os.getcwd()
print os.path.abspath("path.link")
print os.path.realpath("path.link")
➜ file pwd
/Users/zhujipeng/PycharmProjects/python-manual/file
➜ file ls path*
ls: path*: No such file or directory
➜ file python get_cwd.py
/Users/zhujipeng/PycharmProjects/python-manual/file
/Users/zhujipeng/PycharmProjects/python-manual/file/path.link
/Users/zhujipeng/PycharmProjects/python-manual/file/path.link
➜ file touch path.txt
➜ file ln -s path.txt path.link
➜ file ll path*
lrwxr-xr-x 1 zhujipeng staff 8B Nov 23 21:39 path.link -> path.txt
-rw-r--r-- 1 zhujipeng staff 0B Nov 23 21:39 path.txt
➜ file python get_cwd.py
/Users/zhujipeng/PycharmProjects/python-manual/file
/Users/zhujipeng/PycharmProjects/python-manual/file/path.link
/Users/zhujipeng/PycharmProjects/python-manual/file/path.txt
➜ file cd ../
➜ python-manual pwd
/Users/zhujipeng/PycharmProjects/python-manual
➜ python-manual python file/get_cwd.py
/Users/zhujipeng/PycharmProjects/python-manual
/Users/zhujipeng/PycharmProjects/python-manual/path.link
/Users/zhujipeng/PycharmProjects/python-manual/path.link
通过实验发现执行文件时当前目录为
python命令执行时所在的目录