【发布时间】:2014-05-08 12:00:52
【问题描述】:
让我们假设项目的目录结构如下
<root>
__init__.py
helloworld.py
<moduleOne>
f.txt
__init__.py
printfile.py
root 和 moduleOne 是目录
helloworld.py 的内容:
#!/usr/bin/python
import helloworld.printfile
printf()
moduleOne/打印文件的内容
#!/usr/bin/python
f = open('f.txt')
def printf():
print 'print file'
print f
if __name__ == '__main__':
printf()
我的问题:
从 moduleOne/ 执行 printfile 没问题,但是从 root/ 运行 helloworld.py 会发生以下错误:
import moduleOne.printfile
File "/root/moduleOne/printfile.py", line 5, in <module>
f = open('f.txt')
IOError: [Errno 2] No such file or directory: 'f.txt'
如何在python中解决这个问题?
[已编辑]
我通过“解决方法”(或多或少)解决了这个问题,但仍然有问题:
我的解决方案:
在moduleOne/printfile中
import sys
fname = 'moduloOne/f.txt'
def printf():
f = open(fname)
print 'print file'
print f
if __name__ == '__main__':
fname = 'f.txt'
printf()
但是……
假设我有一个新目录,从根目录,称为 etc,那么新结构是:
<root>
__init__.py
helloworld.py
<moduleOne>
f.txt
__init__.py
printfile.py
<etc>
f2.txt
现在我需要从 moduleOne/printfile 访问 etc/f2.txt。怎么样?
【问题讨论】:
-
你试过f = open('moduleOne/f.txt')吗?
-
我试过这个(现在),从
工作,但从 失败:IOError: [Errno 2] No such file or directory: 'moduleOne/f.txt' -
你需要从两个模块访问'f.txt'吗?
-
是的,实际上我需要从其他模块访问 f.txt(配置文件)。
-
'f.txt' 在 root 或 moduleOne 中吗?
标签: python