【问题标题】:passing variables in cmd using python使用python在cmd中传递变量
【发布时间】:2015-11-16 01:18:00
【问题描述】:

我想在命令提示符中传递一些变量以及一些其他文本。我尝试使用此代码,但它不起作用。任何提示我可能做错了什么或我应该做什么?

有一个变量“v”存储了一个 URL,我想在 cmd 中传递这个 URL 和一些其他参数。我现在有这个代码。

working_directory = os.getcwd()
p = subprocess.Popen(['ffmpeg -i 'v' -c copy getit.mkv'], cwd=working_directory)
p.wait()

但是,这似乎不起作用。我不能传递变量“V”。当我删除引号时它只是粘贴 V

【问题讨论】:

    标签: python python-2.7 cmd subprocess


    【解决方案1】:

    将命令作为列表传递,如下所示:

    working_directory = os.getcwd()
    p = subprocess.Popen(['ffmpeg', '-i', v, '-c' 'copy' 'getit.mkv'], cwd=working_directory)
    p.wait()
    

    或者使用shlex.split() 应该可以正确处理这个问题:

    cmd = 'ffmpeg -i "{}" -c copy getit.mkv'.format(v)
    p = subprocess.Popen(shlex.split(cmd), cwd=working_directory)
    

    【讨论】:

    • @user2408212:当心,shlex may fail。仅使用它来获取命令的 draft 列表版本,您可以稍后手动对其进行微调。顺便说一句,在当前目录 (os.getcwd()) 中使用 cwd 有什么意义?
    【解决方案2】:

    要将变量传递到字符串中,您可以使用stringformat 方法:

    v = 'file.avi'
    p = subprocess.Popen(["ffmpeg -i {} -c copy getit.mkv".format(v)], cwd=working_directory)
    

    【讨论】:

    • 您在 v cariable 中使用“file.avi”。但是,就像我说的......它包含一个 url.. 因此脚本失败说它找不到指定的文件..
    • @user2408212 这只是一个示例,将“file.avi”更改为您要使用的文件路径。如果那是 url,你需要先下载它(或者在你的问题中询问如何通过 python 下载它)
    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 2021-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    相关资源
    最近更新 更多