0

我正在试验 AWS IoT greengrass V2。我只是按照具有以下 python 代码的手册进行操作:

import sys
import datetime

message = f"Hello, {sys.argv[1]}! Current time: {str(datetime.datetime.now())}."

# Print the message to stdout.
print(message)

# Append the message to the log file.
with open('/tmp/Greengrass_HelloWorld.log', 'a') as f:
    print(message, file=f)

根据我的日志记录,第 4 行存在语法错误。用以下内容替换第 4 行可以正常工作:

message = "Hello"

有谁看到这条线有什么问题:

message = f"Hello, {sys.argv[1]}! Current time: {str(datetime.datetime.now())}."

谢谢。

4

2 回答 2

1

我是 AWS IoT Greengrass 的文档作者之一。

格式化字符串字面量 ( f"some content") 是 Python 3.6+ 的一个特性,这种语法在早期版本中会导致语法错误。入门教程要求错误地将 Python 3.5 列为要求,但 Python 3.5 不支持格式化字符串文字。我们会将此要求更新为 3.6 或更新脚本以删除格式化的字符串文字。

要解决此问题,您可以升级到 Python 3.6+ 或修改脚本以删除格式化的字符串文字。感谢您发现这个问题!

于 2021-06-07T16:07:54.990 回答
0

作为记录:我更改了代码,避免了f"stringliteral"

import sys
import datetime

constrmessage ="Hello, ",str(sys.argv[1])," "+str(datetime.datetime.now())
#change from tuple to string
message = ''.join(constrmessage)
#print message to screen
print(message)

original_stdout = sys.stdout

# Append the message to the log file.
with open('/tmp/Greengrass_HelloWorld.log', 'a') as f:
    sys.stdout = f
    print(message)
    sys.stdout = original_stdout
于 2021-06-08T19:40:43.763 回答