我正试图从另一台机器获得一些文本文件中的数据发送。
while(1):
try:
with open('val.txt') as f:
break
except IOError as e:
continue
f=open("val.txt","r")
counter = f.read()
print counter
f.close()
counter=int(counter)
第一次执行时,它返回一个错误
counter=int(counter)
ValueError: invalid literal for int() with base 10: ''
但是如果我尝试再次执行程序,我能够获得数据。请帮忙,谢谢你=)
更新:感谢Ashwini的评论,我能够解决这个问题。我把我的解决办法留在这里,供别人参考。
在f.c close()之后,I使用try-exception方法来解决空字符串问题。显然,一旦文件到达目的地,文件中的数据仍然是空的。
while(1):
try:
counter= int(counter)
break
except ValueError:
f=open("val.txt","r")
counter = f.read()
f.close()
continue
我猜这不是一个有效的方法来编写程序,但它仍然解决了问题。
您的文件为空,对于无效/空字符串int()
会引发此错误。
In [1]: int("")
ValueError: invalid literal for int() with base 10: ''
In [2]: int("abc")
ValueError: invalid literal for int() with base 10: 'abc'
In [3]: int("20")
Out[3]: 20
你可以在try-except
周围包裹int()
调用来解决这个问题:
try:
print int("")
except ValueError:
print "invalid string"
invalid string
#another example
try:
print int("23")
except ValueError:
print "invalid string"
23
只需添加:
counter = f.read()
f.close()
if counter.strip():
counter = int(counter)
print counter
如果文件为空,它将阻止打印,除非你有不能转换成数字的字符,否则你不会得到任何更多的错误。