【发布时间】:2022-01-10 10:44:43
【问题描述】:
我开始为日常任务学习python,到目前为止只遇到过简单的文件处理。但是今天处理大量繁重文件的任务摆在我面前,我最终完成了。
我有一个包含以下内容的大文件:
TRACE:1
10000.000000;-4.316597;
10050.000000;-4.686951;
10100.000000;-5.178696;
10150.000000;-4.356827;
10200.000000;-4.620125;
.....
TRACE 2:
10000.000000;-50.371719;
10050.000000;-52.572052;
10100.000000;-60.795563;
10150.000000;-50.679413;
10200.000000;-62.036072;
.....
TRACE 3:
10000.000000;-10.796394;
10050.000000;-10.879318;
10100.000000;-11.238129;
10150.000000;-10.811073;
10200.000000;-10.627502;
10250.000000;-10.825951;
10300.000000;-11.240158;
TRACE 4:
Nope;Nope;
我需要将跟踪数据分离到单独的文件中
Input: data.DAT --> Output: Trace1.DAT, Trace2.DAT, Trace3.DAT
我尝试过这样做
import os
os.chdir('C:\path\to\work\dir')
with open('data.DAT') as dataFile, \
open('Trace1.DAT', "w+") as T1,\
open('Trace2.DAT', "w+") as T2,\
open('Trace3.DAT', "w+") as T3:
a = []
for num, line in enumerate(dataFile, 1):
if 'TRACE 1:' in line:
a.append(num)
if 'TRACE 2:' in line:
a.append(num)
if 'TRACE 3:' in line:
a.append(num)
if 'TRACE 4:' in line:
a.append(num)
print(a)
[dataFile.readline() for _ in range(a[0], a[1])]
T1.writelines(dataFile)
[dataFile.readline() for _ in range(a[1], a[2])]
T2.writelines(dataFile)
[dataFile.readline() for _ in range(a[2], a[3])]
T3.writelines(dataFile)
我得到了 Python 输出:
a = [42, 1999847, 3999652, 5999457]
创建的文件:
drwxrwxrwx 1 user user 512 Jan 10 17:31 .
drwxrwxrwx 1 user user 512 Jan 10 17:31 ..
-rwxrwxrwx 1 user user 0 Jan 10 16:46 Trace1.DAT
-rwxrwxrwx 1 user user 0 Jan 10 16:47 Trace2.DAT
-rwxrwxrwx 1 user user 0 Jan 10 16:47 Trace3.DAT
-rwxrwxrwx 1 user user 173082112 Jan 11 2019 data.DAT
感谢您的帮助或建议
【问题讨论】:
-
a有行号,因为您添加了包含trace X的行号。我建议更改逻辑 - 对输入文件进行迭代,并在trace X一行中打开一个新文件并输入所有行,只要这些行不是trace X