python相对路径以及上上级路径的表示方法

问题引入,绝对路径的缺点

在python学习中,我会将代码放在code目录下,其他类型文件放在res目录下,方便浏览和管理。
在这里插入图片描述
但是我想在code目录下404.py调用res目录下access.log,使用绝对路径很长(C:\Users\Administrator\Desktop\Day\Jasn–70–Days\Day01~15\Day 09\code\access.log),而且文件夹位置一旦移动就路径就会出错。

相对路径出场

r'../res/access.log'

即能完美解决这个问题。
所以修改后的代码为:

'''
模拟管道,实现功能:tail -f access.log | grep '404'
version:01
author:jasn
Date:2020-01-09
'''
import time

def tail(filepath):
    with open(filepath,'rb') as f:
        f.seek(0,2) #获取最后一行
        while True:
            line=f.readline()
            if line:
                yield line
            else:
                time.sleep(0.5) #定时间隔刷新

def grep(pattern,lines):
    for line in lines:
        line=line.decode('utf-8')
        if pattern in line:
            yield line

for line in grep('404',tail(r'../res/access.log')):
    print(line,end='')

#写入内容
with open(r'../res/access.log','a',encoding='utf-8')as f:
    f.write('出错了,404!\n')

python相对路径的用法

| -- code
     | -- conf.py
     | -- start.png
| -- res
	 |config.txt
	 |access.log
| -- main.py
| --logo.png

如果main.py,引用logo.png,相对路径的写法为:"./logo.png"。logo.png和main.py处于同一目录下
如果conf.py,引用access.log,相对路径的写法为:"…/res/access.log"
如果conf.py,引用logo.png,相对路径的写法为:"…/logo.ong"
. 指当前文件所在的文件夹
指当前文件的上一级目录。

当然相对路径还可以表示上上级、上上上级、上上上上级目录等
上上级:…/…/

上上上级:…/…/…/

上上上上级:…/…/…/…/
相对路径也可以表示上级目录下的不同子目录和文件,例如:

…/…/Day09/code/test.txt:表示当前文件的上上级目录下的Day09目录下的code目录里面的test.txt文件

发布了46 篇原创文章 · 获赞 37 · 访问量 4535

猜你喜欢

转载自blog.csdn.net/weixin_42444693/article/details/103909931
今日推荐