Python 学生们无法理解的事情

Python 学生们无法理解的事情,python,class,oop,import,python-class,Python,Class,Oop,Import,Python Class,学生们无法理解的事情 From aiogram.types import InputFile a = InputFile(r'C:\Users\Acer\Desktop\f\1.mp3') b = InputFile(r'C:\Users\Acer\Desktop\f\2.mp3') c = InputFile(r'C:\Users\Acer\Desktop\f\3.mp3') d = InputFile(r'C:\Users\Acer\Desktop\f\

学生们无法理解的事情

   From aiogram.types import InputFile
   
   a = InputFile(r'C:\Users\Acer\Desktop\f\1.mp3')
   b = InputFile(r'C:\Users\Acer\Desktop\f\2.mp3')
   c = InputFile(r'C:\Users\Acer\Desktop\f\3.mp3')
   d = InputFile(r'C:\Users\Acer\Desktop\f\4.mp3')
   e = InputFile(r'C:\Users\Acer\Desktop\f\5.mp3')
   
   class Make:
       def __init__(self, art, zanr, name, put):
       self.art = art
       self.zanr = zanr
       self.name = name
       self.put = put
   
   a1 = Make('Blaze', 'Hip-hop', 'Music_1234', a)
   b1 = Make('PORCHY', 'Rap', 'Trak_28', b)
   c1 = Make('Blaze', 'Pop', 'North-abc', c)
   d1 = Make('PORCHY', 'Hip-hop', '26-83', d)
   e1 = Make('Blaze', 'Pop', 'Abnov', e)
   
   spis = [a1, b1, c1, d1, e1]
   
   for x in range(0, 4):
       if spis[x].art == 'PORCHY':
           print(cl.spis[x].put)

控制台:

<InputFile 'attach://GqEaqV-Wj3zekeFP9GIygA' with file='<_io.BufferedReader name='C:\\Users\\Acer\\Desktop\\f\\2.mp3'>'>
<InputFile 'attach://JeYgSuIUgVjS7nDwPONivQ' with file='<_io.BufferedReader name='C:\\Users\\Acer\\Desktop\\f\\4.mp3'>'>

为什么不呢

C:\Users\Acer\Desktop\f\2.mp3

C:\Users\Acer\Desktop\f\4.mp3

通过查看,您可以看到
\uuuu str\uuu
方法的定义如下:

def __str__(self):
        return f"<InputFile 'attach://{self.attachment_key}' with file='{self.file}'>"

如果您指的是双反斜杠,这可能是通过
BufferedReader使用
str.\uuuuu repr\uuuu
生成文件名表示的结果。不,为什么它不以C:\Users\Acer\Desktop\f\2.mp3格式返回变量“a”的值呢。如何使其像这样返回?因为
put
属性是一个
InputFile
实例,而不仅仅是一个文件名。您必须查看
InputFile
的定义,以了解其
\uuuu str\uuuu
方法(或可能的
\uuu repr\uuuu
方法)的定义方式。换句话说,它显示变量
a
的值;这个值不是一个
str
对象。谢谢,但是控制台输出如下:2.mp3 4.mp3,我需要这样的值:C:\Users\Acer\Desktop\f\2.mp3 C:\Users\Acer\Desktop\f\4.mp3我试着这样写:print(r'C:\Users\Acer\Desktop\f\'+cl.spis[x]。put.get\u filename())Python考虑cl.spis[x].put.get_文件名为文本并显示错误,您能告诉我如何修复吗?尝试
打印(os.path.realpath(cl.spis[x].put.get_文件().name))
再次导入osThanks后,问题再次出现,该文件的路径被传递给bot,并发送给用户,我这样尝试:
a=os.path.realpath(cl.spis[x] .put.get_文件().name)print(os.path.realpath(cl.spis[x].put.get_文件().name))等待bot.send_audio(chat_id=id,audio=a)
So:
print(os.path.realpath(cl.spis[x].put.get_文件().name))等待bot.send_audio(chat_id=id,audio=os.path.realpath(cl.spis[x].put.get_文件().name))
print(cl.spis[x].put.get_filename())