首页 > 解决方案 > Python如何在引号中设置变量

问题描述

我目前正在 python 中编写一个小脚本,以使用 ffprobe 从我的 mp4 文件中获取元数据。问题是我需要在引号中传递文件名,请参阅:

ffprobe -print_format json -show_streams -show_format -loglevel quiet -hide_banner /home/mike/Desktop/2 Stars at Night.mp4

现在的情况:

import subprocess


def scrape(file):
    scrape_cmd = ('ffprobe -print_format json -show_streams -show_format -loglevel quiet -hide_banner '
                  f'{file}')
    result = subprocess.run(scrape_cmd.split(), capture_output=True)
    print(result)


scrape(file="'/home/mike/Desktop/2 Stars at Night.mp4'")

如何正确地将文件名传递给函数?作为它目前返回:

CompletedProcess(args=['ffprobe', '-print_format', 'json', '-show_streams', '-show_format', '-loglevel', 'quiet', '-hide_banner', "'/home/claris/Desktop/2", 'Stars', 'at', 'Night.m4v'"], returncode=1, stdout=b'', stderr=b'')

提前致谢

标签: python

解决方案


不要使用.split(); 相反,直接将您的命令指定为列表

scrape_cmd = ['ffprobe', '-print_format', 'json', '-show_streams', '-show_format',
              '-loglevel', 'quiet', '-hide_banner', file]
result = subprocess.run(scrape_cmd, capture_output=True)
print(result)

这通常是一个好主意,因为它完全避免了您遇到的问题。


推荐阅读