我在Python中使用boto3库中的查询函数并收到以下错误:
name 'Key' is not defined: NameError
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 51, in lambda_handler
if not getAssetExistance(slack_userID):
File "/var/task/lambda_function.py", line 23, in getAssetExistance
response = dynamoTable.query(KeyConditionExpression=Key('userID').eq(asset))
NameError: name 'Key' is not defined
Run Code Online (Sandbox Code Playgroud)
我一直在阅读有关通过Lambda访问DynamoDB的一系列教程,并且在尝试密钥存在时,他们都使用此KeyConditionExpression行.
这是相关代码(第23行是查询行):
def getAssetExistance(asset):
dynamoTable = dynamo.Table('Assets')
response = dynamoTable.query(KeyConditionExpression=Key('userID').eq(asset))
return bool(response)
Run Code Online (Sandbox Code Playgroud)
我基本上想检查我的DynamoDB表中的主分区键(这是一个松弛的用户ID),看看是否存在.
如果相关,则以下是其余代码:
################################
# Slack Lambda handler.
################################
import boto3
import logging
import os
import urllib
# Grab data from the environment.
BOT_TOKEN = os.environ["BOT_TOKEN"]
ASSET_TABLE = os.environ["ASSET_TABLE"]
REGION_NAME = os.getenv('REGION_NAME', 'us-east-1') …Run Code Online (Sandbox Code Playgroud) 我目前正在使用以下代码将XML文件读入字符串:
'Target Path
sFileName = ThisWorkbook.Path & "\Assembly\Alarms.xml"
iFileNum = FreeFile
'Open File
Open sFileName For Input As iFileNum
'Read Text
Do Until EOF(iFileNum)
Line Input #iFileNum, sBuf
sTemp = sTemp & sBuf & vbCrLf
Loop
'Close File
Close iFileNum
Run Code Online (Sandbox Code Playgroud)
我在执行此操作时遇到的问题是字符串的大小限制.如果我打印sTemp并选择它,我会得到32,767个字符.
我将它推入一个字符串,以便我可以在特定的行项目上执行查找/替换.是否有另一种(更好的)方法从我的XML读取并查找/替换而不会遇到此问题?任何建议,将不胜感激.
<?xml version="1.0" encoding="UTF-8"?>
<alarms version="1.0" product="{E44CB020-C21D-11D3-8A3F-0010A4EF3494}" id="Alarms">
<alarm history-size="10000" display-name="[ALARM]" hold-time="250" max-update-rate="1.00" embedded-server-update-rate="1.00" silence-tag="" remote-silence-exp="" remote-ack-all-exp="" status-reset-tag="" remote-status-reset-exp="" close-display-tag="" remote-close-display-exp="" use-alarm-identifier="false">
<triggers>
<trigger id="T1" type="bit" ack-all-value="999" use-ack-all="true" ack-tag="{[##PLCNAME]PVAlmAckCmd[0]}" exp="{[##PLCNAME]PVArrayAlarm[0],L1}" message-tag="" message-handshake-exp="" message-notification-tag="" …Run Code Online (Sandbox Code Playgroud) 当我尝试拆分单个单词时,我一直在 Python 中遇到错误。从我读到的,这是因为默认的 split() 命令查找空格。问题是,我希望第二个分配的变量(在这种情况下为资产)不返回任何内容或返回空值。这就是我正在使用的:
slack_text.startswith("!help"):
command, asset = slack_text.split()
if asset != "":
if asset == "commandlist":
slack_reply = "Available Commands: !addme, !getBalance, !buy <asset> <quantity>"
elif asset == "ships":
slack_reply = getAllShips()
elif asset == "buildings":
slack_reply = getAllBuildings()
elif shipExists(asset):
slack_reply = getShip(asset)
elif buildingExists(asset):
slack_reply = getBuilding(asset)
else:
slack_reply = "Not a valid asset."
else:
slack_reply = "Available help modifiers are: commandlist, <ship_name>, <building_name>. (!help <modifier>)"
Run Code Online (Sandbox Code Playgroud)
因此,使用此代码,我可以在 Slack 中键入 '!help ship' 并且没有错误并返回 getAllShips() 函数。但是如果我简单地输入 '!help',Python 就会抛出一个错误。 …