Schrift
[thread]4650[/thread]

Textdatei einlesen, ändern, neue erstellen: open (DATEI, "text.txt") (Seite 3)

Leser: 18


<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten
format_c
 2003-11-13 17:50
#43502 #43502
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich habe nicht daran gezweifelt, da ich weis wie es sich mit dem -w und dem use warnings verhält.

Vielleicht hab ich etwas plump geschrieben aber eigentliche wollte ich nur havi's sichere Behauptung für ihn selbst zum bröckeln zu bringen.

Wenn man mein posting nochmal genau liest (und vielleicht noch etwas hinein interpretiert) solltest du merken, dass ich auf den Beweis, den du jetzt hier ausführlich dargelegt hast, anspielen wollte.

Gruß Alex
Crian
 2003-11-13 18:48
#43503 #43503
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Schon klar, wegen dem "wäre" hab ich Euch beide angesprochen ... ich nehms also zurück und rede nur Havi an ;-)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
havi
 2003-11-14 07:15
#43504 #43504
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
OK - jetzt hab es auch ich verstanden!

Gruss
Crian
 2003-11-14 14:08
#43505 #43505
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Gut... ich hoffe, wir haben "Barbara" nicht verschreckt mit der Diskussion in ihrem Thread, aber dieser Punkt musste wohl mal geklärt werden.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Relais
 2003-11-14 14:49
#43506 #43506
User since
2003-08-06
2261 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die Barbara läßt sich nicht so leicht verschrecken. Nur hat sie mit der Diskussion nun auch nichts am Hut, nicht wahr?
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop 12. bis 14. Mai 2025 in München.

Winter is Coming
Gast Saskia
 2014-12-11 19:25
#178756 #178756
Hallo zusammen,

ich versuche mich momentan an der Perl-Programmierung. Meine Aufgabe ist ebenfalls mithilfe von TK eine Text-Datei einzulesen, eine Zeilennummerierung durchzuführen und danach den nummerierten Text in eine neue Datei abzuspeichern.

Ich habe den Code dieses Threads größtenteils übernommen, jedoch bekomme ich immer wieder diese Fehlermeldung, wenn ich die Namen der Ursprungsdatei + Zieldatei eingebe:
Code: (dl )
1
2
3
4
5
6
Tk::Error: Die Datei kann nicht geoeffnet werden!
Tk callback for .frame.button
Tk::__ANON__ at C:/ActivePerl/site/lib/Tk.pm line 251
Tk::Button::butUp at C:/ActivePerl/site/lib/Tk/Button.pm line 175
<ButtonRelease-1>
(command bound to event)


Hier mein Code:
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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!"C:\ActivePerl\bin\perl.exe"

use strict;
use warnings;
use Tk;

my @text;

my $haupt = new MainWindow;

my $links = $haupt ->Frame();
$links->Label(-text => "\nBitte Dateinamen der Ursprungsdatei eingeben, Pfad beachten!: \n")->pack();
my $ursprungsdateiname = $links->Entry();
$ursprungsdateiname->pack();

$links->Label(-text => "\nBitte Dateinamen der Zielsdatei eingeben, Pfad beachten!: \n")->pack();
my $zieldateiname = $links->Entry();
$zieldateiname->pack();

my $schalter = $links->Button(-text => "Einlesen und durchnummerieren",
                              -command => [\&nummerierung]
                              )->pack();
                              
my $schalter2 = $links->Button(-text => "Beenden",
                              -command => [$haupt => 'destroy']
                              )->pack(-pady => "20");

my $rechts = $haupt ->Frame();
$rechts->Label(-text => "Ergebnis:")->pack();
my $ergebnis = $rechts->Listbox();
$ergebnis->pack();

$links ->pack (-side =>"left");
$rechts ->pack (-side => "right");
               
MainLoop();

