文件路径

相对路径读取

➜  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命令执行时所在的目录

Copyright © zhujipeng 2017 all right reserved,powered by Gitbook 该文件修订时间: 2017-12-16 15:12:10

results matching ""

    No results matching ""