如何从 txt 文件中提取数字

How to extract number from a txt file

提问人:Samyak Bhattarai 提问时间:12/3/2022 最后编辑:TimusSamyak Bhattarai 更新时间:12/6/2022 访问量:86

问:

首先是我的文件

amtdec = open("amt.txt", "r+")
gc = open("gamecurrency.txt", "r+")

eg = gc.readline()
u = amtdec.readline()

主代码

user_balance = int(u)
egc = int(eg)

while True:
    deposit_amount = int(input("Enter deposit amount: $"))
    if deposit_amount<=user_balance:
            entamount = deposit_amount * EXCHANGE_RATE
            newgc = entamount + egc
            newamt = user_balance - deposit_amount

这就是我的错误:

 user_balance = int(u)
ValueError: invalid literal for int() with base 10: ''

我试图将文件中的 int 与我的输入进行比较。

python 函数 运行时错误 语法错误

评论

1赞 Hamatti 12/3/2022
当您从文件中读取数据时,它似乎是空的。因此,将是一个空字符串,并尝试将其转换为整数会得到 .amtdecuValueError
0赞 Mudassir 12/3/2022
您的文件是空的,或者第一行是 newline()。更好的选择是使用并循环它。\nreadlines()

答:

-1赞 John B. 12/3/2022 #1

通常,像这样的错误应该会让您检查文件的格式。正如其他一些人所提到的,无论出于何种原因,第一行都可能是空的。在此之前,您可以通过执行以下操作来检查空文件:

测试.txt内容: (空文件)

import os

f = open("test.txt")

if os.path.getsize("test.txt") == 0:
    print("Empty File")
    f.close()
else:
    print("Some content exists")

输出:“空文件”(文件也被关闭,因为没有什么可读取的)

或者,如果您以某种方式无法访问其内容,您可以阅读整个文件(有些学校会这样做)。使用此技术可以让您了解在 IDE 中无法查看文件时正在处理的内容:

f = open("test.txt")

for line in f:
    print(line)

f.close()

但是,假设只有文件的第一行是空的。有几种方法可以检查一行是否为空。如果第 1 行为空,但其后的任何行都有内容,则从文件中读取第 1 行将等于“\n”:

测试.txt内容: 第 1 行 = '\n'(空行),第 2 行 = 20.72

import os

f = open("test.txt")

if os.path.getsize("test.txt") == 0:
    print("Empty File")
    f.close()
else:
    print("Some content exists")

reader = f.readline()

# The second condition is if you are using binary mode
if reader == '\n' or reader == b"\r\n":
    print("Blank Line")

输出:“某些内容存在”和“空白行”

这只是我的建议。至于您的整数转换,如果您的货币金额中有“.”,您将因尝试将其数据转换为整数而出现转换错误。但是,我不知道您的货币是否会四舍五入到最接近的美元,或者您是否有任何变化的迹象,所以我将把这个留给您。