IOError: [Errno 2]偶尔没有这样的文件或目录



我有一个web应用程序和一个移动应用程序连接到我的服务器。在我的服务器中,我有一个模块(md.py),它使用另一个模块(config.py)从本地XML文件读取数据。

当我发送请求config.py(间接)从我的应用程序的数据一切工作正常。当我从同一台机器上的md.py调用config.py时,问题发生了。

这是层次结构:

root/
  start.py
  md/
    __init__.py
    md.py
  server/ 
    __init__.py
    config.py
    server.py
    data/
        config.xml

这是md.py

from server import config
class Md:
    def get_data(self):        
        conf = config.Config() # Errno 2 here

这是config.py

import xml.etree.ElementTree as ET
CONF_FILE = "data/config.xml" 
class Config:
    def __init__(self):
        self.file = ET.parse(CONF_FILE)
        self.root = self.file.getroot()

这就是我在start.py

中运行这些文件的方式
def start():
    global server_p
    server_p = subprocess.Popen('python ./server/server.py')
    md = subprocess.Popen('python ./md/md.py')

我能做些什么来解决这个问题?

首先从config.py中的os.path模块导入dirnamejoin:

from os.path import dirname, join

然后将CONF_FILE更改为:

CONF_FILE = join(dirname(__file__), 'data', 'config.xml')

可以把__file__看作是某些代码在其中定义的文件的绝对路径,当它作为模块加载时。dirname接受该路径,并给出文件所在目录的路径,join将任意数量的参数串成一个新路径。

所以首先我们通过读取__file__得到{abs_path_to}root/server/config.py。然后dirname(__file__)得到{abs_path_to}root/server。再加上dataconfig.xml,最后我们得到了{abs_path_to}root/server/data/config.xml

相关内容

  • 没有找到相关文章

最新更新