【问题标题】:Splitting file into smaller files by lines按行将文件拆分为较小的文件
【发布时间】:2013-07-31 01:20:18
【问题描述】:

我正在尝试找出一种方法,将带有数据列的大 txt 文件拆分为较小的文件以供上传。大文件有4000行,我想知道是否有办法将它分成四个部分,例如

file 1 (lines 1-1000)

file 2 (lines 1001-2000)

file 3 (lines 2001-3000)

file 4 (lines 3001-4000)

感谢您的帮助。

【问题讨论】:

  • 你在这里找什么?遍历线条。一边做一边数。输出到缓冲区。在第 1001 行关闭文件编写器。冲洗重复。 whathaveyoutried.com
  • 如果您使用 linux,您可以使用简单的 split 命令,如下所示:split -l 1000 file.txt

标签: python python-2.7


【解决方案1】:

我喜欢 Aleksander Lidtke 的,但为了好玩,它带有一个 for 循环和一个 pop() 扭曲。当我这样做时,我还喜欢保留一些文件的原始命名,因为它通常是多个文件。所以我在里面加了“split”这个名字。

with open('Data.txt','r') as f:
    lines = f.readlines()

limit=1000
for o in range(len(lines)):
    if lines!=[]: 
        with open(f.name.split(".")[0] +"_" + str(o) + '.txt','w') as NewFile:
                for i in range(limit):
                    if lines!=[]:NewFile.write(lines.pop(0))

【讨论】:

    【解决方案2】:

    这可行(您可以实现for 而不是while 循环,但差别不大,并且不假设需要多少文件):

    with open('longFile.txt', 'r') as f:
        lines = f.readlines()
    
    threshold=1000
    fileID=0
    while fileID<len(lines)/float(threshold):
        with open('fileNo'+str(fileID)+'.txt','w') as currentFile:
            for currentLine in lines[threshold*fileID:threshold*(fileID+1)]:
                currentFile.write(currentLine)
            fileID+=1
    

    希望这会有所帮助。尝试按照python docs 中的建议在with 块中使用open

    【讨论】:

      【解决方案3】:

      试试这个:

      fhand = open(filename, 'r')
      all_lines = fhand.readlines()
      
      for x in xrange(4):
          new_file = open(new_file_names[x], 'w')
          new_file.write(all_lines[x * 1000, (x + 1) * 1000])
      

      【讨论】:

        猜你喜欢
        • 2011-07-13
        • 2019-10-02
        • 1970-01-01
        • 1970-01-01
        • 2012-08-13
        • 2013-04-23
        • 2012-06-06
        • 1970-01-01
        相关资源
        最近更新 更多