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

使用Youtube API v3上传视频时如何实现多行描述?

问题原因与解决方案

你的问题确实是换行符\n被shell解析打断了命令结构导致的。当你用' '.join(command)把参数拼接成字符串,再加上shell=True时,shell会把\n识别为命令的换行分隔符,所以--description的参数只被解析到Line 1,后面的Line 2被当成了新的无效命令。

解决这个问题的核心是不要手动拼接命令字符串,直接传递参数列表给subprocess.run,并且禁用shell=True——subprocess的列表模式会自动处理参数中的特殊字符(包括换行、空格),不需要手动加引号。

修改后的YTUpload函数如下:

def YTUpload(file, title, description, keywords, category, privacyStatus):
    command = [
        'python',
        'upload_video.py',
        '--file', file,
        '--title', title,
        '--description', description,
        '--keywords', keywords,
        '--category', category,
        '--privacyStatus', privacyStatus,
        '--noauth_local_webserver'
    ]
    subprocess.run(command, check=True)

关键改动说明:

  • 去掉了每个参数中的手动引号(比如f'--file="{file}"'改成'--file', file):列表模式下subprocess会自动处理参数的边界,不需要额外加引号,加了反而会让引号成为参数内容的一部分(比如文件名会变成带双引号的,导致找不到文件)。
  • 移除了' '.join(command)和shell=True:直接传递列表给subprocess.run,确保每个参数(包括带换行符的description)被完整传递给upload_video.py。
  • 可选:加上check=True可以在命令执行失败时主动抛出异常,方便你捕获错误(原来的try-except也能生效,但更严谨)。

调用部分的description = f"Line 1\nLine 2"不需要改动,换行符会被完整传递,最终YouTube上的描述会显示为两行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:08:15