如何将字符串变量从一个函数传递到另一个函数?
How to pass a string variable from one function to another?
如果我想执行 test1 并将结果传递给 excel 然后执行 test2 然后传递结果,我该怎么做?现在所有的测试都必须一起执行。这可能吗?
import os
import xlswriter
from datetime import datetime
import time
def save_results():
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('B1', test_1())
worksheet.write('B2', test2())
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
def save_results(result):
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', 'PLL TEST', bold)
worksheet.write('B1',result) --> result is string value from pll_test function
workbook.close()
def pll_test():
output = str(ser.read(1000).decode())
alarm_output = str(output)
if "pll reg=0x1 val=0x3f" in alarm_output :
save_results("pass") --> pass value to function
print('Pass')
else:
save_results("fail")
print('fail')
您可以从 pll_test 函数接收主函数中的值。如果您打算在 print 语句之后添加 return,则必须在 print 语句之后添加行 return。
现在 return 值然后作为参数传递给调用 save_results 函数。
真的很简单,不需要改变很多:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()
请注意,我只是在您需要结果的地方调用了函数。我假设此处缺少的其他变量已在您的代码中的其他地方定义。
编辑:
或者,正如我从您的评论中了解到的,您可以在每个测试中调用 save_results
,仅当它是 运行 时,但您必须让 save_results
接受一些参数:
def save_results(result, target_cell):
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write(target_cell, result)
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'A1')
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'B1')
但是你应该注意,调用你的 save_results
每次调用都会添加一个新的工作表,你可能想修改这个函数以每次都在同一个工作表中写入(但这是另一个主题关于此事的问题)。
就像我说的,你的代码有很多问题,但这里的基本逻辑(在我的两个例子中)是在彼此内部调用函数以获得结果(或向它们传递参数)没有问题).
最好的解决方案似乎是这个,你应该遵循这个:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()
如果我想执行 test1 并将结果传递给 excel 然后执行 test2 然后传递结果,我该怎么做?现在所有的测试都必须一起执行。这可能吗?
import os
import xlswriter
from datetime import datetime
import time
def save_results():
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('B1', test_1())
worksheet.write('B2', test2())
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
print('Pass')
return 'Pass'
else:
print('Fail')
return 'Fail'
def save_results(result):
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', 'PLL TEST', bold)
worksheet.write('B1',result) --> result is string value from pll_test function
workbook.close()
def pll_test():
output = str(ser.read(1000).decode())
alarm_output = str(output)
if "pll reg=0x1 val=0x3f" in alarm_output :
save_results("pass") --> pass value to function
print('Pass')
else:
save_results("fail")
print('fail')
您可以从 pll_test 函数接收主函数中的值。如果您打算在 print 语句之后添加 return,则必须在 print 语句之后添加行 return。
现在 return 值然后作为参数传递给调用 save_results 函数。
真的很简单,不需要改变很多:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()
请注意,我只是在您需要结果的地方调用了函数。我假设此处缺少的其他变量已在您的代码中的其他地方定义。
编辑:
或者,正如我从您的评论中了解到的,您可以在每个测试中调用 save_results
,仅当它是 运行 时,但您必须让 save_results
接受一些参数:
def save_results(result, target_cell):
os.chdir(r'C:\Users\vrozakos\DocumentsP_Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write(target_cell, result)
workbook.close()
def test1():
output = str(ser.read(1000).decode())
output = str(output)
if "0x1" in output :
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'A1')
def test2():
output2 = str(ser.read(1000).decode())
print(output2)
test2_output = str(output2)
if "0x1" in test2_output:
result = 'Pass'
else:
result = 'Fail'
print(result)
save_results(result, 'B1')
但是你应该注意,调用你的 save_results
每次调用都会添加一个新的工作表,你可能想修改这个函数以每次都在同一个工作表中写入(但这是另一个主题关于此事的问题)。
就像我说的,你的代码有很多问题,但这里的基本逻辑(在我的两个例子中)是在彼此内部调用函数以获得结果(或向它们传递参数)没有问题).
最好的解决方案似乎是这个,你应该遵循这个:
def save_results():
os.chdir(r'C:\Users\user\Documents\Results')
workbook = xlsxwriter.Workbook(datetime_output_results+'.xlsx')
worksheet = workbook.add_worksheet()
bold = workbook.add_format({'bold': True})
worksheet.set_column('A:A', 20)
worksheet.write('A1', test1())
worksheet.write('B1', test2())
workbook.close()