Ankündigung

Einklappen
Keine Ankündigung bisher.

2 Dateien zeilenweise auslesen und nebeneinander in neue Datei schreiben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 2 Dateien zeilenweise auslesen und nebeneinander in neue Datei schreiben

    Hallo Leute,

    ich möchte 2 Dateien zeilenweise auslesen und die Zeilen beider Dateien nebeneinander in eine neue Datei schreiben. Das sollte also so aussehen:

    (Datei 1 - lesen):
    Zeile 1-Datei1
    Zeile 2-Datei1
    Zeile 3-Datei1

    (Datei 2 - lesen):
    Zeile 1-Datei2
    Zeile 2-Datei2
    Zeile 3-Datei2

    (Datei 3 - neu schreiben):
    Zeile 1-Datei1 - Zeile 1-Datei2
    Zeile 2-Datei1 - Zeile 2-Datei2
    Zeile 3-Datei1 - Zeile 3-Datei2

    Leider bekomme ich das nicht hin. Ich habe mehrfach danach gegoogelt, aber mit der Fragestellung dazu erhalte ich keine Lösung dafür.

    Könnte mir bitte jemand dabei mit dem Code helfen?

    Tausend Dank im voraus!!!
    Fluppi

  • #2
    Fang zumindest schonmal mit irgendwas an. Aus dem nichts schreibt dir hier keiner Code.
    [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

    Kommentar


    • #3
      Ich habe mehrfach danach gegoogelt
      nach was?
      woran haperts?
      wieso ist das fortgerschritten?

      Kommentar


      • #4
        Bisher habe ich nur das nachfolgende. Was mir fehlt ist das zeilenweise Auslesen beider Dateien und Schreiben in die neue Datei (dort nebeneinander) Also die einzelnen Zeilen (von "datei-1" und "datei-2"). sollen (könnten) mit...

        $zeilen = $_REQUEST["datei-1"].$abstand.$_POST["datei-2"].$break."\n" ;

        ...nebeneinander gesetzt werden.

        Was mir fehlt ist die Funktionalität zum zeilenweise Auslesen aus beiden Dateien und danach das Schreiben in die neue Datei. Im Stile von
        Zeile 1-Datei1 - Zeile 1-Datei2
        Zeile 2-Datei1 - Zeile 2-Datei2
        Zeile 3-Datei1 - Zeile 3-Datei2


        Der vorhandene Code:

        $abstand = " - ";
        $break = "<br>";
        $datei = "neueDatei.txt";

        $zeilen = $_REQUEST["datei-1"].$abstand.$_POST["datei-2"].$break."\n" ;

        if ($fp = fopen($datei,"a")) {
        fputs ($fp,$zeilen);
        fclose ($fp);

        echo '(HTML)
        include('neueDatei.txt');
        (HTML)'
        }
        else {
        echo "(Fehlermeldung)";
        }

        Kommentar


        • #5
          Du willst mir weiß machen, du hast bei Google nichts zu

          "PHP read file line by line"

          gefunden? Verarschen kann ich mich alleine.
          [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

          Kommentar


          • #6
            Zitat von ApoY2k Beitrag anzeigen
            Du willst mir weiß machen, du hast bei Google nichts zu

            "PHP read file line by line"

            gefunden? Verarschen kann ich mich alleine.
            Die Problematik für mich ist folgende Abfolge:

            - Schreibe Zeile 1 von Datei 1 (in die neue Datei).
            - Schreibe daneben Zeile 1 von Datei 2 (in die neue Datei).
            - Fange eine neue Zeile an und...
            - Schreibe Zeile 2 von Datei 1 (in die neue Datei).
            - Schreibe daneben Zeile 2 von Datei 2 (in die neue Datei).
            (u.s.w.)

            Da blicke ich einfach nicht durch wie man das realisiert.

            Kommentar


            • #7
              file(), foreach(), fwrite()

              Schreibs dir doch mal in Pseudocode (Sprachlich) auf, dann isses nicht so schwer das in Code zu biegen. Schreib es einfach mal wörtlich auf, was du machen willst.
              [URL="http://goo.gl/6Biyf"]Lerne Grundlagen[/URL] | [URL="http://sscce.org/"]Schreibe gute Beispiele[/URL] | [URL="http://goo.gl/f2jR7"]PDO > mysqli > mysql[/URL] | [URL="http://goo.gl/jvfSZ"]Versuch nicht, das Rad neu zu erfinden[/URL] | [URL="http://goo.gl/T2PU5"]Warum $foo[bar] böse ist[/URL] | [URL="http://goo.gl/rrfzO"]SQL Injections[/URL] | [URL="http://goo.gl/Q81WJ"]Hashes sind keine Verschlüsselungen![/URL] | [URL="http://goo.gl/2x0e2"]Dein E-Mail Regex ist falsch[/URL]

              Kommentar


              • #8
                Hallo ApoY2k. Danke für deinen Hinweis. So wäre es sicherlich einfacher.

                Da ich jedoch PHP-Anfänger bin kann ich das besser auf diese Art ausdrücken (ist hoffentlich o.k. so):

                - 1. Datei: Lese und Schreibe (eine Zeile) in die neue Datei.
                - 1. Datei: Mache dann eine Pause.
                - 2. Datei: Lese und Schreibe (eine Zeile) in die neue Datei - rechts daneben.
                - 2. Datei: Mache dann eine Pause.
                - Beginne eine neue Zeile.
                - 1. Datei: Lese und Schreibe (eine Zeile) in die neue Datei.
                (u.s.w.)

                Vielleicht so (Sorry, ich kanns noch nicht besser)?:

                file(datei1) foreach(Zeile) fwrite(Inhalt) read(stop)
                file(datei2) foreach(Zeile) fwrite(daneben: Inhalt) read(stop)
                (neue Zeile beginnen)
                file(datei1) foreach(nächste Zeile) fwrite(Inhalt) read(stop)
                file(datei2) foreach(nächste Zeile) fwrite(daneben: Inhalt) read(stop)
                (u.s.w.)

                Für mich, als Anfänger, bringt mich das eigentlich auch nicht weiter. Mit fehlt halt (z.B.) das Stoppen nach einer Zeile (jeweils nach dem Einlesen und nach dem Schreiben), das Beginnen der neuen Zeile in der neuen Datei nach dem Lesen und Schreiben einer Zeile aus der zweiten Datei.

                Kommentar


                • #9
                  eher

                  PHP-Code:
                  <?php

                      $file1 
                  file'foo.txt' ); // Datei 1 zeilenweise
                      
                  $file2 file'bar.txt' ); // Datei 2 zeilenweise
                      
                      
                  foreach( $file1 as $r => $row1 ){ // jede Zeile von Datei 1
                      
                          
                  $rows[] = $file1$r ] . $file2$r ]; // Zeile x von Datei 1 und Zeile x von Datei 2 in eine Zeile zusammen
                      
                      
                  }
                      
                      echo 
                  '<pre>'print_r$rows ), '</pre>';
                  da fehlt dann sicher noch trim(), je nachdem wie du es haben willst. Und am Ende per implode() zusammenführen und mit file_put_contents() in eine Datei schreiben. Aber probier erstmal selber wie weit du kommst.
                  [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                  Kommentar


                  • #10
                    Hallo chorn!

                    Hey, vielen Dank an dich!!! Das bringt mich definitiv um einiges (!) weiter.

                    Ich werde mir das (morgen - eher komme ich wahrscheinlich nicht mehr dazu) genauer anschauen, und dann auch -wie Du es geschrieben hast- mit
                    PHP-Code:
                    trim() 
                    ,
                    PHP-Code:
                    implode() 
                    und
                    PHP-Code:
                    file_put_contents() 
                    weiter verarbeiten.

                    Gruß,
                    Fluppi

                    Nochmals Danke!

                    Kommentar


                    • #11
                      check doch nochmal, welches die längere datei ist und lauf da dann durch:
                      PHP-Code:
                      <?php
                      $file 
                      file("foo.txt");
                      echo 
                      count($file);
                      ?>
                      oder so

                      Kommentar


                      • #12
                        Zitat von Fluppi Beitrag anzeigen

                        Da ich jedoch PHP-Anfänger bin kann ich das besser auf diese Art ausdrücken (ist hoffentlich o.k. so):
                        Dann frage ich mich allen ernstes warum du hier ins Fortgeschrittenen rein schreibst. Keine Zeit gehabt zu lesen wer hier rein schreiben darf und sollte?

                        PHP-Code:
                        $file1 file('datei1.txt');
                        $file2 file('datei2.txt');

                        $result array_combine($file1$file2); 
                        Was die Funktionen [MAN]file[/MAN] und [MAN]array_combine[/MAN] machen darfst du noch nachlesen bitte.

                        Gruß Litter
                        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                        [URL]http://www.lit-web.de[/URL]

                        Kommentar


                        • #13
                          Litterauspirna: ist das die richtige Funktion? Array_combine ungleich concat all values of same key in new array, sondern use one array as key-array, the other as val-array...

                          Kommentar


                          • #14
                            Zitat von litterauspirna Beitrag anzeigen
                            Dann frage ich mich allen ernstes warum du hier ins Fortgeschrittenen rein schreibst. Keine Zeit gehabt zu lesen wer hier rein schreiben darf und sollte?

                            PHP-Code:
                            $file1 file('datei1.txt');
                            $file2 file('datei2.txt');

                            $result array_combine($file1$file2); 
                            Was die Funktionen [man]file[/man] und [man]array_combine[/man] machen darfst du noch nachlesen bitte.

                            Gruß Litter
                            Unabhängig davon dass ich noch Anfänger bin hielt ich die Problematik für ein Fortgeschrittenen-Thema. Deshalb habe ich es hier gepostet.

                            Ja, ich werde mich auch in diese Funktionen einlesen.

                            Fluppi

                            Kommentar


                            • #15
                              PHP-Code:
                              $file[0] = file("…");
                              $file[1] = file("...");
                              $fp fopen("---""w");
                              $zeile 0;
                              for (
                              $zeilen count($file[0] + $file[1]); --$zeilen$zeile++)
                                  
                              fwrite($fp, (isset($file[0][$zeile], $file[1][$zeile])?trim($file[0][$zeile]." - ".$file[1][$zeile]):trim($file[(int)isset($file[1][$zeile])][$zeile])).chr(040)); 
                              Nein, das ist ganz und gar nicht fortgeschritten. Würde das auch für ein Anfängerthema halten

                              P.s.: ich würde vor der Nutzung den Code leserlicher gestalten für die Weiterverwendung

                              Kommentar

                              Lädt...
                              X