最近,用到python文件的相对路径,之前一直以为
import sys
sys.path.append("路径")
可以解决所有的路径扩展问题,但今天偶然发现,这两行代码只能解决“模块引用”的相对路径问题,比如:
当前文件路径:/home/workspace/script/main.py
如果要引用模块的py文件路径为:/home/workspace/util/b.py
*************b.py************
class Test(object):
def __init__(self):
dosomething();
def dosomething():
print 'hello,world!'
*****************************
只需在main.py中插入
sys.path.append('../util/')
from b import Test
便可以顺利完成模块引用。
但是,如果我们想要读取的是txt或其他格式的文件,这中方法便失效了,在网上搜了一下,基本思路如下:
1. 明确相对位置是相对谁的位置
比如,c.txt的路径为:/home/workspace/script/c.txt
如果main.py需要读取c.txt,其相对路径一定是相对自己的路径,即:file =open('c.txt')
而如果是main.py 调用b.py 的模块中需要调用c.txt,路径该怎么写?
是file = open('c.txt'),还是file = open('../script/c.txt')呢?
通过实验,才发现,这主要是程序运行是的当前路径问题,main.py作为主程序在运行时,无论是自己调用还是引用其他的模块调用其他的文件,当前路径都是main.py所在路径。
2. 明确了当前路径之后,后面的读取就很方便了
现在基本上有两种方式:
1)把常用的路径文件夹直接写到系统路径中;
2) 就是1所提到的相对引用的方法,比较直接,但需要每次都要弄清楚相对路径。
知识有限,仅供参考,以备后用。
来源:CSDN
作者:lttx
链接:https://blog.csdn.net/snoop_lttx/article/details/53674659