大家好我有关于在异常时将varable发送到另一个脚本的问题。 script1.py:
def main():
conn = None
try:
logging.basicConfig(level=logging.DEBUG, filename='{}'.format(error_log))
try:
#Define our connection string
conn_string = ("host=x.x.x.x dbname=xxx user=xxx password=xxx")
# Get a connection
conn = psycopg2.connect(conn_string)
# conn.cursor will return a cursor object
cursor = conn.cursor()
print "Connected to PostgreSQL!\n"
root = open('x','rb').read()
p = root
# Cursor insert into PostgreSQL XML as string
cursor.execute("SELECT epg_insert_doc_xml_3(%s)",[str(p)])
conn.commit()
except psycopg2.DatabaseError, e:
if conn:
conn.rollback()
print 'Error %s' % e
var_x = 'Send some variable %s'% e
logging.exception("Failed to process Datatbase error! %s" % e )
sys.exit(1)
except:
logging.exception("Failed to process Datatbase error! %s"% current_time)
finally:
if conn:
conn.close()
if __name__ == "__main__":
main()
我想将此脚本中的var_x发送到此脚本: script2.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
import time
import pickle
from script1 import *
current_time = time.strftime("%Y/%m/%d %H:%M", time.localtime())
var = var_x
f = '{} %s'.format(var_x) % current_time
class sendMail:
def sendMessage(self):
self.server = smtplib.SMTP('x', 25)
self.server.login("x", "x")
msg = "Opis greške:\n %s" % f
self.server.sendmail("x", "x", msg)
send = sendMail()
send.sendMessage()
但这不起作用,你能帮我解决一下这个问题。
答案 0 :(得分:3)
您不会将变量从脚本发送到脚本。你将args传递给函数...
您可以按照以下步骤修改脚本:
script2.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import smtplib
import time
class Mail:
def send(self, var_x):
current_time = time.strftime("%Y/%m/%d %H:%M", time.localtime())
f = '{} %s'.format(var_x) % current_time
self.server = smtplib.SMTP('x', 25)
self.server.login("x", "x")
msg = "Opis greške:\n %s" % f
self.server.sendmail("x", "x", msg)
script1.py
from script1 import Mail
def main():
mail = Mail()
...
mail.send(var_x)
...
答案 1 :(得分:2)
试试这个:execfile("script2.py", {"var_x": var_x})
>>> help(execfile)
execfile(...)
execfile(filename[, globals[, locals]])
Read and execute a Python script from a file.
The globals and locals are dictionaries, defaulting to the current
globals and locals. If only globals is given, locals defaults to it.