Thread Einlesen mehrerer Dateien (38 answers)
Opened by Alex at 2013-04-23 11:08

String_Test
 2013-04-24 14:14
#167235 #167235
User since
2013-04-23
19 Artikel
BenutzerIn
[default_avatar]
Ich habe mich mal an deinem Minimalbeispiel bedient :) Vielen Dank für dieses!
Mein Programm an sich tut das, was es machen soll, aber es liest leider nur Dateien aus einem Verzeichnis ein. Jetzt alle 1.000.000 Dateien (okay so viele sind es nicht ganz ;) ) einzeln rauszusuchen und in einen Ordner zusammenzuführen wäre eher kontraproduktiv.

Kann mir einer dabei helfen den oberen Teil meines Codes so zu verändern, dass auch Dateien aus verschiedenen Unterverzeichnissen eines Hauptordners in das Array eingelesen werden können?

Relevant für diese Änderung wären hier wohl nur die Zeilen bis 13 oder?

Hier noch 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
#!/usr/bin/perl 

#use strict;
#use warnings;

my $sourceDir = '../Perl/Test';
my $outFile = "out.ffn";
my $i = 0;


opendir(my $sourceDH, $sourceDir) or die $!;
my @allfiles = grep /\.ffn$/, sort readdir($sourceDH);
closedir $sourceDH;


open my $outFH, ">>", $outFile or die $!;

for my $sourceFile (@allfiles) {
    
   
    open my $sourceFH, "<", $sourceDir . '/' . $sourceFile or die $!;
        
    $NameReadIn = <$sourceFH>; 
    
        close $sourceFH;

# Get organism name 

chop($NameReadIn);
$NameReadIn =~s/(>)/_/g;
$NameReadIn =~s/(\[)/>/g;

        $positionName=index($NameReadIn,">");
        $ZeichenName = substr($NameReadIn,$positionName,);
        chop($Name);

if ( -z "$outFH" ) 
        {
         print $outFH "$Name\n";
        }

else    {
        print $outFH "\n$Name\n";
        }

# Get sequences:

    open my $sourceFH, "<", $sourceDir . '/' . $sourceFile or die $!;
        
        @DNAReadIn  = <$sourceFH>;              

        close $sourceFH;

$DNAString=join("",@DNAReadIn);
$DNAString =~s/(\]\n)/,/g;


while ($DNAString =~ m{,\w{3}(\w{24})}g)
 
        {
        print $outFH "$1";
        }

$i++;

}

close $outFH;

print "Done! $i files have been processed!\n";

View full thread Einlesen mehrerer Dateien