Schrift
[thread]11365[/thread]

welcher Weg um gzip-Dateien zu lesen ...



<< >> 10 Einträge, 1 Seite
tecker
 2008-02-26 17:51
#106367 #106367
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
... mit Perl Modulen wie Compress::Zlib

oder über
Code: (dl )
 `/bin/gzip -cd datei.gz > datei`;
und diese dann weiter bearbeiten und ggf. wieder löschen.

Hatte mich für letzteres entschieden, weil ich kein extra Modul verwenden wollte. Oder würde man da erhebliche Zeit einsparen?

Ich muss in einem Script bis 60 *.gzip Dateien á 40MB auswerten.


Viele Grüße
nepos
 2008-02-26 19:01
#106369 #106369
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, ohne Extra-Module kannst du das ganze aber auch per Pipe verarbeiten. Dann sparst du dir die temporäre Datei.
renee
 2008-02-26 20:25
#106373 #106373
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn es auch auf anderen Plattformen/Rechnern laufen soll, würde ich auf Module zurückgreifen.

Wie die Performance aussieht weiß ich nicht. Das müsstest Du einfach mal austesten.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
topeg
 2008-02-26 21:19
#106378 #106378
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Über die zlib (Compress::Zlib oder IO::Compress::Gzip) ist es allein deshalb schon schneller, als das man keine temporäre Datei anlegt. (wobei man auch über eine Pipe arbeiten könnte "open($fhz,"/bin/gzip -cd $datei |")")

Der Zugriff über die zlib ist meiner Meinung nach besser, durch die umfangreicheren Kontrollmöglichkeiten. Fehler können besser abgefangen, Einstellungen überprüft und die Dekompression kann jederzeit unterbrochen/gestoppt werden.
tecker
 2008-02-27 11:12
#106414 #106414
User since
2008-02-26
77 Artikel
BenutzerIn
[Homepage] [default_avatar]
Stimmt. Warum hab ich es mit einer Pipe noch nicht versucht :)

Macht echt einiges aus. Jetzt brauch ich für die Auswertung von 10 *.gz Files nur noch 90s statt vorher ca. 150s ... anfangs noch 'out of memory' bis hin zu 10min für 10 Dateien.

Über ein Modul hab ich es bisher nicht versucht. Hab keine Adminrechte auf dem Server und das Skript soll auch nur auf diesem laufen, daher lass ich das dann.

Grüße
pq
 2008-02-27 12:01
#106419 #106419
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
man braucht keine adminrechte, um module zu installieren.
vielleicht sollte ich mir das in die .sig schreiben...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
#Kein Kommentar
 2008-02-28 17:46
#106470 #106470
User since
2007-06-09
575 Artikel
HausmeisterIn
[default_avatar]
pq+2008-02-27 11:01:39--
man braucht keine adminrechte, um module zu installieren.
vielleicht sollte ich mir das in die .sig schreiben...


oder in die FAQ ;)
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
pq
 2008-02-28 20:36
#106479 #106479
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
#Kein Kommentar+2008-02-28 16:46:32--
oder in die FAQ ;)

da stehts ja: Wiki:ModuleWieInstalliereIchEinModul
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
sid burn
 2008-02-28 23:57
#106482 #106482
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Ich finde PerlIO::gzip echt Klasse.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl
# Core Module
use strict;
use warnings;
use utf8;
use open ':utf8';
use open ':std';
use Fatal qw(open close);
use English '-no-match-vars';
# CPAN Module
#use Smart::Comments;
use PerlIO::gzip;

my $filename = 'textfile.txt.gz';

eval {
    open my $file, '<:gzip', $filename;
    while ( my $line = <$file> ) {
        print $line;
    }
    close $file;
};
die $EVAL_ERROR if $EVAL_ERROR;
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
betterworld
 2008-02-29 19:09
#106516 #106516
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
sid burn+2008-02-28 22:57:09--
Code (perl): (dl )
    open my $file, '<:gzip', $filename;

Das sieht echt cool aus. Was dieses PerlIO nicht alles kann...
<< >> 10 Einträge, 1 Seite



View all threads created 2008-02-26 17:51.