Python 如何创建1000个可用于测试脚本的文件?

Python 如何创建1000个可用于测试脚本的文件?,python,perl,shell,scripting,Python,Perl,Shell,Scripting,我想用一些文本创建1000多个文本文件来测试脚本,如何使用shell脚本或Perl一次性创建这么多文本文件。任何人都可以帮助我。我不知道用shell或perl,但用python会是: #!/usr/bin/python for i in xrange(1000): with open('file%0.3d' %i,'w') as fd: fd.write('some text') 我认为它的作用相当简单 #!/bin/bash seq 1 1000 | split -

我想用一些文本创建1000多个文本文件来测试脚本,如何使用shell脚本或Perl一次性创建这么多文本文件。任何人都可以帮助我。

我不知道用shell或perl,但用python会是:

#!/usr/bin/python

for i in xrange(1000):
    with open('file%0.3d' %i,'w') as fd:
        fd.write('some text')
我认为它的作用相当简单

#!/bin/bash
seq 1 1000 | split -l 1 -a 3 -d - file
上面将创建1000个文件,每个文件的编号从1到1000。这些文件将命名为file000。。。文件999

for i in {0001..1000}
do
  echo "some text" > "file_${i}.txt"
done
或者如果您想使用Python
#/bin/bash
对于suf,单位为美元(seq-w 1000)
做
cat myfile.$suf
这是我的文本文件
有很多人喜欢它
但是这个是我的。
EOF
完成

您可以只使用Bash而不使用外部名称,并且仍然能够填充数字,以便文件名正确排序(如果需要):

这两个版本都会生成类似“file0001”和“file1000”的文件名

use strict;
use warnings;

for my $i (1..1000) {
   open(my $out,">",sprintf("file%04d",$i));
   print $out "some text\n";
   close $out;
}
为什么是前两行?因为它们是很好的实践,所以我甚至在像这样的单镜头程序中使用它们

问候,, 提供

多样性:

#!/usr/bin/perl

use strict; use warnings;
use File::Slurp;

write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;

下面是一个简短的命令行Perl程序

perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'

只需获取任何超过1000字节的大文件(对于包含内容的1000个文件)。你的电脑上有很多。然后做(例如):

这是即时快速

或更大的文件:

split -n 10000 /usr/bin/cat
创建10000个文件只需0.253秒

对于100k文件:

split -n 100000 /usr/bin/gcc
只有1.974秒的100k文件,每个文件大约有5个字节

如果您只需要包含文本的文件,请查看/etc目录。使用几乎随机的文本创建一百万个文本文件:


对于1M文件,每个文件大约有2个字节,为20.203秒。如果只将这个大文件分成10k部分,只需0.220秒,每个文件有256字节的文本。

我尝试了您的脚本,但遇到了一个错误:./crea.py:4:警告:“with”将成为Python 2.6文件中的保留关键字。“/crea.py”,第4行带有open('file%0.3d'%I',w')as fd:^SyntaxError:future import with_statement的语法无效,该语法将是来自uu future_uuuImport with_statement的
(系统在ghostdog74的注释中使用下划线)。Bash版本中的文件名将为10到1000999。我想你的意思是
echo“some text”>file$file
第一个选项需要Bash 4使用填充。在早期版本中,可以指定前导零,但它们不会出现在结果中。。。。或者你可以使用autodie可以创建一个文本文件吗?你能设计一个生成文件名的方案吗,例如file0001,file002?你能写一个for循环来完成这两个任务吗。你什么时候会被卡住?唯一的诡辩是“文件不会是文本文件”。我有一个古老版本的GNU
split
,它不识别
-n
;它的BSD(Mac OS X)版本也无法识别它。我只需要升级我的CoreUtils安装。好的,没错。如果您想要一百万个小文本文件,只需使用一个大文本文件作为输入。你的计算机上有足够的内存。例如/etc/gconf/schemas/gnome-terminal.schemas,如果您想要一个非常大的,它有2.6MB。
#!/usr/bin/perl

use strict; use warnings;
use File::Slurp;

write_file $_, "$_\n" for map sprintf('file%04d.txt', $_), 1 .. 1000;
perl -E'say $_ $_ for grep {open $_, ">f$_"} 1..1000'
split -n 1000 /usr/bin/firefox
split -n 10000 /usr/bin/cat
split -n 100000 /usr/bin/gcc
split -n 1000000 /etc/gconf/schemas/gnome-terminal.schemas