我正在尝试从另一台机器获取一些文本文件中的数据。
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.close()之后,我使用try-exception方法来消除空字符串问题。显然,一旦文件到达目的地,文件中的数据仍然是空的。
while(1):
try:
counter= int(counter)
break
except ValueError:
f=open("val.txt","r")
counter = f.read()
f.close()
continue
猜猜这不是编写程序的有效方法,但它仍然可以解决问题。
答案 0 :(得分:2)
您的文件为空,无效/空字符串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
您可以围绕int()
打包try-except
来解决此问题:
try:
print int("")
except ValueError:
print "invalid string"
invalid string
#another example
try:
print int("23")
except ValueError:
print "invalid string"
23
答案 1 :(得分:0)
只需添加:
counter = f.read()
f.close()
if counter.strip():
counter = int(counter)
print counter
如果文件为空,它将阻止打印,除非您有无法转换为数字的字符,否则不会再出现错误。