在python中读取文件时出错



我正试图从另一台机器获得一些文本文件中的数据发送。

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

如果文件为空,它将阻止打印,除非你有不能转换成数字的字符,否则你不会得到任何更多的错误。

相关内容

  • 没有找到相关文章

最新更新