在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
语句,它会打印所有值,但是当我添加时,它会给出异常。
如何解决?
答案 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
来确保在不再需要该文件时立即关闭它)
最后,作为一般建议,除了生产质量的脚本通常不应对路径进行硬编码外,将数据文件保存在“开始”菜单目录中并不是一个好主意...