按行将文件拆分为较小的文件

时间:2013-07-30 18:33:46

标签: python python-2.7

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

file 1 (lines 1-1000)

file 2 (lines 1001-2000)

file 3 (lines 2001-3000)

file 4 (lines 3001-4000)

我很感激帮助。

3 个答案:

答案 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中的建议,在open区块中使用with

答案 1 :(得分:0)

尝试一下:

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])

答案 2 :(得分:0)

我喜欢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))