Python 写入文件失败,但未生成错误

Python 写入文件失败,但未生成错误,python,file-io,Python,File Io,我正试图写入一个文件,但它不起作用。我已经一步一步地使用了调试器(调试器转到write命令,但当我打开文件时,它是空的) 我的问题是:“我如何看到错误是什么,这样我就可以调试?”,“当试图写入一个文件时,会出现什么错误,从而导致它以这种方式运行?” 这应该很简单,但我似乎找不到答案。另外,我提前道歉,因为英语是第二语言 编辑:我在前面放了一个print语句,字符串不是空的。 Edit2:我正在使用Python2.6,如果考虑到这一点的话。 编辑3:我已经找到了解决我错误的“方法”。我决定尝试使

我正试图写入一个文件,但它不起作用。我已经一步一步地使用了调试器(调试器转到write命令,但当我打开文件时,它是空的)

我的问题是:“我如何看到错误是什么,这样我就可以调试?”,“当试图写入一个文件时,会出现什么错误,从而导致它以这种方式运行?”

这应该很简单,但我似乎找不到答案。另外,我提前道歉,因为英语是第二语言


编辑:我在前面放了一个print语句,字符串不是空的。
Edit2:我正在使用Python2.6,如果考虑到这一点的话。


编辑3:我已经找到了解决我错误的“方法”。我决定尝试使用IDLE而不是PyCharm来运行我的脚本,它就像一个charm(双关语)。我不知道为什么,但它在那里。为什么会这样

下面的代码允许您查看抛出的异常,并查看其起源的跟踪

try:
    sqlScript.write(sqlLine)
except:
    print "Unexpected error:", sys.exc_info()[0]
    raise

有关更多信息,请参阅。

如果没有抛出异常,我会怀疑字符串变量“sqlLine”为空


你是在书面陈述之前打印的吗?

根据克里斯·莫里斯的回答,也许可以这样做:

try:
    sqlScript.write(sqlLine)
except Exception as e:
    print type(e)
    print str(e)
这将捕获抛出的任何异常(当然前提是它是
Exception
的子类),并告诉您类型和错误消息


此外,还可以为不同的可能异常定义多个
,除了:
情况,因此可以尝试为可能引发/引发的每个异常定义多个

脚本中的关键字是否为小写?在另一个数据库中,同样的事情发生在我身上,我通过将单词改为大写来解决它。

您当前的工作目录不是您所期望的,它正在成功地写入另一个目录中的某个
脚本文件.sql
。尝试打印
os.getcwd()
,确保它是您期望的,然后查看该目录。

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

myScript.seek(0)

请参阅以下答案:

它发生在我的linux环境中,但在windows上工作请尝试

sqlScript = open('script-file.sql', 'a', buffering=False)


你说的“它不起作用”是什么意思?它是否生成您捕获的异常?或者没有生成异常?在检查文件之前,您是否在Python进程中关闭或刷新了该文件?艾伦:它不会生成错误。拉斯曼:我打开它只是为了附加。这是你的实际代码吗?考虑到错误的缩进,我怀疑不是这样,而是其他因素在影响它。您是否尝试过完全按照此处发布的方式运行代码(自己设置sqlLine值)?问题可能出在别处。您还应该查看是否将文件(
以open('script-file.sql',a')作为sqlScript:
)写入。这是实际的代码(只有我更改了文件名,因为它是客户端的名称。)当我复制它时,它没有保留缩进,所以我自己放了空格。我刚才放了一个print语句,字符串不是空的。我使用了你的代码,没有得到错误。真奇怪。@Boona你确定吗?这看起来很奇怪。您的控制台上没有弹出“意外错误”消息?我甚至没有机会运行脚本,因为我无法将其写入文件:P(注意:我不是直接向DB写入,而是生成一个脚本,稍后将运行该脚本。)我只是发现了问题。当我试着用IDLE而不是PyCharm运行它时,它成功了。我不知道为什么真有趣!我查过了,这是我期待的目录。
sqlScript = open('script-file.sql', 'a', buffering=False)
sqlScript = open('script-file.sql', 'a', 0)