简单拆分文本脚本


简单拆分文本脚本
 
今天被老师喊过来帮个小忙,有个文件太大了,把它分了。
 
在这里留个备份吧。
 
01
#!/usr/bin/perl -w
02
use strict;
03
use warnings;
04
# 拆分文本文件
05
# 可以建个文件夹
06
# 目前是 csv
07
 
08
my $csv = 'xxx.csv';
09
print "File read from is '$csv'.\n";
10
my $in_fh = read_text($csv);
11
 
12
# 文件数目
13
my $num_of_files = 15;
14
 
15
# 行数
16
my $total_lines = 12465682;        # 总行数
17
# 各文本大致行数
18
my $lines = int($total_lines / $num_of_files);
19
 
20
my $count = 0;
21
my $n = 1;
22
my $out_file = "xxx_$n.csv";
23
print "Create $out_file ...\n";
24
my $w_fh = write_text($out_file);
25
 
26
while (<$in_fh>) {
27
    if ($n < $num_of_files and $count == $lines) {
28
        $n++;
29
        $count = 0;
30
        close $w_fh;
31
        $out_file = "xxx_$n.csv";
32
        print "Create $out_file ...\n";
33
        $w_fh = write_text($out_file);
34
    }
35
    print $w_fh $_;
36
    $count++;
37
}
38
close $w_fh;
39
close $in_fh;
40
 
41
print "Done!\n";
42
exit;
43
 
44
#====================================================
45
# subroutions
46
 
47
# 读取文本文件
48
sub read_text {
49
    my $filename = shift;
50
    my $fh;
51
    open $fh, '<', $filename or die "Cannot open file '$filename': $!";
52
    return $fh;
53
}
54
 
55
# 写文本文件
56
sub write_text {
57
    my $filename = shift;
58
    my $fh;
59
    open $fh, '>', $filename or die "Cannot open file '$filename': $!";
60
    return $fh;
61
}
 

相关内容

    暂无相关文章