作者rebellionyu (Rebellionyu)
看板Python
标题[问题] Import module to open file
时间Thu Feb 9 11:03:22 2017
最近遇到一个import问题,虽然可以解决,
但想知道比较普遍或python通常怎麽做。
资料夹结构如下:
package
|__main.py
|__module
|__output.py
|__display.txt
在package资料夹里有main.py及module资料夹,
module资料夹里有output.py, display.txt两个档案。
============================
main.py内容为:
from module.output import *
printFile()
============================
output.py内容为:
def printFile():
f = open('display.txt', 'r')
print(f.read())
f.close()
若我直接执行python main.py会显示找不到display.txt这个档案。
虽然在开档时可以直接利用os这个module来产生绝对路径。
像是:path = os.path.join(os.path.abspath(__file__), 'display.txt')
但我总觉得这样相当难看。
请问有比较好的作法吗?或是就真的如上,必须产生绝对路径读档。
谢谢各位!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.219.202.66
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1486609405.A.577.html
1F:推 s860134: 你的方法应该就是最佳解吧 02/09 12:21
2F:→ Neisseria: 包在内部没差,外部使用的人不需要处理这些细节 02/09 12:22
3F:→ s860134: 你找不到txt 是因为你的当前路径并不是在这个档案目录 02/09 12:24
4F:→ rebellionyu: 好,谢谢各位的回答! 02/09 12:32
5F:→ zerof: _ROOT = os.path.dirname(os.path.abspath(__file__)) 02/09 12:47
6F:→ zerof: def printFile(dir=_ROOT): 02/09 12:48
7F:→ zerof: with open(os.path.join(dir, "display.txt"), 'r') as f 02/09 12:49