我想将一串 ZPL 代码从一个 python 脚本传递到另一个 python 脚本。在第二个脚本中使用时,该字符串格式错误。如何将字符串文字作为参数传递给另一个 python 脚本而不会格式错误?
原始字符串
^XA^FO20,20^BQ,2,3^FDQA,001D4B02107A;1001000;49681207^FS^FO50,50^ADN,36,20^FDMAC: 001D4B02107A^FS^FO50,150^ADN,36,20^FDSN: 1001000^FS^FO50,250^ADN,36,20^FDCode: 49681207^FS^XZ
畸形字符串
XAFO20,20BQ,2,3FDQA,001D4B02107A;1001000;49681207FSFO50,50ADN,36,20FDMAC:
我调用第二个脚本的代码
def printLabel():
label = "^XA"+"^FO20,20^BQ,2,3^FDQA,"+"001D4B02107A;1001000;49681207"+"^FS"+"^FO50,50"+"^ADN,36,20"+"^FD"+"MAC: "+"001D4B02107A"+"^FS"+"^FO50,150"+"^ADN,36,20"+"^FD"+"SN: "+"1001000"+"^FS"+"^FO50,250"+"^ADN,36,20"+"^FD" + "Code: "+"49681207"+"^FS"+"^XZ"
command = "zt320print.py "+label
print command
sys.stdout.flush()
exitCode = os.system(str(command))
接收参数的代码
if __name__ == "__main__":
zplString = str(sys.argv[1])
print zplString
printZPL(zplString)
如果您的代码需要按原样编写(包括将 ZPL 代码串在一起的相当奇怪的方式,以及通过 shell 中介调用单独的脚本,以及避免subprocess
,就此而言),您可以解决您的问题一些小的调整:
首先,将您的代码字符串用双引号括起来。
label= '"^XA'+"^FO20,20^BQ,2,3^FDQA,"+"001D4B02107A;1001000;49681207"+"^FS"+"^FO50,50"+"^ADN,36,20"+"^FD"+"MAC: "+"001D4B02107A"+"^FS"+"^FO50,150"+"^ADN,36,20"+"^FD"+"SN: "+"1001000"+"^FS"+"^FO50,250"+"^ADN,36,20"+"^FD" + "Code: "+"49681207"+"^FS"+'^XZ"'
其次,确保您实际上是python
从 shell调用的:
command = "python script2.py "+label
最后,如果您担心无法从命令行正确读取特殊字符,请使用unicode_escape
fromcodecs.decode
确保正确传输。
有关更多信息,请参阅此答案unicode_escape
。
# contents of second script
if __name__ == "__main__":
from codecs import decode
import sys
zplString = decode(sys.argv[1], 'unicode_escape')
print(zplString)
现在来自您的第一个脚本的调用将正确传输代码:
import sys
import os
sys.stdout.flush()
exitCode = os.system(str(command))
输出:
^XA^FO20,20^BQ,2,3^FDQA,001D4B02107A;1001000;49681207^FS^FO50,50^ADN,36,20^FDMAC: 001D4B02107A^FS^FO50,150^ADN,36,20^FDSN: 1001000^FS^FO50,250^ADN,36,20^FDCode: 49681207^FS^XZ
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句