= 2005-07-07 调用层次 = {{{多层次程序调试时候的相对路径错误问题 amingsc 致 python-chinese 更多选项 7月6日 (9小时前) 在将程序组织成若干层次的时候,如果在底层需要设置文件的相对路径,则在调试的时候会有问题,我举例说明. 比如程序如图组织: |------module1.py:main | |------package |-------module2.py |-------data 下面是代码文件: --------------------------------module1.py 主模块: from package.module2 import fun fun() -----------------------module2.py: filename = r'package\data' def fun(): f= open(filename,'r') f.close() if __name__ == '__main__': #调试 fun() --------------------------- 问题:直接运行module1程序是正确的,但是我们在写程序的时候往往需要对当前的模块进行调试, 所以在写module2的时候,调试模块则会出错(因为这时文件data的相对路径应该是r'data',而不是r'package\data') 我处理这个问题的方法是:在定义filename的时候进行判断,比如: if __name__ == '__main__': filename = r'data' #调试用 else: filename = r'package\data' 但是这里又有个问题,就是如果程序的层次再增加几层的话,在每层分别进行调试的时候会出现一样的路径错误 不知道大家在处理这个问题的时候怎么弄的?有没有更现代的办法? _______________________________________________ Qiangning Hong 致 python-chinese 更多选项 7月6日 (9小时前) On 7/6/05, amingsc <amingsc@163.com> wrote: > 在将程序组织成若干层次的时候,如果在底层需要设置文件的相对路径,则在调试的时候会有问题,我举例说明. > 比如程序如图组织: > |------module1.py:main > | > |------package > |-------module2.py > |-------data > 下面是代码文件: [...] > -----------------------module2.py: > filename = r'package\data' 这里改成: import os.path filename = os.path.join(os.path.dirname(__file__), 'data') [...] > 问题:直接运行module1程序是正确的,但是我们在写程序的时候往往需要对当前的模块进行调试, > 所以在写module2的时候,调试模块则会出错(因为这时文件data的相对路径应该是r'data',而不是r'package\data') [...] _______________________________________________ limodou 致 python-chinese 更多选项 8:30 (38分钟前) 简单的方法我想也许是将顶层目录加入到sys.path,然后从头导入模块。 }}}