Python 什么是「;蟒蛇的;从文件中切片行列表的方法?

Python 什么是「;蟒蛇的;从文件中切片行列表的方法?,python,python-2.7,Python,Python 2.7,我有两个列表start\u list和end\u list。我需要从start\u列表中的行号开始,并以end\u列表中相应的行号结束。然后需要将这些文件写入另一个文件。最“蟒蛇式”的方法是什么 我尝试了使用两个在C++中使用< /COD>循环方式。我想知道python中实现这一点的最有效方法。我试图在循环中使用islice()函数,但没有给出正确的结果。请检查以下代码以了解我的实现 content = [] try: with open(dir+ '/' + file_name

我有两个列表
start\u list
end\u list
。我需要从
start\u列表
中的行号开始,并以
end\u列表
中相应的行号结束。然后需要将这些文件写入另一个文件。最“蟒蛇式”的方法是什么

我尝试了使用两个<代码>在C++中使用< /COD>循环方式。我想知道python中实现这一点的最有效方法。我试图在循环中使用

islice()
函数,但没有给出正确的结果。请检查以下代码以了解我的实现

content = []    
try:
    with open(dir+ '/' + file_name, "r") as file: 
        for start, end in zip(start_list, end_list):
            for lines in itertools.islice(file, start, end):
                content.append(lines)

问题是,不能以这种方式将islice与文件对象一起使用。一旦读取了这些行,您就不能在没有明确请求的情况下返回文件

您可以在第二个
之前添加
文件。seek(0)
for

或者读取一次文件,然后在内存中迭代文件内容:

content = []
try:
    with open(os.path.join(dir, file_name), "r") as file:
        file_content = file.readlines()

    for start, end in zip(start_list, end_list):
        content.extend(file_content[start:end])

使用linecache util尝试一次-

import linecache
content=[]
file_path="path_to_file"
for start, end in zip(start_list, end_list):
    for line_no in range(start,end):
        content.append(linecache.getline(file_path,line_no))
注意

此函数永远不会引发异常-它将在 错误(行将包含终止换行符 (已找到)


更多详细信息,请参见

最“python”的方法是什么?通常,使用for循环构建列表的最“pythonic”的方法是利用文档中的“如果您想读取列表中文件的所有行,还可以使用list(f)或f.readlines()”。然后你就可以把那张单列出来了。如果您的文件很大,那么可以在for循环中使用计数器,并在开始和结束时进行检查。最好使用os.path.join()。注:dir是一个保留目录word@joaquin你是对的。我没有更改初始代码。