所以,我正在研究一个小小的想法,我错过了它的一部分。我不确定使用哪种编码语言,但我确信它可以做到最多,所以任何有你最喜欢的语言的经验,我都可以真正使用你的帮助!
在一个例子中,假设我有多个文本文件(它们是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 :(得分: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()
希望有所帮助!
答案 1 :(得分:0)
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);
}
答案 2 :(得分: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;