使用python对编程课程进行介绍。
我们本周的任务是创建一个名为“randomnum.txt”的文本文件,并使用python脚本将其打印到其中。我成功地创建了该文件,但我遇到了分配的第二部分,以打印文件的内容并计算.txt中的数字(行)数。
我已经能够打印内容或数行数,但从来没有两者兼而有之。我在Python方面很差,我想得到一些帮助。
with open ('randomnum.txt','r') as random_numbers:
num_nums = 0
contents = random_numbers.read()
for lines in random_numbers:
num_nums += 1
print('List of random numbers in randomnum.txt')
print(contents)
print('Random number count: ', num_nums)
这样它就给了我一个0的随机数计数。
任何帮助都是非常感谢的!
发布于 2018-10-05 18:03:32
这是一个很好的问题,因为您正在观察只能读取一次文件对象的行为。一旦您调用random_numbers.read()
,您就不能重复该操作。
我建议您不要使用.read()
,而是使用.readlines()
。它逐行读取文件,而不是一次读取整个文件。在遍历每一行时,将一条添加到计数器中,并打印当前行:
with open("file.txt", "r") as myfile:
total = 0
for line in myfile.readlines():
print(line, end="")
total += 1
print("Total: " + str(total))
注意我传递给打印(end=""
)的第二个参数。这是因为默认情况下,print
会添加一个新行,但是由于文件在行尾已经有新行,所以您将打印两行新行。end=""
停止print
打印尾换行符的行为。
发布于 2018-10-05 18:13:22
尝试这个readlines
,然后使用map
进行剥离,使用它的方法描述符,然后只使用len
获取长度:
with open ('randomnum.txt','r') as random_numbers:
l=random_numbers.readlines()
print('List of random numbers in randomnum.txt')
print(''.join(map(str.rstrip,l)))
print('Random number count: ', len(l))
使用randomnum.txt
输出的代码如下:
1
2
3
4
5
6
输出:
List of random numbers in randomnum.txt
123456
Random number count: 6
发布于 2018-10-05 18:03:13
调用.read()
和使用for ... in ...
迭代都会消耗文件的内容。除非在两者之间调用.seek(0)
,否则不能两者兼得。或者,与调用.read()
不同,您可以捕获for
循环中的行(可能切换到.readlines()
),然后不必担心它。
https://stackoverflow.com/questions/52675084
复制相似问题