我有一大堆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()
,但我想我为什么会抛出这个异常模糊不清。我知道这段代码对于那些将它用于类似项目的人来说很有用,我的语法是否有问题导致这种情况失败?
答案 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)