我正在使用NodeJS AWS SDK生成预先签名的S3 URL.文档提供了生成预签名URL的示例.
这是我的确切代码(省略了敏感信息):
const AWS = require('aws-sdk')
const s3 = new AWS.S3()
AWS.config.update({accessKeyId: 'id-omitted', secretAccessKey: 'key-omitted'})
// Tried with and without this. Since s3 is not region-specific, I don't
// think it should be necessary.
// AWS.config.update({region: 'us-west-2'})
const myBucket = 'bucket-name'
const myKey = 'file-name.pdf'
const signedUrlExpireSeconds = 60 * 5
const url = s3.getSignedUrl('getObject', {
Bucket: myBucket,
Key: myKey,
Expires: signedUrlExpireSeconds
})
console.log(url)
Run Code Online (Sandbox Code Playgroud)
生成的URL如下所示:
https://bucket-name.s3-us-west-2.amazonaws.com/file-name.pdf?AWSAccessKeyId=[access-key-omitted]&Expires=1470666057&Signature=[signature-omitted]
Run Code Online (Sandbox Code Playgroud)
我正在将该URL复制到我的浏览器中并获得以下响应:
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does …Run Code Online (Sandbox Code Playgroud) 当我使用ngrok给出的ngrok&run url时显示这些错误a)我的本地网址是: - localhost:8080/someexample b)我的ngrok网址是: - http://f07d0862.ngrok.io/ 但每次都显示错误请求 - 无效的主机名HTTP错误400.
我有:
import xml.etree.ElementTree as ET
def strip_tag_name(t):
t = elem.tag
idx = k = t.rfind("}")
if idx != -1:
t = t[idx + 1:]
return t
events = ("start", "end")
title = None
for event, elem in ET.iterparse('data/enwiki-20190620-pages-articles-multistream.xml', events=events):
tname = strip_tag_name(elem.tag)
if event == 'end':
if tname == 'title':
title = elem.text
elif tname == 'page':
print(title, elem.text)
Run Code Online (Sandbox Code Playgroud)
这似乎给标题很好,但页面text似乎总是空白。我错过了什么?
我一直无法打开文件(它很大),但我认为这是一个准确的片段:
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
<siteinfo>
<sitename>Wikipedia</sitename>
<dbname>enwiki</dbname>
<base>https://en.wikipedia.org/wiki/Main_Page</base>
<generator>MediaWiki 1.29.0-wmf.12</generator>
<case>first-letter</case>
<namespaces>
...
</namespaces> …Run Code Online (Sandbox Code Playgroud) 我正在为 Pandas Dataframe 编写一个自定义访问器类 - 我遵循此处的示例并取得了积极的结果。但是我有一个函数想传递额外的参数。
我在我的访问器类中创建了这个函数:
@property
def accessor_function(self, time_window=0.5):
def group_function(df, time):
fl = df.loc[df.Type_num==0]
id = fl.Time.idxmin()
threshold = df.loc[id, 'column'] + time
return fl.loc[fl.Time<threshold]
self.Subset = self._obj.groupby(by['col_1','col_2']).apply(group_function, time_window)
self.Subset.reset_index(drop=True, inplace=True)
return self.Subset
Run Code Online (Sandbox Code Playgroud)
如果我这样称呼它,它可以使用time_window=0.5:
df.accessor.accessor_function
Run Code Online (Sandbox Code Playgroud)
但是,如果我想为关键字参数传递不同的值:
df.accessor.accessor_function(time_window = 1)
Run Code Online (Sandbox Code Playgroud)
我收到错误:
TypeError: 'DataFrame' object is not callable
Run Code Online (Sandbox Code Playgroud)
我找不到任何解释传递args或kwargs自定义访问器的明显文档。所以我不确定我正在尝试的是否可能。但了解如何前进会很好。
本