Python - 读取文件后将字符串转换为整数
我在想有没有人知道怎么读取一个文件,并把输出的代码转换成整数,而不是字符串。我遇到了几种不同的错误,目前这个错误是“TypeError: 'str'对象不能被解释为整数”。我搜索了很多信息,但都没有找到结果。这是我的代码:
additionalBonusRates = open("additionalBonusRates.txt", 'r')
global kluger_additional
kluger_additional = additionalBonusRates.readline('\n')
global patrol_additional
patrol_additional = additionalBonusRates.readline('\n')
global territory_additional
territory_additional = additionalBonusRates.readline('\n')
additionalBonusRates.close()
kluger_additional = int(kluger_additional)
patrol_additional = int(patrol_additional)
territory_additional = int(territory_additional)
4 个回答
0
看起来你在使用python3。你遇到的错误不是因为把字符串转换成整数,而是因为在调用readline([n])时传入了'\n'。这个可选参数[n]是指你想读取的最大字节数。你应该使用"rstrip"来去掉换行符,这样才能正确转换成整数:
kluger_additional = int(additionalBonsuRates.readline().rstrip())
0
这可能是因为有一行是空的,所以出现了错误。请试试下面的代码,可能会对你有帮助。
additionalBonusRates = open("additionalBonusRates.txt", 'r')
global kluger_additional
kluger_additional = additionalBonusRates.readline('\n').strip()
if kluged_additional: # only go on if the line was not blank
kluger_additionalINT = int(kluger_additional)
1
文件对象里没有 readint
这个函数。你现在做的其实是把数据从你自己定义的文件格式中读取出来,这个过程叫做反序列化。
我不太确定你是在用 Python 2.7 还是 3.4,但要记住,文件对象读取的是原始字符串,也就是一串字节。
你现在的做法是对的,不过我有一些建议可以让它更好:
请尽量避免使用全局变量,这样会让程序员或者维护者感到困惑。
使用
with
语句来打开文件,这样可以确保文件在使用完后能正确关闭。你可以把反序列化的过程放在一个函数里,这样可以隐藏字符串到整数的转换过程。
尽量遵循 PEP8 的建议,避免使用过长的变量名。
下面是一个示例:
def read_add_bonus_rates(txt_path):
with open(txt_path, 'r') as txt_file:
kluger_add = int(txt_file.readline())
patrol_add = int(txt_file.readline())
territory_add = int(txt_file.readline())
return (kluger_add, patrol_add, territory_add)
def main():
rates = """\
150
160
180
"""
with open('rates.txt', 'w') as rates_file:
rates_file.write(rates)
print(repr(read_add_bonus_rates('rates.txt')))
if __name__ == '__main__':
main()
2
我没有足够的积分来评论,但你的错误是因为你把一个字符串作为参数传给了 readline()
。
另外,为什么要用这么多全局变量?你真的需要这样吗?如果不是特别必要,通常不建议这样声明全局变量。
如果你在处理数字数据文件,我还建议你看看 numpy。