Python脚本在第一个函数之前调用函数

2024-06-16 11:05:01 发布

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

所以,我在做一个私人项目。我使用youtube dl制作了两个python脚本,分别下载了一首歌曲和一个缩略图。歌曲脚本将歌曲下载为带有自定义名称(由参数指定)的.mp3文件。缩略图的脚本下载带有自定义名称(由参数指定)的缩略图的.webp文件,然后将其转换为png和jpg。我将这两个函数放在不同的文件夹中,如下所示

yt2mp3 -- youtubeMP3.py
          __main__.py
          thumbnails.py -- __main__.py
                           downloadimg.py

完整的脚本可以在这个github repo上找到:https://github.com/ignition-ctrl/yt2mp3
代码并不漂亮,但它可以工作。然而,问题是这样的。我在.bashrc中有一个名为downloadmusic()的函数。它将包含两个参数,链接和自定义文件名,并使用这些参数运行python脚本youtubeMP3.py。youtubeMP3.py具有函数download_music(),在该函数中,它引用了downloadimg.py中的函数download_缩略图。我的问题是,从我的终端,我可以看到它运行下载缩略图两次。在启动脚本时下载一次,然后在运行下载_music()。我只希望它在下载音乐()后运行。该代码应仅在此代码中运行

determiner = input("Do you want to download the thumbnail?")
    if determiner == "yes" or "y" or "Yes":
        downloadimg.download_thumbnail(str(ytname), str(filename))
    else:
        exit(0)

这是对download_缩略图的唯一引用,但在我放入download_music()的打印语句之前,我可以看到download_缩略图()的终端输出。我还从download_thumbnail()获得了两份jpg文件副本。我一整天都在为这事挠头。如果有人能帮忙,我将不胜感激


Tags: 文件函数代码py脚本名称参数download
1条回答
网友
1楼 · 发布于 2024-06-16 11:05:01

导入模块时第一次调用download_thumbnail()。它试图逃跑

try:
    download_thumbnail(sys.argv[1], sys.argv[2])
except IndexError:
    raise NameError("Please provide a link and your desired filename")

您可以像这样将其封装在if语句中

if __name__ == '__main__':
    try:
        download_thumbnail(sys.argv[1], sys.argv[2])
    except IndexError:
        raise NameError("Please provide a link and your desired filename")try:
    download_thumbnail(sys.argv[1], sys.argv[2])

因此,此块将仅在直接执行文件时运行,而不是在导入时运行

相关问题 更多 >