fc5igm 发表于 2021-6-20 18:56:43

关于模块调用后文件路径混乱的问题

本帖最后由 fc5igm 于 2021-6-20 20:26 编辑

假设这么一个路径
D:\\A\B
有个模块位于B,叫b,他的代码是调用同目录下的其他文件。全部运行成功。
再有一个模块位于A,叫a,他的代码是调用模块b。此时就会出问题了。
因为b运行成功的前提是它能调用到和它同在B中的其他文件,但是当a调用模块b之后,模块b的程序路径就从文件夹B转到了文件夹A。
此时原本b中所写的调用同目录下其他文件的代码就会失效了。因为当目录从B改到A之后,A下并没有模块b需要的文件。
请问对于这种因为模块调用,而导致的文件路径混乱,应该怎么解决?

nahongyan1997 发表于 2021-6-20 19:58:46

给你一串代码粘贴在程序头上就好了,并不是混不混乱的问题:
import os
import sys

BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + '\\'
for root,_dir,file in os.walk(BASE_DIR):
    sys.path.append(root)

sys.path.reverse()

fc5igm 发表于 2021-6-20 20:23:45

本帖最后由 fc5igm 于 2021-6-20 20:28 编辑

nahongyan1997 发表于 2021-6-20 19:58
给你一串代码粘贴在程序头上就好了,并不是混不混乱的问题:

我嫖了一段这个代码
def relpath(file):
    """
    Always locate to the correct relative path.
    >>> relpath('proxy_ip.txt')
    'D:\\python\\works\\project\\proxy_ip\\proxy_ip.txt'
    """
    from sys import _getframe
    from pathlib import Path
    frame = _getframe(1)
    curr_file = Path(frame.f_code.co_filename)
    return str(curr_file.parent.joinpath(file).resolve())

nahongyan1997 发表于 2021-6-20 20:30:31

fc5igm 发表于 2021-6-20 20:23
我嫖了一段这个代码

他们用的都是我没用过的库。。

fc5igm 发表于 2021-6-20 20:32:17

nahongyan1997 发表于 2021-6-20 20:30
他们用的都是我没用过的库。。

哈哈,刚才我看一时半会也没人回,我就去别的地方搜了搜。库以后再学,现在先用着
另外谢谢你的回复
页: [1]
查看完整版本: 关于模块调用后文件路径混乱的问题