我正在使用 Django,需要读取上传的 xlsx 文件的工作表和单元格。使用 xlrd 应该是可能的,但是因为文件必须保留在内存中并且可能无法保存到某个位置,所以我不确定如何继续。
在这种情况下,起点是一个带有上传输入和提交按钮的网页。提交后,文件被捕获request.FILES['xlsx_file'].file并发送到处理类,该处理类必须提取所有重要数据以进行进一步处理。
的类型request.FILES['xlsx_file'].file是 BytesIO 并且 xlrd 由于没有 getitem 方法而无法读取该类型。
将 BytesIO 转换为 StringIO 后,错误消息似乎保持不变 '_io.StringIO' object has no attribute '__getitem__'
file_enc = chardet.detect(xlsx_file.read(8))['encoding']
xlsx_file.seek(0)
sio = io.StringIO(xlsx_file.read().decode(encoding=file_enc, errors='replace'))
workbook = xlrd.open_workbook(file_contents=sio)
Run Code Online (Sandbox Code Playgroud) 我有一个简单的花车阵列.我需要将其显示为逗号分隔的字符串.
{{ arr|join(', ') }}
Run Code Online (Sandbox Code Playgroud)
因为精度过高而不好解决.
{% for val in arr %}
{{val|number_format(2)}},
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
因为最后额外的逗号是坏事.
我想做这样的事情:
{{ arr|map(number_format(3))|join(', ') }}
Run Code Online (Sandbox Code Playgroud)
但我没有找到过滤器map或类似的过滤器Twig.Аnd我不知道如何实现这样的过滤器.
我正在尝试为具有引用文档中较高位置的依赖项的文档创建模式.例如:
document = {
'packages': {
'some-package': {'version': 1}
},
'build-steps': {
'needs-some-package': {'foo': 'bar'},
'other-thing': {'funky': 'stuff'}
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里苦苦挣扎的是强制build-steps.needs-some-package和packages.some-package之间的依赖关系.每当构建步骤包含"needs-some-package"时,包必须包含"some-package".
当"need-some-package"不存在时,不需要"some-package".所以这份文件也应该验证.
other_document = {
'packages': {
'other-package': {'version': 1}
},
'build-steps': {
'other-thing': {'funky': 'stuff'}
}
}
Run Code Online (Sandbox Code Playgroud)
具有依赖关系的模式似乎是合适的位置
schema = {
'packages': {
'type': 'dict',
'valueschema': {
'type': 'dict'
}
},
'build-steps': {
'type': 'dict',
'schema': {
'needs-some-package': {
'type': 'dict',
'dependencies': 'packages.some-package'
},
'other-thing': {
'type': 'dict'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为似乎Cerberus正在"构建步骤"下的子文档中寻找"包".有没有办法上升文档树?或者引用一些关于文档根目录的内容?
我有一个 Azure 逻辑应用程序,每小时从网站获取一个文件并在 OneDrive 中创建一个文件。由于该文件没有动态名称,因此每次都会被替换。有没有办法将当前日期时间放在文件名中?
谢谢你,大卫
如何格式化我的json数据和/或更改我的功能,以便将其存储为Azure表存储中的列?
我正在向IoT中心发送一个json字符串:
{"ts":"2017-03-31T02:14:36.426Z","timeToConnect":"78","batLevel":"83.52","vbat":"3.94"}
Run Code Online (Sandbox Code Playgroud)
我运行示例函数(在Azure Function App模块中)将数据从IoT中心传输到我的存储帐户:
'use strict';
// This function is triggered each time a message is revieved in the IoTHub.
// The message payload is persisted in an Azure Storage Table
var moment = require('moment');
module.exports = function (context, iotHubMessage) {
context.log('Message received: ' + JSON.stringify(iotHubMessage));
context.bindings.deviceData = {
"partitionKey": moment.utc().format('YYYYMMDD'),
"rowKey": moment.utc().format('hhmmss') + process.hrtime()[1] + '',
"message": JSON.stringify(iotHubMessage)
};
context.done();
};
Run Code Online (Sandbox Code Playgroud)
但是在我的存储表中,它显示为单个字符串而不是分成列(如存储资源管理器中所示).
如何将其插入ts,timeToConnect,batLevel和vbat的列中?
当我在Azure数据库中为Mysql创建引擎是MyISAM的表时,出现错误"ERROR 1030(HY000):从存储引擎获得错误1"
我如何解决它?或者我可以在Azure数据库中使用MySQL的MyISAM表吗?

什么是Azure Lease Blob?它只是一种为blob存储提供独占锁定的机制吗?这有什么特别之处?我在哪里可以使用它?我试图阅读Azure文档,但我还不清楚.
是否有Python字典方法或简单表达式返回字典中存在的第一个键(来自可能键列表)的值?
假设我有一个包含许多键值对的Python字典.任何特定密钥的存在都不能保证.
d = {'A':1, 'B':2, 'D':4}
Run Code Online (Sandbox Code Playgroud)
如果我想获取给定键的值,并返回一些其他默认值(例如None)如果该键不存在,我只需:
my_value = d.get('C', None) # Returns None
Run Code Online (Sandbox Code Playgroud)
但是如果我想在默认为最终默认值之前检查一些可能的键呢?一种方法是:
my_value = d.get('C', d.get('E', d.get('B', None))) # Returns 2
Run Code Online (Sandbox Code Playgroud)
但随着备用键数量的增加,这会变得相当复杂.
是否存在针对此方案的Python函数?我想象的是:
d.get_from_first_key_that_exists(('C', 'E', 'B'), None) # Should return 2
Run Code Online (Sandbox Code Playgroud)
如果不存在这样的方法,是否有一个在这种情况下常用的简单表达式?
我刚刚读了一堆关于如何处理 Python 中的 StopIteration 错误的帖子,我在解决我的特定示例时遇到了麻烦。我只想用我的代码打印出 1 到 20,但它打印出错误 StopIteration。我的代码是:(我是这里的新手,所以请不要阻止我。)
def simpleGeneratorFun(n):
while n<20:
yield (n)
n=n+1
# return [1,2,3]
x = simpleGeneratorFun(1)
while x.__next__() <20:
print(x.__next__())
if x.__next__()==10:
break
Run Code Online (Sandbox Code Playgroud) 我正在创建一个 ML 模型,它将使用 JSON 文件来理解模式和响应格式。由于我的数据为 excel 格式,因此我在 python 中将其转换为 JSON。
这是代码:
import xlrd
from collections import OrderedDict
import simplejson as json
# Open the workbook and select the first worksheet
wb = xlrd.open_workbook('D:\\android\\testdata2.xlsx')
sh = wb.sheet_by_index(0)
# List to hold dictionaries
data_list = []
# Iterate through each row in worksheet and fetch values into dict
for rownum in range(1, sh.nrows):
data = OrderedDict()
row_values = sh.row_values(rownum)
data['pattern'] = row_values[0]
data['response'] = row_values[1]
data_list.append(data)
# Serialize the list of dicts …Run Code Online (Sandbox Code Playgroud) python ×5
azure ×3
json ×2
break ×1
bytesio ×1
cerberus ×1
dictionary ×1
etl ×1
excel ×1
generator ×1
innodb ×1
locking ×1
lookup ×1
mysql ×1
twig ×1
twig-filter ×1
validation ×1
while-loop ×1
workflow-definition-language ×1
xlrd ×1