美文网首页
python中打开相对路径文件

python中打开相对路径文件

作者: yanghedada | 来源:发表于2018-10-02 12:25 被阅读827次

    相对路径

    相对路径基就是基于当前运行文件(当前的程序,高手都把程序叫做文件)路径进行目录索引。对于test1.txt和test2.txt文件进行读取该怎么做呢。
    如下图所示:

    .
    |--dir1
        |--main.py
        |--dir2
              |--func.py
              |--test1.txt
              |--dir3
                    |--test2.txt
    

    test1.txt内容

    test1.txt
    

    test2.txt内容

    test2.txt
    

    1.若打开func.py文件,文件路径就是dir2目录下,通过func.py读取test1.txt可以用。输入如下语句:
    func.py

    # func.py
    
    def load_txt(filename ):
        return open(filename, 'r').read()
    
    if __name__ == '__main__':
        filename1 = '/test1.txt'
        data1 = load_txt(filename1 )
        filename2 = '/dir3/test1.txt'
        data2 = load_txt(filename2 )
    

    结果:

    test1.txt
    test2.txt
    

    上面的代码是可以运行的,这是因为程序py文件比txt2文件目录高1级,和test1目录在同级,所以可以直接在func.py中使用open函数进行读取。
    2.如打开main.py文件路径就是dir2目录下,通过main.py调用func.py,再读取test.txt,使用如下代码:
    (为什么不直接读取呢?因为自己重新写读取文件有点浪费时间)

    # main.py
    from dir2 import func
    
    if __name__ == '__main__':
        filename1 = '/test1.txt'
        data1 = load_txt(filename1 )
        filename2 = '/dir3/test1.txt'
        data2 = load_txt(filename2 )
    

    上面的代码是会报错:

    FileNotFoundError: [Errno 2] No such file or directory: '/test1.txt'
    

    这是因为open函数'/'和'./'都是代表当前执行文件的路径(main.py),不是调用文件的路径。这里提示的'/test1.txt'是dir1中没有test1.txt文件。那怎么把dir2加到test1.txt文件目录中去呢??
    这里介绍一种可以解决这个问题的方法,这是大家公认的可以解决这种问题的方法。修改func.py文件,main.py文件不需要修改,注意文件名前面不要加‘.’。

    #func.py
    import os
    def load_txt(filename ):
        module_path = os.path.dirname(__file__) 
        filename = module_path + filename
        return open(filename, 'r').read()
    if __name__ == '__main__':
        filenam1 = '/test1.txt'
        data1 = load_txt(filenam1 )
        print(data1)
        filenam2 = '/dir3/test2.txt'
        data2 = load_txt(filenam2 )
        print(data2)
    

    相当于使用了绝对路径,在'/test1.txt',自动把当前执行文件路径加上了.
    执行func.py时

    module_path  == '.../dir2'
    

    执行main.py时

    module_path  == '.../dir1'
    

    相关文章

      网友评论

          本文标题:python中打开相对路径文件

          本文链接:https://www.haomeiwen.com/subject/eenooftx.html