在python中读取文件,不跳过第一个数字

白金刚

我需要用 Python 编写一个程序,它查看单独文本文件中的数字列表,并执行以下操作:显示文件中的所有数字,将所有数字相加,告诉我有多少个数字在文件中。我的问题是它跳过文件中的第一个数字

这是写入文件的程序的代码,如果有帮助的话:

import random

amount = int (input ('How many random numbers do you want in the file? '))
infile = open ('random_numbers.txt', 'w')
for x in range (amount):
    numbers = random.randint (1, 500)
    infile.write (str (numbers) + '\n')
infile.close()

这是我读取文件中数字的代码:

amount = 0
total = 0
infile = open ('random_numbers.txt', 'r')
numbers = (infile.readline())
try:

    while numbers:
        numbers = (infile.readline())
        numbers = numbers.strip('\n')
        numbers = int (numbers)
        print (numbers)
        total += numbers
        amount += 1

except ValueError:
    pass
print ('')
print ('')
amount +=1
print ('Your total is: ' ,total)
print ('The amount of numbers in file is: ', amount) 

现在我的问题是它跳过了文件中的第一个数字。我首先注意到它没有给我正确数量的数字,因此附加语句将额外的 1 添加到数量变量。但是后来我再次测试并注意到它跳过了文件中的第一个数字。

科里·马登

怎么样:

with open('random_numbers.txt', 'r') as f:
    numbers = map(lambda x: int(x.rstrip()), f.readlines())

这将从字符串中的行中去除任何尾随换行符,然后将其转换为 int。完成后,它还会关闭文件。

我不确定你为什么要计算它循环的次数,但如果这是你想要做的,你可以这样做:

numbers = list()
with open('random_numbers.txt', 'r') as f:
    counter = 0
    for line in f.readlines():
        try:
            numbers.append(int(line.rstrip()))
        except ValueError: # Just in case line can't be converted to int
            pass
        counter += 1

不过,我只会使用len(numbers)第一种方法的结果。

正如 ksai 所提到的ValueError,最有可能的是,因为\n在行的末尾。我添加了一个示例,用于捕获 ValueErrortry/except以防万一它遇到由于某种原因无法转换为数字的行。

这是在我的 shell 中成功运行的代码:

In [48]: import random
    ...: 
    ...: amount = int (input ('How many random numbers do you want in the file? 
    ...: '))
    ...: infile = open ('random_numbers.txt', 'w')
    ...: for x in range (amount):
    ...:     numbers = random.randint (1, 500)
    ...:     infile.write (str (numbers) + '\n')
    ...: infile.close()
    ...: 
How many random numbers do you want in the file? 5

In [49]: with open('random_numbers.txt', 'r') as f:
    ...:     numbers = f.readlines()
    ...:     numbers = map(lambda x: int(x.rstrip()), numbers)
    ...:     

In [50]: numbers
Out[50]: <map at 0x7f65f996b4e0>

In [51]: list(numbers)
Out[51]: [390, 363, 117, 441, 323]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在C ++中从文件中读取第一个数字

C编码-文本文件中的第一个数字未按预期方式读取

在python中读取二进制文件时跳过了第一个字节

对第一个数字按降序对文件中的数字进行冒泡排序

如何使readlines限制为文件中的第一个数字?

从Python中的字符串中仅获取第一个数字

Python按字符串中的第一个数字排序列表

我如何让这个文件每行的第一个数字增加它?那么第一行没有被跳过呢?在 C

强制ANTLR仅读取输入文件中的第一个注释部分,并跳过其余注释

python数组中None之间的第一个和最后一个数字

忽略数组中的第一个和最后一个数字

读取用户输入的第一个数字

排序时读取两个数字而不是第一个整数

如何通过第二列中的第一个数字将文件拆分为较小的文件

重命名文件夹中的特定文件:仅更改第一个数字

PHP在代码中找到数字,然后在第二次搜索中跳过第一个数字?

为什么只更改表中第一个数字的第一个格式

更新 CSV 文件以删除第一个数字并在特定列中插入小数位

如何在PowerShell中以填充的第一个数字开始批量重命名文件

在pandas groupby中提取相同数字序列中的第一个数字

查找并替换PHP中除第一个数字外的数字

查找数字串中的第一个数字

如何在python中捕获字符串中的第一个数字元素?

如何在Python熊猫数据框中的NaN之间的序列中冻结第一个数字

获取整数的第一个数字

删除被空格包围的第一个数字

在第一个数字之前分割元素

只比较元组的第一个数字

返回列表的第一个数字