嗨,我有一个简单的python脚本,它使用odbc驱动程序连接到数据库获取数据帧并存储/覆盖Excel文件。当我使用 eclipse 运行脚本时,它工作得很好。但是,当我通过右键单击.py文件并使用 py.exe 打开它时,excel 文件不会被覆盖/保存。
最终,我希望其他用户能够安装 python,只需双击.py脚本即可更新 excel 文件。有谁知道为什么它不适用于右键单击方法?当我检查时,他们都应该使用相同的解释器。
import pyodbc
import pandas as pd
cnxn = pyodbc.connect('Driver={ODBC Driver (x64)};'
'DSN=MyDSN;'
'Server=ServerAddress;'
'Database=Stuff;')
t1 = "table1"
sql = ("select * " + "from " + t1)
writer = pd.ExcelWriter("MyExcelFile.xlsx")
dframe = pd.read_sql(sql,cnxn)
aggDf = dframe.groupby(['DEPARTMENT']).sum()
dframe.to_excel(writer,"RawSalesData", index = False)
aggDf.to_excel(writer, "SalesStats")
writer.save()
writer.close()
下面是运行 Jacob 在评论中建议的 sys 代码的结果。似乎两种方法都匹配。
sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)
[
'C:\Users\persona\PythonWorkSpace\TestPython',
'C:\Users\persona\anaconda3',
'C:\Users\persona\anaconda3\DLLs',
'C:\Users\persona\anaconda3\libs',
'C:\Users\persona\anaconda3\pkgs',
'C:\Users\persona\anaconda3\conda-meta',
'C:\Users\persona\anaconda3\envs',
'C:\Users\persona\anaconda3\etc',
'C:\Users\persona\anaconda3\include',
'C:\Users\persona\anaconda3\Lib',
'C:\Users\persona\anaconda3\Library',
'C:\Users\persona\anaconda3\man',
'C:\Users\persona\anaconda3\Menu',
'C:\Users\persona\anaconda3\Scripts',
'C:\Users\persona\anaconda3\share',
'C:\Users\persona\anaconda3\sip',
'C:\Users\persona\anaconda3\tcl',
'C:\Users\persona\anaconda3\Tools',
'C:\WINDOWS\system32',
'C:\Users\persona\Anaconda3\python36.zip',
'C:\Users\persona\Anaconda3\lib\site-packages',
'C:\Users\persona\Anaconda3\lib\site-packages\win32',
'C:\Users\persona\Anaconda3\lib\site-packages\win32\lib',
'C:\Users\persona\Anaconda3\lib\site-packages\Pythonwin'
]
^ right click method
--------------------
sys.version_info(major=3, minor=6, micro=5, releaselevel='final', serial=0)
[
'C:\Users\persona\PythonWorkSpace\TestPython',
'C:\Users\persona\PythonWorkSpace\TestPython',
'C:\Users\persona\anaconda3',
'C:\Users\persona\anaconda3\DLLs',
'C:\Users\persona\anaconda3\libs',
'C:\Users\persona\anaconda3\pkgs',
'C:\Users\persona\anaconda3\conda-meta',
'C:\Users\persona\anaconda3\envs',
'C:\Users\persona\anaconda3\etc',
'C:\Users\persona\anaconda3\include',
'C:\Users\persona\anaconda3\Lib',
'C:\Users\persona\anaconda3\Library',
'C:\Users\persona\anaconda3\man',
'C:\Users\persona\anaconda3\Menu',
'C:\Users\persona\anaconda3\Scripts',
'C:\Users\persona\anaconda3\share',
'C:\Users\persona\anaconda3\sip',
'C:\Users\persona\anaconda3\tcl',
'C:\Users\persona\anaconda3\Tools',
'C:\Program Files\eclipse',
'C:\Users\persona\Anaconda3\lib\site-packages',
'C:\Users\persona\Anaconda3\lib\site-packages\win32',
'C:\Users\persona\Anaconda3\lib\site-packages\win32\lib',
'C:\Users\persona\Anaconda3\lib\site-packages\Pythonwin',
'C:\Users\persona\Anaconda3\python36.zip'
]
制作一个像这样的 python 文件:
from sys import version_info, path
print(version_info)
print(path)
然后尝试使用您提到的两种方法打开。结果应该匹配,如果不匹配,那就是您的问题。如果它们确实匹配,您应该添加更多的日志记录/异常处理,以便我们了解失败的原因。