【发布时间】:2013-06-04 05:50:00
【问题描述】:
我在一个目录中有许多(未知数)数据文件。每个数据文件都有以下内容。
FILE TYPE: 1
COLUMNS: 7
TITLE: TRACK HISTORY
COLUMN TYPE VARIABLE (UNITS)
------ ---- -------- -------
1 2 ParticleResidenceTime (s)
2 10 ParticleID -
3 10 ParticleXPosition (m)
4 10 ParticleYPosition (m)
5 10 ParticleZPosition (m)
6 10 ParticleDiameter (m)
7 10 ParticleDensity (kg/m3)
---------------------------------------------
3.00E-01 1.01E+05 -5.32E-02 -1.19E-01 -4.21E-02 1.28E-04 1.50E+03
3.00E-01 1.36E+05 -5.73E-02 -1.30E-01 -2.69E-02 1.50E-04 1.50E+03
3.00E-01 1.53E+05 -5.53E-02 -8.33E-02 -8.47E-03 1.39E-04 1.50E+03
每个数据文件有大约 300k 行,如上。我需要将所有这些文件合并到一个文件中。其中只有 3 列和 1 个标题。 3 列我需要第 3、4、5 列,它们是粒子 x y z 位置数据。数据从每个文件的第 16 行开始。
所以最终合并的文件如下所示。
X Y Z ( i guess i could add this header at the end manually too)
-5.32E-02 -1.19E-01 -4.21E-02
-5.12E-02 -1.39E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
文件 1 中的数据后有一个空行,文件 2 中的数据将紧随其后
-5.32E-02 -1.19E-01 -4.21E-02
-5.12E-02 -1.39E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
文件 3 中的数据后面的空行,文件 4 中的数据将开始
-5.32E-02 -1.19E-01 -4.21E-02
-5.12E-02 -1.39E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
-5.32E-02 -1.19E-01 -4.21E-02
以此类推,直到所有文件中的数据都放在这个文件中。
脚本需要执行以下操作。
- 首先找出该目录中有多少文件,以便它可以将其用作 for 循环的计数器(如果使用)
- 打开一个新文件,将第 3、4、5 列中的数据从第 16 行添加到目录中文件 1 的末尾。
- 添加一个空行
- 移动到下一个文件(因为这些数据是时间相关数据,数据需要按时间顺序累积。文件将在目录中排序。)
- 从第二个文件的第 16 行到末尾添加第 3、4、5 列
- 添加一个空行
- 重复直到目录中的最后一个文件。
如果有人向我展示如何使用 Python 做到这一点,我将不胜感激。
【问题讨论】:
-
您似乎希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的编码人员编写代码,但他们通常只有在发布者已经尝试自己解决问题时才会提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 不管是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多。
标签: python