我正在尝试写入文件,但它无法正常工作。我已经逐步完成了调试器(它转到了write命令,但是当我打开文件时它是空的)。
我的问题是:“我怎么看错误是什么,所以我可以调试?”,“当试图写入一个会导致它以这种方式运行的文件时会出现什么问题?”。
sqlScript = open('script-file.sql', 'a')
try:
sqlScript.write(sqlLine)
except IOError as (errno, strerror):
print "I/O error({0}): {1}".format(errno, strerror)
这应该很简单,但我似乎无法找到答案。另外,我提前道歉,因为英语是第二语言。
编辑:我之前放了一个print语句,字符串不为空。
编辑2:如果以某种方式考虑因素,我正在使用python 2.6。
编辑3:我找到了错误的“解决方案”。我决定尝试使用IDLE而不是PyCharm来运行我的脚本,它就像一个魅力(双关语)。我不知道为什么,但它确实存在。有什么理由会发生这种情况?!
答案 0 :(得分:4)
以克里斯莫里斯的回答为基础,也许做这样的事情:
try:
sqlScript.write(sqlLine)
except Exception as e:
print type(e)
print str(e)
这将捕获抛出的任何Exception(当然,如果它是Exception
的子类)并告诉您类型和错误消息。
此外,可以为不同的可能异常定义多个except:
个案例,因此可以尝试为可能抛出/引发的每个异常执行此操作。
答案 1 :(得分:2)
以下代码允许您查看抛出的异常,并查看其来源的痕迹。
try:
sqlScript.write(sqlLine)
except:
print "Unexpected error:", sys.exc_info()[0]
raise
有关详细信息,请参阅http://docs.python.org/tutorial/errors.html。
答案 2 :(得分:1)
答案 3 :(得分:0)
如果没有抛出异常,我怀疑字符串变量'sqlLine'是空的。
你是否在写声明之前打印了它?
答案 4 :(得分:0)
脚本中的关键字是小写的吗?我在另一个数据库中发生了同样的事情,我通过将单词更改为UPPERCASE来解决它。
答案 5 :(得分:0)
您当前的工作目录不是您所期望的,并且它已成功写入另一个目录中的某些script-file.sql
。尝试打印os.getcwd()
并确保它符合您的期望,并查看该目录。
答案 6 :(得分:0)
它发生在我的Linux环境中但是在Windows上工作
sqlScript = open('script-file.sql', 'a', buffering=False)
或
sqlScript = open('script-file.sql', 'a', 0)