遍利所有文件并写入一个文本文件,各文件结尾用等号隔开?

zhxftj 2012-06-01 05:31:07
大家好,小弟初学,遇到个棘手问题,望高手指点,最好能给个完整的程序,让小弟学习学习。。。谢谢。。。

现有180个文本文件,希望将其全部写入一个文本文件,每个文件后加个=(等号)隔开,

例如,

file1.txt
lalalal

file2.txt
dedede

file3.txt
mememe


目标文件

lalalal
=
dedede
=
mememe
...全文
260 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhxftj 2012-06-08
  • 打赏
  • 举报
回复
最近我真晕的可以,结个分,结了20分钟


给15的是perl ,真的能用
其他8分的是很好的程序,可是小弟python 水平太低,怎么试都报错
File "<stdin>", line 1, in ?
D:\python\ ^
SyntaxError: invalid syntax

给9分的是第一个回复的,
无论我是否成功运行程序,都非常感谢大家。。谢谢
周末愉快
tim_spac_126 2012-06-05
  • 打赏
  • 举报
回复
import fileinput
import glob
import os

''' 指定目录下的*.txt内容写入target '''

stream = fileinput.FileInput(
glob.glob(os.path.join(datapath, '*.txt'))
)

lastprocess = ''
with open(target, 'wt') as handle:
for ln in stream:
if stream.isfirstline():
if lastprocess:
handle.write('=\n')
else:
lastprocess = stream.filename()
handle.write(ln)
fibbery 2012-06-04
  • 打赏
  • 举报
回复
首先,185个文件名的获取要有一定规则,比如是一个文件夹的所有文件还是具有特定文件扩展名的文件;
然后,对获得的文件循环打开读取内容,写到另一个文件。
I_NBFA 2012-06-03
  • 打赏
  • 举报
回复
use strict;
use warnings;
use IO::File;

@ARGV = qw( res.txt t1.txt t2.txt t3.txt );
my $rfile = new IO::File(shift, 'w');
$/ = undef;
print {$rfile} "$_=\n" while(<>);
zhxftj 2012-06-03
  • 打赏
  • 举报
回复
谢谢 各位大侠,两个方法我都会试,而且会给反馈意见

但先表示感谢,能在这么短时间内学出这么完整程序的,都是人才呀,
perl python,我都会用点,我的水平都是入门水平,呵呵,

先对各位表示下敬佩。。。谢谢
bugs2k 2012-06-01
  • 打赏
  • 举报
回复
zhu@ubuntu:~/perl$ cat -n file.pl
     1	#!/usr/bin/env perl
2 #
3
4 use strict;
5 use warnings;
6
7 my $target = 'all.data';
8 open my $OUT, '>', $target or die $!;
9 for my $file (@ARGV) {
10 next if $file eq $target;
11 print "$file\n";
12 open my $FD, $file or die $!;
13 for my $line (<$FD>) {
14 print $OUT $line;
15 }
16 print $OUT '=' x 80, "\n";
17 close $FD;
18 }
19 close $OUT;

zhu@ubuntu:~/perl$ ./file.pl *.pl
data.pl
dataset.pl
digit.pl
file.pl
find.pl
line.pl
split.pl
try.pl
zhu@ubuntu:~/perl$
bugs2k 2012-06-01
  • 打赏
  • 举报
回复
#!/usr/bin/env perl
#

use strict;
use warnings;

my $target = 'all.txt';
open my $OUT, '>', $target or die $!;
for my $file (<*.txt>) {
next if $file eq $target;
print "$file\n";
open my $FD, $file or die $!;
for my $line (<$FD>) {
print $OUT $line;
}
print $OUT '=' x 80, "\n";
close $FD;
}
close $OUT;
Rlay_2 2012-06-01
  • 打赏
  • 举报
回复
我自己写了点,先在我自己的目录下生成了180个文件,里面写了些内容,然后再读出来,放到另外一个文件夹下面去的


import os
import time

basepath = r'D:\Program Files\workspace\OnlyForTest\src\runEnvironment\floder'
for i in range(181):
path = os.path.join(basepath, 'file_' + str(i) + '.txt')
with open(path, 'w') as f:
f.write(time.ctime() + '\n')
f.write('filename:' + 'file_' + str(i))



destpath = r'D:\Program Files\workspace\OnlyForTest\src\runEnvironment\dest\dest.txt'
with open(destpath, 'w') as f:
filelist = os.listdir(basepath)
for filename in filelist:
path = os.path.join(basepath, filename)
with open(path, 'r') as ff:
for var in ff:
f.write(var)

f.write('\n==========================\n')
薛定谔之死猫 2012-06-01
  • 打赏
  • 举报
回复
麻雀虽小,五脏俱全啊,用循环枚举文件,读出内容,写入同一个,你没有说用什么语言实现额
zhxftj 2012-06-01
  • 打赏
  • 举报
回复
小弟的水平,仅在将5个以下的文件读入一个文件,并写出

对于185个文件,并用=隔开,感觉很没头绪。。。望高手赐教,提供完整程序,

37,741

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