获取 Python 变量中函数的输出
Get Output of A Function in Python In a variable
我的 python 脚本使用 youtube-dl 库下载 youtube 视频。它只打印进度,不打印 return 进度值。我必须将进度推送到我的 HTML 页面。使用 return() 仅给出代码为 0 或 none。 JavaScript 配置为获取 return 值并将其添加到文本区域。无法配置库,因为它很大。
stream.download(quiet=False, filepath=outfilepath)
这调用了一个模块 pafy,它进一步调用了 youtube-dl。
16,498,967.0 Bytes [100.00%] received. Rate: [5446 KB/s]. ETA: [0 secs]
此输出不会转到 HTML,而是打印在 python shell 中。
如何在我的 HTML 页面中获得此输出?
一种可能的解决方案是覆盖 pafy
用于打印到控制台的内置 sys.stdout.write
方法。您可以让它也将打印语句记录到数据结构中。
在下面的代码中,我使用了一个列表来存储传递给 sys.stdout.write
函数的所有字符串。这会将您所有的下载进度打印记录到此列表中。您始终可以从列表中访问您的最新日志。
import pafy
import sys
#List for logging required printed strings
myPrintLogs=[]
def write(text):
"""Overloaded sys.stdout.write function"""
myPrintLogs.append(text) #Adding text into Logs List
if len(text) == 0:
return
old_sys_write(text + '\n') #Calling the actual method for printing text
old_sys_write=sys.stdout.write
sys.stdout.write=write
初始化后添加您的下载代码。您将在列表 myPrintLogs
中获得所有控制台输出。需要在新线程中调用下载方法,这样才能在主线程中监控日志。
我的 python 脚本使用 youtube-dl 库下载 youtube 视频。它只打印进度,不打印 return 进度值。我必须将进度推送到我的 HTML 页面。使用 return() 仅给出代码为 0 或 none。 JavaScript 配置为获取 return 值并将其添加到文本区域。无法配置库,因为它很大。
stream.download(quiet=False, filepath=outfilepath)
这调用了一个模块 pafy,它进一步调用了 youtube-dl。
16,498,967.0 Bytes [100.00%] received. Rate: [5446 KB/s]. ETA: [0 secs]
此输出不会转到 HTML,而是打印在 python shell 中。 如何在我的 HTML 页面中获得此输出?
一种可能的解决方案是覆盖 pafy
用于打印到控制台的内置 sys.stdout.write
方法。您可以让它也将打印语句记录到数据结构中。
在下面的代码中,我使用了一个列表来存储传递给 sys.stdout.write
函数的所有字符串。这会将您所有的下载进度打印记录到此列表中。您始终可以从列表中访问您的最新日志。
import pafy
import sys
#List for logging required printed strings
myPrintLogs=[]
def write(text):
"""Overloaded sys.stdout.write function"""
myPrintLogs.append(text) #Adding text into Logs List
if len(text) == 0:
return
old_sys_write(text + '\n') #Calling the actual method for printing text
old_sys_write=sys.stdout.write
sys.stdout.write=write
初始化后添加您的下载代码。您将在列表 myPrintLogs
中获得所有控制台输出。需要在新线程中调用下载方法,这样才能在主线程中监控日志。