【问题标题】:I need to split a seismological file so that I have multiple subfiles我需要拆分一个地震文件,以便我有多个子文件
【发布时间】:2019-03-14 09:52:07
【问题描述】:

基本上,我拥有的是一个包含各种地震事件的地震学信息的 ASCII 文件。每个事件(及其特定信息)都通过跳线与以下事件分开。

我想要的是使用 python 将这个巨大的文件拆分成一系列子文件,其中包含大约 700 个事件,每个事件都有自己的信息,并且这些子文件必须按时间顺序组织。

原始文件如下所示:

您可以看到在第一个和第二个事件之间是一条跳转线,因此每个后续事件。

提前感谢您的帮助

【问题讨论】:

  • “空行”比“跳线”更清晰;-)
  • 如果所有事件都在相同的行数上,并且在输入文件中已经按时间顺序排列,则可以在 linux/unix 下使用 split 之类的命令来剪切文件在几个
  • 问题是某些事件的行数比其他事件多。但它们总是用空行分隔。
  • 请以文本形式插入您的数据,因为它是文本,同时向我们展示您到目前为止所做的尝试

标签: python python-3.x split


【解决方案1】:

原则上你可以这样做:

inputFile = "AllEvents.txt"               # give the path to the file that contain all the events
eventInfo = ""                            # create a string to hold event info
eventCounter = 0
fileId = 0

subFile= open("Events" + str(fileId) + ".txt","w+")          # create the sub file that you need

with open(inputFile) as fileContent:
    for line in fileContent:
        if not line.strip():              # strip white spaces to be sure is an empty line
            subFile.write(eventInfo + "\n")      # add event to the subFile
            eventInfo = ""                # reinit event info
            eventCounter += 1
            if eventCounter == 700:
                subFile.close()
                fileId += 1
                subFile = open("Events" + str(fileId) + ".txt","w+")
                eventCounter = 0
        else:
            eventInfo += line
subFile.close()

最后,您将获得一个文件列表,每个文件包含 700 个事件:Events0.txt、Events1.txt、...

【讨论】:

  • 非常感谢!我会试试这个。以及如何使每个子文件包含 700 个事件?最后一个可能会更少,但这没关系
  • 我更新了代码,只写了 700 个事件/文件。如果对您有帮助,请将我的回答标记为正常
  • 它确实奏效了!但不知何故,跳线丢失了,我需要在新的子文件中使用它们。
  • 好的,我在 file.write() 步骤中添加了一个“\n”
  • 完美!你今天救了我
猜你喜欢
  • 2017-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多