Python 代码在Jupyter笔记本上运行,但与.py脚本不同

Python 代码在Jupyter笔记本上运行,但与.py脚本不同,python,jupyter-notebook,Python,Jupyter Notebook,我的代码的简化示例,请忽略语法错误: import numpy as np import pandas as pd import pymysql.cursors from datetime import date, datetime connection = pymysql.connect(host=, user=, pas

我的代码的简化示例,请忽略语法错误:

    import numpy as np
    import pandas as pd
    import pymysql.cursors
    from datetime import date, datetime

    connection = pymysql.connect(host=,
                                 user=,
                                 password=,
                                 db=,
                                 cursorclass=pymysql.cursors.DictCursor)
    df1 = pd.read_sql()
    df2 = pd.read_sql(
    df3 = pd.read_sql()

    np.where(a=1, b, c)

    df1.append([df2, d3])



    path = r'C:\Users\\'
    df.to_csv(path+'a.csv')

在Jupyternotebook上,它像预期的那样输出csv文件。但是,我需要下载.py并使用python运行。它只会在我重新启动计算机后第一次运行它时输出csv。其他时候它只会运行,什么也不会发生。发生这种情况的原因让我大吃一惊。

我想你把路径加错了


如果您将路径更改为
df.to_csv(path+'\a.csv')
,那么它将是正确的

在不知道实际代码的情况下很难说,但是一个想法是,您与数据库的连接从未关闭,并且以某种方式锁定了数据库,因此您无法建立另一个连接

当然,当您重新启动计算机时,第一次连接将结束

要查看这是否是一个问题,您可以使用MySQL命令
showProcessList
,为您列出不同的连接;如果在第一次运行脚本后,其中一个进程仍然与您刚建立的计算机连接相同,这可能就是问题所在。以下是命令中的文档:

或者,您可以使用一些打印语句将DB连接代码包装在try/except块中,以确定这是否是一个问题,如下所示:

try:
    print "Right before connection"
    connection = pymysql.connect(host=,
                                 user=,
                                 password=,
                                 db=,
                                 cursorclass=pymysql.cursors.DictCursor)
    print "Right after connection"
except Exception as e:
    print "The Exception is:{}".format(str(e))



此外,您应该非常明确地打印您试图写入CSV的对象,以查看它们在第二次写入时是否仍然有效(即,确保您实际填充了这些变量,并且它们不仅仅是非变量)

df.to_CSV(path+'\a.CSV')
抱歉,请忽略它本身的代码。我只是把它作为我正在做的一个例子。每次我认为你需要把你正在做的事情放到jupyter上,以准确地知道可能发生的事情时,实际的代码都能在jupyter上正常工作happening@Totoro很抱歉,我不能这样做,但这只是我的示例的一个更复杂的版本,带有凭据。。困扰我的是为什么它只在重新启动我的计算机后才起作用,而不是代码本身。我会检查您是否使用相同的python env运行notebook和.py文件。同时添加大量打印语句并检查是否有空的catch语句。对不起,请忽略它自己的代码。我只是把它作为我正在做的一个例子。实际代码每次都可以在jupyter上正常工作。我只是不知道为什么它在Jupyer上工作,但不是.py