2011-10-13 68 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'。 –