python - 使用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为相同的问题提出更好的解决方案。
解决方案
为此,您不需要python;如果您首先增加进程可以使用的打开文件的数量ulimit
,则可以很容易地在 、 或 shell 中以正确的顺序获取列bash
,zsh
使用ksh93
和paste
大括号扩展以所需的顺序生成文件名,而不必对结果进行排序文件名扩展:
% ulimit -n 4096
% paste {1..3000}.txt > matrix.txt
(我在 Linux 机器上提到的所有三个 shell 中都对此进行了测试,它可以与所有这些 shell 一起工作,没有关于命令行太长或其他任何错误的错误。)
您还可以安排让原始文件使用自然排序的不同命名方案,例如0001.txt
, 0002.txt
, ...,3000.txt
然后只是paste [0-9]*.txt > matrix.txt
.
推荐阅读
- javascript - 在我的 apollo graphQL express 服务器中实现一个套接字连接
- c# - EF Code First 更改数据类型 bool?布尔和整数?到 int
- image - 数字图像分析双线性插值
- sql - FROM 子句中的临时表而不是 WITH 子句
- amazon-web-services - 从 s3 nodejs 中删除文件夹
- photoshop - 在哪里可以找到批处理... jsx 文件(Photoshop 标准脚本)
- google-cloud-platform - 从电子邮件中的超链接获取 CSV 到 Google 可以存储
- node.js - 使用 express / request-promise 进行条件重定向
- javascript - RequireJS 没有正确加载 Vue.js
- java - 如何制作一个构造函数并让它创建一个(0,0)点?