TypeError:“ str”和“ int”的实例之间不支持“> =”

时间:2018-10-19 08:08:27

标签: python if-statement

在Python中,当我运行这段代码时,出现以下异常

if x >=9:
    TypeError: '>=' not supported between instances of 'str' and 'int'

from pathlib import Path
import datetime
f = open ('/Users/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Python 3.7/DAS.txt', 'r')
data=f.read()
for x in data:
    if x >=9:
        print (data)

.txt文件包含整数值(9,8,7,6);不包含if语句,它会打印所有值,但是当我添加时,它会给出异常。

如何解决?

1 个答案:

答案 0 :(得分:1)

文件包含数字数据的事实无关紧要-当您从文件中读取文件时,它仍然是字符串-碰巧只包含数字

要获取整数,必须将字符串强制转换为int,如下所示:

if int(x) >= 9:
    ...

此外,您的for遍历字符串,因此x是_组成该字符串的各个字符。这可能不是您想要的,因为int(x)会跨越任何非数字(例如空格),即使文件仅由数字组成,该检查也没有多大意义(仅对x == '9'成功)。

也许您想遍历在空白处分割的字符串

filename = '/Users/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Python 3.7/DAS.txt'
with open(filename, 'r') as f:
    for x in f.read().split():
        if int(x) >= 9:
            # ...

或直接在文件行上方:

with open(filename, 'r') as f:
    for x in f:
        if int(x) >= 9:
            # ...

(注意,我使用with来确保在不再需要该文件时立即关闭它)

最后,作为一般建议,除了生产质量的脚本通常不应对路径进行硬编码外,将数据文件保存在“开始”菜单目录中并不是一个好主意...