首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按行将文件拆分为较小的文件

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

Stack Overflow用户
提问于 2013-07-31 02:33:46
回答 3查看 1K关注 0票数 0

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

代码语言:javascript
运行
复制
file 1 (lines 1-1000)

file 2 (lines 1001-2000)

file 3 (lines 2001-3000)

file 4 (lines 3001-4000)

我很感谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2013-07-31 03:13:31

这是可行的(您可以实现for而不是while循环,但它几乎没有区别,并且不假设需要多少文件):

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2013-07-31 02:47:13

试一试:

代码语言:javascript
运行
复制
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])
票数 0
EN

Stack Overflow用户

发布于 2013-07-31 04:20:36

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

代码语言:javascript
运行
复制
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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17954747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档