在python中读取未知的跳过错误文件

时间:2015-09-17 17:57:52

标签: python file

现在我有一个文本文件,我使用以下代码输出3次。

def Final_Output():##// Edited
with open('A Class, A.T.I..txt', "a") as file_out:
    file_out.write("Full_Name :> " + str(Sur_Name) + ', ' + str(Name) + '\n')
    file_out.write("Date: >: " + str(Date) + "\n")
    file_out.write("Class: >: " + str(Class) + '\n')
    file_out.write("Range >: " + str(Range_Limit) + "\n")
    file_out.write("Score :> " + str(N) + '\n')
    file_out.write("Score_Percent :> " + str(Score_Percent) + '\n')

Name = "MohKale"
Sur_Name = "MohKale Surname"
Date = "16/9/2015 11:7:52"
Class = "A"
Range_Limit = "10765"
N = "10"
Score_Percent = "0.0"

Final_Output()

然后我创建了一个程序,它连续读取文本文件(直到结束),然后将它们保存到变量中。

a = 0
with open('A Class, A.T.I..txt', "r") as file_out:
    for line in file_out:
        a = a + 1
        Name2 = file_out.readline()
        print(Name2)
        Sur_name2 = file_out.readline()
        print(Sur_name2)
        Date2 = file_out.readline()
        print(Date2)
        Class2 = file_out.readline()
        print(Class2)
        Range_Limit2 = file_out.readline()
        print(Range_Limit2)
        N2 = file_out.readline()
        print(N2)
        Score_Percent2 = file_out.readline()
        print(Score_Percent2)

现在技术上程序确实读取了文本文件并保存到变量,但问题是它第一次读取文本文件时由于某种原因跳过第一行,第二次循环它也跳过了第一行但也是第二次,然后第三次循环它读取第二行但跳过第三行,这不断发生跳过下一个读取文件。

任何人都可以理解并解释问题

此外,通过推杆 print(line) 它会打印缺失的行,但这太随机了,无论如何都要阻止这样的事件

2 个答案:

答案 0 :(得分:0)

问题是你的for循环正在消耗文件中的某些行,而与其他.readline()调用无关。而不是做

for line in file_out:

您需要执行类似

的操作
try:
   while True:
      a += 1
      Name2 = next(file_out)
      print(Name2)
      # ...
      Score_Percent2 = next(file_out)
      print(Score_Percent2)    
except StopIteration:
   print("Done!")

答案 1 :(得分:0)

问题似乎是你正在使用for循环并迭代这些行,只使用一个:)

我建议您删除for循环并执行file_out.readline()

with open('A Class, A.T.I..txt', "r") as file_out:
    a = a + 1
    Name2 = file_out.readline()
    print(Name2)
    Sur_name2 = file_out.readline()
    print(Sur_name2)
    Date2 = file_out.readline()
    print(Date2)
    Class2 = file_out.readline()
    print(Class2)
    Range_Limit2 = file_out.readline()
    print(Range_Limit2)
    N2 = file_out.readline()
    print(N2)
    Score_Percent2 = file_out.readline()
    print(Score_Percent2)