python - 如何从 2 个文件中提取数据并将其放入不同的文件中(一个文件中的一行,另一个文件中的另一行等等)?
问题描述
我必须文件说 one.txt 和 two.txt。
one.txt 具有以下数据 -
ab
cd
ef
two.txt 具有以下数据 -
gh
ij
kl
**我希望在不同的文件中像这样输出
输出.txt -
ab
gh
cd
ij
ef
kl
有人可以帮忙吗?
我曾尝试一次打开两个文件,但不知何故我无法做到这一点..
解决方案
您只需要从交替文件中读取行。
例如:
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
.
推荐阅读
- http - Indy 10 HTTPS 代理
- sql - PIVOT 多列不考虑聚合结果
- command-line - 由于权限更改导致的总线错误(核心转储)
- c# - 使用 { get; 将 .json 反序列化为 C# 放; } (牛顿软件)
- angular - 从 Angular 2 迁移到 Angular 4 后,模块“AppModule”导入错误意外值“t”。请添加@NgModule 注释
- mysql - 可以使用普通的 MySql jdbc 驱动程序写入 Mariadb。那为什么要使用单独的 MaraDB 驱动程序呢?
- c# - transform.forward 仅适用于 0,0,0 旋转,我想让它独立于旋转
- ansible - Ansible - 将字符串与变量组合以形成现有变量
- ios - 当用户稍后在 ios 11 中允许通知时使用推送通知
- selenium - 如何在 Selendroid 检查器中查看屏幕截图?