Python帮助从一个非常大的.txt文件中去掉前几行,并使用新文件名保存

Python帮助从一个非常大的.txt文件中去掉前几行,并使用新文件名保存,python,scripting,arcgis,Python,Scripting,Arcgis,我需要处理几个大文件(每个文件的数据大小约为350MB)。我需要做以下工作: 从每个文件中删除标题信息 使用新文件名将每个文件(不带标题)保存在不同的目录中 示例:Station_1.txt“->“Station_1_noheader.txt” 这将是ArcGIS中地理处理脚本的第一部分。假设打开文件后,每个文件都有相同数量的要跳过的行,从第n行读取内容 rows = f.readlines()[n:] 为了提高可视性/清晰度,以下是基于以下内容的解决方案: 将itertools导入为it

我需要处理几个大文件(每个文件的数据大小约为350MB)。我需要做以下工作:

  • 从每个文件中删除标题信息
  • 使用新文件名将每个文件(不带标题)保存在不同的目录中

    示例:Station_1.txt“->“Station_1_noheader.txt”


这将是ArcGIS中地理处理脚本的第一部分。

假设打开文件后,每个文件都有相同数量的要跳过的行,从第n行读取内容

rows = f.readlines()[n:]

为了提高可视性/清晰度,以下是基于以下内容的解决方案:

将itertools导入为itt
在_文件中_path=“../resources/nasdaqlisted.txt”
out_file_path=“../out/temp_out.txt”
行数\u跳过=5
将open(in_file_path)作为file_in,将open(out_file_path,“w”)作为file_out:
file\u out.writelines(itt.islice(file\u in,num\u line\u skip,None))
根据,当传递2个或多个参数时,第一个参数是要跳过的元素数,第二个参数是停止的位置,当设置为
None
时,将返回元素,直到迭代器耗尽


我相信这是最有效、最直接的方法。

也许这是最好的方法?这是从@bzzzt链接到的

numline=3 #3 lines to skip
p=""
o=open("output.txt","a")
f=open("file")
for i in range(numline):
    f.next()
for line in f:
    if p:
        o.write(p)
    p=line
f.close()
o.close()

非常简单,只需合并,您能更具体地说明问题是什么吗?@AMC我不知道如何才能更具体,但我会尝试总结一下。我有84个.txt文件,每个文件大小约为350 MB。我需要一段高效的代码,将每个文件的前3行文本删除,并将其用新文件名保存在新目录中,保留原始文件未更改。@jon这是对目标的描述,但不是问题或障碍。这回答了您的问题吗?可能是重复的哦,是的,我相信每个文件都有相同数量的行要跳过。谢谢!@jon这实际上效率很低,因为
readlines()
一次将每一行读取到内存中。@AMC是的,这就是我试图避免的-如果不需要,我不想一次将整个文件读取到内存中。最好有一种方法读取每一行并将该行写入文件,在读取下一行之前,从内存中清除该行。@jon看一看an回答我上面分享的问题。谢谢@AMC。看起来这个解决方案会写“标题”“将行写入新文件,但我希望将除标题行以外的所有内容写入新文件。要写入的行总数可以是可变的。换句话说,使用上面的例子,我想跳过前五行,把所有其他内容都写到temp_out.txt中。@jon是的,我记错了目标,我道歉。我已经更新了解决方案,这是一个小小的调整。太棒了!通过您的“调整”,我想我现在有三种可靠的方法可以尝试。为什么不使用上下文管理器呢?