在python中读取文件时出错

时间:2013-01-15 15:31:32

标签: python file

我正在尝试从另一台机器获取一些文本文件中的数据。

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

猜猜这不是编写程序的有效方法,但它仍然可以解决问题。

2 个答案:

答案 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

如果文件为空,它将阻止打印,除非您有无法转换为数字的字符,否则不会再出现错误。