首页 > 解决方案 > 使用python并排排列文本文件

问题描述

我在一个目录中有 3000 个文本文件,每个.txt文件都包含单列数据。我想将它们并排排列以使其成为 mxn 矩阵文件。

例如:paste 1.txt 2.txt 3.txt 4.txt .............3000.txt 在linux中

为此我尝试了

printf "%s\n" *.txt | sort -n | xargs -d '\n' paste

但是它给出了错误粘贴:filename.txt: Too many open files

请使用python为相同的问题提出更好的解决方案。

标签: pythonpandaslinuxnumpyfor-loop

解决方案


为此,您不需要python;如果您首先增加进程可以使用的打开文件的数量ulimit,则可以很容易地在 、 或 shell 中以正确的顺序获取列bashzsh使用ksh93paste括号扩展以所需的顺序生成文件名,而不必对结果进行排序文件名扩展:

% ulimit -n 4096
% paste {1..3000}.txt > matrix.txt

(我在 Linux 机器上提到的所有三个 shell 中都对此进行了测试,它可以与所有这些 shell 一起工作,没有关于命令行太长或其他任何错误的错误。)

您还可以安排让原始文件使用自然排序的不同命名方案,例如0001.txt, 0002.txt, ...,3000.txt然后只是paste [0-9]*.txt > matrix.txt.


推荐阅读