如何从文件中随机选择一行并用python打印它?什么是属性错误:\u退出\u?

2024-05-23 20:04:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个学校项目使用python,我有以下两个文件:

file = open("Songs.txt","r") 
file = open("Artists.txt","r")

我想从我的艺术家文件中随机选择一个艺术家,然后打印出来

import random
with "Artists.txt":
    ARTIST = random.randint(0,9)
    print(ARTIST)

它还不断显示AttributeError:退出,并显示:

Traceback (most recent call last): File "N:\1GCSE\Computing\Programming Project\Project.py", line 26, in with "Artists.txt": AttributeError: _exit _

我该怎么办


Tags: 文件项目importtxtprojectartistwithrandom
2条回答

我假设txt文件中的每一行都有艺术家的名字。因此,您应该逐行读取文件,然后将它们存储在list中。然后随机选取列表中的元素

注意:.readlines()与python3x兼容

你可以试试这个:

import random

def read_file():
    with open('file.txt') as fp:
        lines = fp.readlines()
    print(random.choice(lines))
    # If you want to return the randomly picked artist, you can uncomment following code
    # return random.choice(lines)

问题在于with的用法。使用with语句时,必须提供一个返回某些内容的执行,以及as定义的变量:

with process as foo:
    do_something

它计算process,对返回值调用__enter__方法(称为“上下文保护”),并将__enter__的返回值赋给变量foo。之后,执行do_something,不管发生什么,都会调用guard对象的__exit__方法。请参阅更多here,这里的解释是从哪里来的。 所以不能像在代码中那样简单地将with与文件名一起使用

如果我没弄错的话,你的artist.txt文件有10行不同的艺术家,你试图随机选择其中一行并打印出来。例如,您可以执行以下操作:

import random

with open('artists.txt', 'r') as file:
    ARTIST = random.randint(0, 9)
    print(file.readlines()[ARTIST])

这和

import random

file = open('artists.txt', 'r')
ARTIST = random.randint(0, 9)
print(file.readlines()[ARTIST])
file.close()

但是更安全、更有效,因为文件在执行代码后会自动关闭

这将读取文件中的所有行,将它们放在一个列表中,选择一个0到9之间的随机数,然后在该位置打印列表中的对象,从文件中随机生成一个艺术家

相关问题 更多 >