【问题标题】:SyntaxError: EOL error due to the command instructionSyntaxError:由于命令指令导致的 EOL 错误
【发布时间】:2019-05-05 00:16:51
【问题描述】:

我正在尝试将 labview 程序“转换”为控制仪器的 python 代码。我通过 TCP-IP 连接到设备。问题是我必须发送的命令包含一个直引号 ('),我认为这会导致 SyntaxError。在 LabView 中工作的典型命令是 (param-disp 'laser1:serial-number) 所以我使用的代码是

import socket
import logging

TCP_IP = '192.168.1.1'
TCP_PORT = 5000
BUFFER_SIZE = 1024
MESSAGE = (param-disp 'laser1:serial-number)\n

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()

print ("received data:", data)

我收到了这个错误:“SyntaxError: EOL while scanning string literal”。 如果它以\n' 结尾,那么我收到“SyntaxError:无效语法”错误。我刚开始用 Python 编写代码,显然我遗漏了一些东西。会是什么?

【问题讨论】:

  • 注意你的单引号,MESSAGE应该写成:MESSAGE = '(param-disp laser1:serial-number)\n'

标签: python command tcp-ip


【解决方案1】:

你必须使用字符串引号:

MESSAGE = "(param-disp 'laser1:serial-number)\n"

在 Python 中,您应该始终使用 " - 引号来表示字符串。然后您可以使用内联 ` 字符。

【讨论】:

  • 总是使用"? Python 将单引号视为双引号。然而问题是' 而不是`
  • 在python中使用"引号是很常见的。在 Java 中也是如此,' 是单个字符!我的代码应该可以工作,不是吗?我错过了什么? '-问题应该消失了。
  • 我听到了,但 python 将两者都接受为 sting 类型。例如,print type('a')print type("a") 具有相同的输出:<type 'str'>
  • 正如我已经说过的......两者都是有效的。但是"是更常见的方式。
  • P.S.您发布了print type('a'),这是一个 Python 2 命令。只要有可能,您应该使用 Python 3 (print(type('a')))。这只是一个提示。
猜你喜欢
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 2018-11-06
  • 2015-12-18
  • 2015-12-16
相关资源
最近更新 更多