Для Chrome и Firefox я использую только метод JavaScript.
(Мое приложение не может использовать пакет, такой как Blob.js
, потому что он обслуживается специальным движком: DSP с
function FileSave(sourceText, fileIdentity) {
var workElement = document.createElement("a");
if ('download' in workElement) {
workElement.href = "data:" + 'text/plain' + "charset=utf-8," + escape(sourceText);
workElement.setAttribute("download", fileIdentity);
document.body.appendChild(workElement);
var eventMouse = document.createEvent("MouseEvents");
eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
workElement.dispatchEvent(eventMouse);
document.body.removeChild(workElement);
} else throw 'File saving not supported for this browser';
}
Примечания, оговорки и ласковые слова:
sourceText
больше, чем MB, Chrome иногда (только иногда) застревает в его собственная загрузка без указания отказа; До сих пор Firefox не демонстрировал такого поведения. Причиной может быть некоторое ограничение blob в Chrome. Честно говоря, я просто не знаю; если у кого-нибудь есть идеи по исправлению (или, по крайней мере, обнаружению), отправьте сообщение. Если возникает аномалия загрузки, когда браузер Chrome закрыт, он генерирует диагностику, такую как Хотя понимание списка является полностью верным ответом, поскольку вы просто меняете тип, возможно, стоит рассмотреть альтернативу встроенный map()
встроенный :
>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]
Встроенный модуль map()
просто применяет вызываемый к каждому элементу заданного итерабельного. Это делает его полезным для этой конкретной задачи. В общем, понимание списков более читабельно и эффективно (что-то сложное с map()
вам нужно lambda
), но там, где вы хотите просто изменить тип, map()
может быть очень ясным и быстрым.
Обратите внимание, что я использую 2.x здесь, поэтому мы получаем список. В 3.x вы получите итерируемый (который ленив), если вам нужен список в 3.x, просто сделайте list(map(...))
. Если вы в порядке с итерируемым для ваших целей, itertools.imap()
предоставляет ленивый map()
в 2.x.