我有一个Python脚本,它将整数列表作为输入,我需要一次使用四个整数.不幸的是,我无法控制输入,或者我将它作为四元素元组列表传入.目前,我正在以这种方式迭代它:
for i in xrange(0, len(ints), 4):
# dummy op for example code
foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
Run Code Online (Sandbox Code Playgroud)
它看起来很像"C-think",这让我怀疑有更多的pythonic方式来处理这种情况.迭代后会丢弃该列表,因此无需保留.也许这样的事情会更好吗?
while ints:
foo += ints[0] * ints[1] + ints[2] * ints[3]
ints[0:4] = []
Run Code Online (Sandbox Code Playgroud)
但是,仍然没有"感觉"正确.: - /
我正在编写一个脚本来记录来自另一个程序的错误,并在遇到错误时重新启动它停止的程序.无论出于何种原因,该程序的开发人员都认为没有必要在默认情况下将此功能放入其程序中.
无论如何,程序接受一个输入文件,解析它,并创建一个输出文件.输入文件采用特定格式:
UI - 26474845
TI - the title (can be any number of lines)
AB - the abstract (can also be any number of lines)
Run Code Online (Sandbox Code Playgroud)
当程序抛出错误时,它会为您提供跟踪错误所需的参考信息 - 即UI,哪个部分(标题或摘要)以及相对于标题或摘要开头的行号.我想从输入文件中记录有问题的句子,其中包含一个带参考号和文件的函数,找到句子并记录它.我能想到的最好的方法是在文件中向前移动特定次数(即n次,其中n是相对于seciton开头的行号).这样做的方式似乎是:
i = 1
while i <= lineNumber:
print original.readline()
i += 1
Run Code Online (Sandbox Code Playgroud)
我不知道这会如何让我丢失数据,但Python认为它会,并说ValueError: Mixing iteration and read methods would lose data.有谁知道如何正确地做到这一点?
有没有更好的方法从python中的文件一次读取两行:
with open(fn) as f:
for line in f:
try:
line2 = f.next()
except StopIteration:
line2 = ''
print line, line2 # or something more interesting
Run Code Online (Sandbox Code Playgroud)
我在2.5.4.新版本有什么不同?
编辑:删除的答案注意到:在py3k中你需要做下一个(f)而不是f.next().更不用说打印更改了
假设您打开一个文件,并在文件中的某处执行seek(),您如何知道当前文件行?
(我亲自解决了一个ad-hoc文件类,它在扫描文件后将搜索位置映射到该行,但我想看到其他提示并将此问题添加到stackoverflow,因为我无法在任何地方找到问题谷歌)
第三个链接似乎有答案,但它没有完成这项工作.
我无法找到将整个文件带到主内存的解决方案,因为我将使用的文件非常大.所以我决定使用islice第3个链接中显示的内容.前2个链接无关紧要,因为它们仅用于2行或读取1000个字符.而我需要1000行. for now N is 1000
我的文件包含100万行:
样品:
1 1 1
1 2 1
1 3 1
1 4 1
1 5 1
1 6 1
1 7 1
1 8 1
1 9 1
1 10 1
Run Code Online (Sandbox Code Playgroud)
因此,如果我一次读取1000行,我应该经历一段while 1000时间,但是当我打印p以检查我已经完成了多少次时,它并没有停留在a 1000.它19038838运行我的程序1400几秒钟后达成了!
码:
def _parse(pathToFile, N, alg):
p = 1
with open(pathToFile) as f:
while True:
myList = [] …Run Code Online (Sandbox Code Playgroud) 我有一个包含测试数据的文本文件,如下所示:
hdr 1
hdr2
hdr3
data1
data2
data3
data1
data2
....
Run Code Online (Sandbox Code Playgroud)
每一行之间都有一个空行.
我需要创建一个包含列表的列表
[[hdr1,hdr2,hdr3],[data1,data2,data3],[data1,data2,...]
Run Code Online (Sandbox Code Playgroud)
这样做的简洁,pythonic方式是什么?
我试图在文本文件中一次循环多个N行.例如,如何遍历整个文件,例如它有100行,一次打印10行.这是我得到了多远.
N=10
f=open("data.txt")
for i in range(N):
line=f.next().strip()
print line
f.close()
Run Code Online (Sandbox Code Playgroud) python ×7
loops ×3
python-2.7 ×3
file ×2
chunks ×1
line-count ×1
list ×1
optimization ×1
seek ×1
while-loop ×1