2011-10-13 39 views
1

所以,我正在处理一个小创意,并且我错过了其中的一部分。我不确定使用哪种编码语言,但我确信它可以做到最多,所以任何有你最喜欢的语言的经验,我都可以真正使用你的帮助!随机化多个文本文件并编译为一个

在例子中,可以说我有多个文本文件(其中hundreads!),每一个文本文件,有多条线路。我要做的是当我运行程序/脚本时,它会将所有文本文件编译到一个文本文件中,但每次都以随机顺序。

谷歌真的没有给我任何关于这个想法固体。所以,任何帮助非常感谢!

编辑:

问题解决了感谢的code-monkey帮助。这是他的一些改变,以做我想做的事。感谢大家的帮助。 :)

import os 
import random 

os.chdir("C:/Users/USERACCOUNT/test/txtfiles") 
directory = "C:/Users/USERACCOUNT/test/txtfiles" 
extension = ".txt" 
files = [file for file in os.listdir(directory) if file.lower().endswith(extension)] 

file = open("C:/Users/USERACCOUNT/test/result.txt", "a") 

random.shuffle(files) 

for x in files: 

    f = open(os.getcwd() + "\\" + x, "r") 
    res = f.read() 
    file.write(res + "\r\n") 

f.close() 
file.close() 

回答

0

我真的很喜欢Python这样的事情,这很容易。

这里有一个例子:

import os 
import random 

files = os.listdir("C:\\Your\\Directory\\") 

file = open("result.txt", "a") 

random.shuffle(files) 

for x in files: 

    f = open(os.getcwd() + "\\" + x, "r") 
    res = f.read() 
    file.write(res + "\r\n") 

f.close() 
file.close() 

希望帮助!

+0

对不起,有一些错误= P –

+0

看起来有前途的!非常感谢!但是这是否会随机化编译的文件? – Dustin

+0

罗,但我加入如何使它随机的,它使用random.shuffle()函数 –

0

这样的事情.. C#

static void ManyFilesToOne() { 
     string dir = @"c:\miscworking\myfiles"; 
     FileInfo[] files = new DirectoryInfo(dir).GetFiles("*.txt"); 
     List<int> usedIdx = new List<int>(); 

     StringBuilder str = new StringBuilder(); 
     Random rnd = new Random(); 
     while (usedIdx.Count < files.Length) { 

      int idx = rnd.Next(0, files.Length); 
      while (usedIdx.FindIndex(delegate(int i) { return i == idx; }) >= 0) { 
       idx = rnd.Next(0, files.Length); 
           } 

      usedIdx.Add(idx); 
      str.Append(File.ReadAllText(files[idx].FullName)); 
     } 

     File.WriteAllText(Path.Combine(dir, @"File\BigFile" + rnd.Next(10000) + ".txt"), str.ToString() + System.Environment.NewLine); 
    } 
0

在Perl:

#!/usr/bin/env perl 

use autodie; 
use strict; 
use warnings; 

use File::Find; 
use File::Slurp; 
use List::Util qw(shuffle); 

my $path = shift or die "Usage: $0 PATH\n"; 
open my $fh_output, '>', 'compiled.txt'; 

my @filenames; 

sub compile { 
    push @filenames, $File::Find::name unless -d; 
} 
find(\&compile, $path); 

for my $filename (shuffle @filenames) { 
    my $content = read_file $filename; 
    print $fh_output $content if defined $content; 
} 

close $fh_output; 
+0

我在我的Windows机器上安装的ActivePerl,并给它一个镜头,我得到这个错误。我缺少的东西我安装 ?C:\用户\达斯汀> C:\测试\ TEST.PL 无法找到文件/ Slurp.pm在@公司(@公司包含:C:/ Perl64 /网站/ lib目录C:/ Perl64/ lib。)在C:\ test \ TEST.PL第8行。 BEGIN失败 - 编译在C:\ test \ TEST.PL第8行中止。 C:\ Users \ Dustin> – Dustin

+0

安装['File :: Slurp'](http://search.cpan.org/perldoc ?文件:: Slurp的)。从命令行:'ppm安装File-Slurp'。 –