【问题标题】:How to extract data from 2 files and put it in different file (one line from one file and another line from other file and on..)?如何从 2 个文件中提取数据并将其放入不同的文件中(一个文件中的一行,另一个文件中的另一行等等)?
【发布时间】:2019-10-26 15:00:22
【问题描述】:

我要文件说 one.txt 和 two.txt。

one.txt 包含以下数据 -

ab
cd
ef

two.txt 包含以下数据 -

gh
ij
kl

**我希望在不同的文件中像这样输出

输出.txt -

ab
gh
cd
ij
ef
kl

有人可以帮忙吗?

我曾尝试一次打开两个文件,但不知何故我无法做到这一点..

【问题讨论】:

  • 根据您的描述,它应该可以工作。向我们展示您的代码以找出错误。记住:你从犯过的​​错误中学习得最好。
  • 缺少use strict; use warnings;。始终检查返回值以查看 open 是否成功。使用 3 参数 open,而不是 2 参数。

标签: python file-handling


【解决方案1】:

您只需从交替文件中读取行。

例如:

open my $fh1, '<', $file1 or die "$0: $file1: $!\n";
open my $fh2, '<', $file2 or die "$0: $file2: $!\n";

while () {
    defined(my $line1 = readline $fh1) or last;
    defined(my $line2 = readline $fh2) or last;
    print $line1, $line2;
}

您也可以在循环条件下进行读取,但它可能看起来有点奇怪:

while (
    defined(my $line1 = readline $fh1) &&
    defined(my $line2 = readline $fh2)
) {
    print $line1, $line2;
}

只要最短的文件用完行,就会停止。

如果你总是想处理所有的行,你可以使用下面的解决方案(它泛化到两个以上的文件):

my @fhs = ($fh1, $fh2);
while (@fhs) {
    my $fh = shift @fhs;
    defined(my $line = readline $fh) or next;
    push @fhs, $fh;
    print $line;
}

这将继续从@fhs 中的第一个文件句柄读取行,然后旋转数组(将第一个句柄移动到最后一个位置)。当文件句柄用完行时,它会从数组中删除。这种情况一直持续到所有句柄都用尽为止。

如果您希望它在第一个句柄用完后立即停止,请将next 更改为last

【讨论】:

    猜你喜欢
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2015-12-29
    相关资源
    最近更新 更多