无法写入文件但不生成错误

时间:2012-04-04 19:28:48

标签: python file-io

我正在尝试写入文件,但它无法正常工作。我已经逐步完成了调试器(它转到了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来运行我的脚本,它就像一个魅力(双关语)。我不知道为什么,但它确实存在。有什么理由会发生这种情况?!

7 个答案:

答案 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)

您必须将光标放在文件的开头。您可以使用seek方法执行此操作:

myScript.seek(0)

请参阅此答案:https://stackoverflow.com/a/2949648/2119117

答案 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)