Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Behnel Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Concatenierte Dateien? Date: Fri, 8 Sep 2017 07:38:59 +0200 Lines: 42 Message-ID: References: <87mv66sea9.fsf@gmx.net> <5c49da01-07c7-58aa-afe0-90d4549df7a2@behnel.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de ftG5SSd7aYFubLoF41d3XQS42f831f3KPvQV0XwIvTcg== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1504849326; s=domk; d=behnel.de; h=Content-Transfer-Encoding:Content-Language:Content-Type:In-Reply-To: MIME-Version:Date:From:References:To:Subject; bh=6iplNCMDNzuCjm4jOrzTqRvmTXkTFVQe/fnocOCu+QY=; b=eWbt6jZwyn+7JUI+oxshyU8/oEC5LJbfZV3oMc0mwYmbdyPyaphCpVmw3R9xwB+jw4 pueUL4wcXhaDq49hA0bKJd+wRoXpvcglME2mXT7NBQBYfgvx9yKEEVClLQ47qoZ//4FB +sl2sfwNvXUECgLOr1fLkDenKTQIVAkOAKUIw= X-RZG-AUTH: :E1MMdFW4b++AXZOTwA41DOYM0Dv9LNWvavC/fJZqSuoXq8/b35jbpozFABqPas32JtV1DqB2c6dzMEH5xU0GLckio41rC1GsyfQ7vlA= X-RZG-CLASS-ID: mo00 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 In-Reply-To: <87mv66sea9.fsf@gmx.net> Content-Language: de-DE X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.24 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: <5c49da01-07c7-58aa-afe0-90d4549df7a2@behnel.de> X-Mailman-Original-References: <87mv66sea9.fsf@gmx.net> Xref: csiph.com de.comp.lang.python:4905 Hallo Ole! Оlе Ѕtrеісhеr schrieb am 07.09.2017 um 17:45: > gibt es eine einfache ("batteries included") Möglichkeit, eine Liste von > file like objects als ein einziges file like object (zum Lesen) zu > behandeln? So dass für die ersten bytes das erste Object verwendet wird > etc.? > > Hintergrund: Ich habe eine Liste von "memoryview"-Objekten, (und > "String"-Objekten), die recht groß (>>1GB) sind (und aus einem > memory-mapped file stammen), und die zusammengefügt ein "file like > object" ergeben sollen. Ist mir nicht bekannt, und "schnell mal suchen" hat irgendwie auch nichts gebracht. Nicht einmal in den ActiveState Python Rezepten, die bei solchen Dingen oft recht gut sind. Denke aber mal, dass es gar nicht so kompliziert wäre, das selbst zu schreiben. Gibt die üblichen Sonderfälle zu beachten an den Dateiübergängen, aber da .read() es erlaubt, weniger Daten zurückzuliefern als angefragt, sollte auch das nicht allzu komplizert sein. Klingt für mich nach einem interessanten "Freude-am-Programmieren"-Projekt, das es verdient hätte, auf PyPI aufzutauchen. :) > Und wie würde man aus deinem memoryview effektiv die einzelnen Bytes > bekommen? meoryview.tobytes() erstellt ja offenbar eine Kopie, was nicht > sehr effektiv ist. Slicen. Von den Strings würde ich auch erst explizit einen Memoryview erzeugen, damit du einfach alles effizient und ohne Kopie heraus schneiden kannst. Der Standardanwendungsfall für deine Klasse wäre ja genau der Fall, dass die Datenmenge zu groß ist, um einfach alles im Speicher aneinander zu hängen. Überhaupt solltest du dir überlegen, ob ein einfaches Slicing-Interface nicht einfacher (und hübscher?) wäre als ein File-Interface. Allerdings müsstest du dann Schnittdaten mit der exakten Größe zurückgeben. Kannst ja mal beides probieren. :) Stefan