You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何将mymodule.py的用户输入传递给check_avail.py使用

解决方案

第一步:修改check_avail.py,避免导入时自动执行输入逻辑

你现有代码的核心问题是check_avail.py末尾的输入、调用代码是全局生效的,只要其他脚本导入它,就会自动触发输入要求,无法接收外部传入的参数。需要把这部分代码移到if __name__ == "__main__"判断块内,修改后完整代码如下:

from pytube import YouTube

if __name__ == "__main__":
    def video(url,path):
        y = YouTube(url) 
        print("Successfully done")    
        return video
    # 把原来全局的输入、调用逻辑移到主程序判断内
    url = input("Enter input url here: ")
    path = input("Enter path here: ")
    video(url,path)
else:
    def check(func):
        def parameters(u,v):
            print(f"title:{YouTube(u).title}, views:{YouTube(u).views}, Length:{YouTube(u).length}")
            return func(u,v)
        return parameters

    def filtering(func):
        def param(u,v):
            check1 = YouTube(u).streams.filter(type='video',progressive=True,file_extension='mp4')
            print(check1)
            return func(u,v)
        return param

    @filtering
    @check
    def video(url,path):
        y = YouTube(url) 
        print("Success") 
        return video  

第二步:修改mymodule.py,导入模块后传入参数调用

取消check_avail导入的注释,在需要的位置传入已经拿到的url和path参数即可,修改后完整代码如下:

from pytube import YouTube
import pytube
import check_avail 

class vdodownload:

    def __init__(self,url,path):
        self.url = url
        self.path = path


    def link(self):
        try:
            print(f'Downloading video: {YouTube(self.url).title}')
            # 传入当前类存储的url和path给check_avail的video方法
            yt = check_avail.video(self.url,self.path)
            YouTube(self.url).streams.first().download(self.path)
            print(f'Downloaded video: {YouTube(self.url).title}')
        
        except pytube.exceptions.ExtractError:
             print(f'Video {self.url} is unavaialable, skipping.')
        
            
url = input("Enter the video URL: ")
path = input("Enter the path: ")

t = vdodownload(url,path)

t.link()

运行逻辑说明

  • 直接运行check_avail.py时,会触发自身的输入提示,走单独运行的逻辑
  • 运行mymodule.py时,先拿到用户输入的url、路径,实例化类后调用link方法时,会自动把两个参数传给check_avail.py的video方法执行,不需要再重复输入

内容的提问来源于stack exchange,提问作者shaila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:30:05