我正在尝试弄清楚如何使用输入的xrange从列表中打印行。我试图不缩写我的代码,因为我还在学习并希望清楚地遵循逻辑。所以我想要的是从用户提供的参数中打印一系列行。我知道我有一些错误的订单,但我仍然坚持如何键入它...这是我到目前为止所拥有的:
import csv
import sys
sourcef = sys.argv[1] # Source file path/name
destf = sys.argv[2] # Destination file path/name
linestart = int(sys.argv[3]) # Starting row to delete
lineend = int(sys.argv[4]) # Ending row to delete
with open (sourcef, 'rb') as file1, open (destf, 'wb') as file2:
reader = csv.reader(file1)
writer = csv.writer(file2)
row = list(reader)
for i in xrange(linestart, lineend):
print i
答案 0 :(得分:1)
您想要的是slice
对象而不是xrange
:
...
rows = list(reader)
for x in rows[slice(linestart, lineend)]:
print x
这是更详细的形式:
...
rows = list(reader)
for x in rows[linestart: lineend]:
print x
您可能不需要将reader
迭代器实现为列表,尤其是在您只需要一小部分行的情况下。在这种情况下,您可以使用itertools.islice
。
from itertools import islice
...
for x in islice(reader, linestart, lineend)
print x