sub nummerierung {
        
        #Array für Text aus Datei#
        my @text;       
        #Ursprungsdatei öffnen#        
        my $input = $ursprungsdateiname->get;
        open (DATEI, "<$input")
        or die "Die Datei kann nicht geoeffnet werden!\n";

        #Dateiinhalt in Array einlesen#
        while ( <DATEI> )
        {
                push @text, $_;
        }

        #Zieldatei öffnen#
        my $output = $zieldateiname->get;
        open (DATEINEU, ">$output")
        or die "Die neue Datei kann nicht geoeffnet werden!\n";

        #Textarray zeilenweise durchlaufen und Zeilennummerierungen in neue Datei schreiben#
        my $zeile =0;


        foreach ( @text ){
          print DATEINEU "$zeile $_";
          $zeile++;     
        }
        
        #Dateien schliessen#
        close (DATEI);
        close (DATEINEU);

        $ergebnis->insert('end', "Zeilennummerierung erfolgreich ausgef&uuml;hrt.");
}       


Ich bin echt am verzweifeln, weil ich mit dieser Fehlermeldung nichts anfangen kann :(

Vielen Dank schonmal für eure Hilfe!

Liebe Grüße
Saskia
Last edited: 2014-12-11 19:36:58 +0100 (CET)
Linuxer
 2014-12-11 19:41
#178757 #178757
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hi Saskia,

meinen Glückwunsch. Da hast Du ja einen mächtig alten Thread ausgegraben ;-)

Oft ist es hilfreich, auch die Systemmeldung auszugeben, wenn ein Systembefehl wie open() fehlschlägt.
Ausserdem gebe ich da oft gleich den Dateinamen mit aus, um zu sehen, ob der Fehler vielleicht im Dateinamen steckt.

z.B.:
Code (perl): (dl )
1
2
3
4
5
my $file = 'dateiname.txt';

open my $handle, '<', $file or die "Konnte '$file' nicht oeffnen: $!\n";

...


Was kommt denn als Meldung, wenn Du das analog zum Beispiel machst?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
Gast Saskia
 2014-12-11 20:29
#178758 #178758
Hallo Linuxer,

ja ich habe mir gedacht wozu einen neuen Thread aufmachen, wenn es hier schon um mein Problem geht ;-)

Ich habe meinen Code entsprechend Deinem Beispiel abgeändert:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub nummerierung {
        
        #Array für Text aus Datei#
        my @text;       
        #Ursprungsdatei öffnen#        
        my $input = $ursprungsdateiname->get;
        open (DATEI, '<', $input)
        or die "Die Datei '$input' kann nicht geoeffnet werden!\n";

....


und was soll ich sagen... es funktioniert! Keine Fehlermeldung mehr!
Ich habe etwas bei der Codezeile zum Öffnen der Ursprungsdatei verkehrt gemacht.
Ich danke Dir vielmals!!

Es ist immer faszinierend was ein paar Zeichen bewirken können.

Vielen vielen Dank und schönen Abend noch :-)
Liebe Grüße
Saskia
Last edited: 2014-12-11 20:38:20 +0100 (CET)
bianca
 2014-12-12 10:02
#178759 #178759
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Guest Saskia
ja ich habe mir gedacht wozu einen neuen Thread aufmachen, wenn es hier schon um mein Problem geht ;-)

Nicht schön, weil das noch ein Thread nach altem Design mit Ärgernissen ist. Konntest du aber vermutlich nicht wissen.
10 print "Hallo"
20 goto 10
Raubtier
 2014-12-12 10:22
#178760 #178760
User since
2012-05-04
1081 Artikel
BenutzerIn
[default_avatar]
Linuxer hat auch darauf hingewiesen, dass es nützlich ist, den Grund mit auszugeben, wenn etwas fehlschlägt. Dieser steht in der Variable $!, die von Linuxer daher auch in der Fehlermeldung drin war. Würde ich dir auch empfehlen.

Also z.B.
Code (perl): (dl )
1
2
open ...
or die "Die Datei '$input' kann nicht geoeffnet werden!\nDer Grund ist: $!\n";
<< |< 1 2 3 4 >| >> 31 Einträge, 4 Seiten



View all threads created 2003-09-16 00:10.