因此,我已经花了几天时间,无法弄清楚答案。但我将问题简化为最简单的形式(我认为)。我正在尝试在文件中找到两个不同的字符串,并阅读它们之间的文件部分。现在,我有一个测试器文件,其中实际上只有1 2 3 4 5 6 7 8 9等。我正在运行以下代码:
with open('Testing.txt', 'r') as file:
read = file.read()
if "4" in read:
begin = read.index("4")
print begin
if "8" in read:
end = read.index("8")
file.seek(begin)
print "The location to begin reading is", file.tell()
data= file.read()[begin:end]
print "data =", data
如果我从1开始,则代码可以正常工作。如果我从2以上开始,它会将数字拉到比列表更远的位置。我有点茫然为什么会这样。我希望我有道理!
答案 0 :(得分:4)
创建file.seek(begin)
后,file.read()
将从begin
而不是从文件开头读取文件。
因此,请创建file.seek(0)
或更改计算数据的方式:data= file.read()[:end - begin]
但是为什么第二次读取文件,却已经在read
变量中包含了文件内容。只要做:
data = read[begin:end]
此外:
您可以使用正则表达式或split
函数代替计算索引。
避免使用read
作为变量名,因为这会使习惯于使用打开文件读取的读者感到困惑。