我有以下python代码,它查询数据库中的一些值,并继续使用matplotlib将它们绘制成图形
import sys
import pyodbc
import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
if len(sys.argv) == 2:
server = 'LOCAL'
database = 'basic_db'
try:
conexion = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Trusted_Connection=yes;')
cursor = conexion.cursor()
except Exception as e:
print("Error SQL Server: ",e)
card = sys.argv[1]
my_dpi= 96
consulta = "SELECT qt_x from tb_value WHERE cd_card = "+str(card)+";"
cursor.execute(consulta)
img_x = cursor.fetchall()
consulta = "SELECT qt_y from tb_value WHERE cd_card = "+str(card)+";"
cursor.execute(consulta)
img_y = cursor.fetchall()
consulta = "SELECT max(qt_y) from tb_value WHERE cd_card = "+str(card)+";"
cursor.execute(consulta)
maxy = float(cursor.fetchval())
y_tope = maxy + 1
fig, catc = plt.subplots(figsize=(96/my_dpi,96/my_dpi))
catc.plot(img_x,img_y, "black")
catc.set_axis_off()
limx= catc.get_xlim()
limy= catc.get_ylim()
catc.set_ylim((y_tope/2)*-1,y_tope)
catc= plt.gcf()
figname = 'cdg_{}.jpg'.format(card)
path = r"C:\Users\basic user\Desktop\BSC\BasicProg\BasicProg\bin\Debug\cards"
dest = os.path.join(path, figname)
catc.savefig(dest, dpi=96)
else:
print("Error - Introduce los argumentos correctamente")
print("Ejemplo: graphbasiccard.py Carta ")
如果我在cmd中使用:python graphbasiccard.py 1运行代码,它将非常有效。我在这个环境中使用了python 3.8.3
问题是,当试图通过从C#函数调用脚本来运行脚本时,程序不会返回错误,但它只是不执行任何操作。我正在使用以下代码拨打电话:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/c \"python "+ @"C:\Users\Basic User\Desktop\Basic\BasicPRogram\BasicPRogram\bin\Debug\" + "graphbasiccard.py "+ cd_card;
MessageBox.Show(startInfo.Arguments.ToString());
process.StartInfo = startInfo;
process.Start();
我还尝试使用以下命令直接调用python.exe:
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = @"C:\Users\Anthony Godoy\AppData\Local\Programs\Python\Python38\python.exe";
startInfo.Arguments = @"C:\Users\Basic User\Desktop\Basic\BasicPRogram\BasicPRogram\bin\Debug\graphbasiccard.py " + cd_card;
process.StartInfo = startInfo;
process.Start();
但我没办法让它工作。有什么建议吗
我设法把它修好了。我遇到的问题是,它给出了一条远离原点的路径,我用以下方法更正了它:
相关问题 更多 >
编程相关推荐