python - 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'')
提前致谢
解决方案
不要使用.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)
这通常是一个好主意,因为它完全避免了您遇到的问题。
推荐阅读
- inheritance - 在pyomo中获取一个实例来继承另一个实例的约束
- python - 根据值随机选择字典键
- javascript - 获取:名为“数据库”的 Firebase 服务已注册错误,即使我没有在任何地方导入 firebase/database
- vue.js - SPA 调用 NET Core Rest API 进行外部身份验证 (OAuth)
- amazon-web-services - 允许来自奴隶詹金斯的流量的过滤规则是什么?
- java - 使用 'fetch.into(MyClass.class)' 时 jOOQ 配置为空
- php - 如何在 mysql 查询中使用选择选项值作为 from 的来源
- mysql - 无法使用 PD9 在 mysql ddl 生成中生成外键
- xunit - 如何根据测试类中的某些布尔条件跳过 xUnit.net 测试?
- php - 如何通过从 wordpress 中的数据库中获取数据来创建下拉菜单?