Python中的异常问题

时间:2015-02-15 04:25:45

标签: python mysql python-2.7

我有一大堆Python代码,应该在执行时创建MySQL模式。问题是每当我运行它时,我都会收到错误Raise Exception(e). Exception: [Error 2] the system cannot find the file specified

以下是我的代码:

from test.db.db import DB
from test.config import loggingSetup
loggingSetup.initializeLogging("createTest.py")
import logging

def createSports(db):
   sqlFile = "..\\sql\\createSchema.sql"

   db.run(sqlFile)

def create():
   db=DB()

   createSports(db)

def Main():
    create()

if__name__=='__main__':
   try:
      main()
   except Exception, e:
      logging.info(e.message)
      raise Exception(e)

现在我承认,这段代码并不完全是我的。我在网上找到了这个,我正在尝试重做它,以满足我的需求。我对python的体验充其量是最小的,但你必须从某个地方开始。在基本层面上,我认为if语句是if __name__=='__main__' then try main(),但我想我为什么会抛出这个异常模糊不清。我知道这段代码对于那些将它用于类似项目的人来说很有用,我的语法是否有问题导致这种情况失败?

3 个答案:

答案 0 :(得分:0)

def createSports(db):
   sqlFile = "..\\sql\\createSchema.sql" #file path goes here

在这里你必须写你的文件路径。这是一个例子。完成路径并确保此文件存在。

答案 1 :(得分:0)

你应该知道“工作目录”和实际目录之间的区别。在运行时期间,如果不使用绝对路径,则代码(不仅是python,而是其他语言,如C ++,Java)将把路径视为相对路径。所以问题是它相对于什么?答案是“工作目录”,您可以通过“os.chdir”轻松更改工作目录。在这种情况下,您需要将其传输到绝对路径:

solution:

1)

def createSports(db):
    sqlFile = "..\\sql\\createSchema.sql"
    sqlFile = os.path.abspath(sqlFile)
    if not os.path.exists(sqlFile):
        msg = "file %s doesn't exist" % sqlFile
        raise Exception(msg)
    else:
       db.run(sqlFile)

2)使用完整路径,但要注意转义字符,你应该使用这个sqlFile = r"C:\User\Desktop\Test\sql\createSchema.sql",使用“r”表示这是原始的刺痛,不要逃避“\”

答案 2 :(得分:0)

试试这个:

initialize_logging(__file__) 

这是因为找不到您传递给日志记录功能的文件。简而言之,文件为您提供当前加载模块的路径。

详细了解文件 here