迭代python中的列表来检查文件行长度

Dav*_*ave 0 python file list line

我已经解决了这个问题好几个小时了,不管我扔了什么,我都不能为我的生活让它发挥作用.

目标是导入一个文件,每个行包含12个数字,但是用户想要输入多行.(它正在检查UPC代码).我要做的是导入文件,然后设置一个循环来检查文件中的每一行,如果它超过12个字符长或在它下面吐出错误,如果它包含任何字母吐出出错了(我还没到现在.)无论如何,这是我的代码:

iven = input("what is the file name")
infile = open(iven, "r")
lines = infile.read()
v = lines.split()
print(lines)
print(v)


for i in range(len(v)):
    if len(v[i]) > 12:
        print("UPC is too long")
    elif len(v[i]) < 12:
        print("UPC is too short")
    else:
        print(v)
Run Code Online (Sandbox Code Playgroud)

而截至目前,这是一个烂摊子.我可以让它一次读取一个字符的文本文件,或者它计算整个事物,它不会一行一行.有任何问题,我可以帮你解决这个问题

GP8*_*P89 5

迭代文件对象直接从文件中逐行生成数据

iven = input("what is the file name")
with open(iven) as f:
    for line in f:
        line = line.rstrip()  # presumably you're not interested in any newline characters
        if len(line) > 12:
            print("UPC is too long")
        elif len(line) < 12:
            print("UPC is too short")
        elif not line.isdigit():
            print("UPC isn't a number")
        else:
            print(v)
Run Code Online (Sandbox Code Playgroud)

或者,如果你只是想检查文件没有更少的行,或者大于12个字符(也许你也想要line.rstrip()这里)

if all(len(line.rsplit()) == 12 and line.rsplit().isdigit() for line in open(iven)):
    print("All good!")
Run Code Online (Sandbox Code Playgroud)