【问题标题】:subprocess call in pythonpython中的子进程调用
【发布时间】:2017-09-12 04:51:10
【问题描述】:

我需要在终端中对多个文件执行以下命令 SetFile -c "" -t "" <FileName> 所以我创建了一个 python 脚本,它将文件名作为参数并使用调用函数来执行命令。但我不知道如何将那些“”标记放在调用管道中。 这是代码

from subprocess import call
import sys # for sys.argv
def main():
    l = len(sys.argv)
    l = l - 1
    if(l>0):
        for i in range(l):
            termExecute(sys.argv[i])

def termExecute(argument):
    call(["SetFile", "-c ","","-t ","","argument"])

if __name__ == '__main__':
    main()

我很确定call(["SetFile", "-c ","","-t ","","argument"]) 是错误的,我希望知道正确的写法。

编辑:

Akuls-MacBook-Pro:~ akulsanthosh$ python3 /Users/akulsanthosh/Documents/Simple/Setfile.py /Volumes/akul/Stuff/1.jpg /Volumes/akul/Stuff/2.jpg /Volumes/akul/Stuff/3.jpg 
Invalid type or creator value: '""'
Invalid type or creator value: '""'
ERROR: File Not Found. (-43)  on file: argument 
Invalid type or creator value: '""'
Invalid type or creator value: '""'
ERROR: File Not Found. (-43)  on file: argument 
Invalid type or creator value: '""'
Invalid type or creator value: '""'
ERROR: File Not Found. (-43)  on file: argument

【问题讨论】:

  • @bulbus 错误:找不到文件。 (-43) 在文件上:“”-t“”错误:找不到文件。 (-43) 在文件上:错误:找不到文件。 (-43) 存档:参数
  • 对不起,无法在 cmets 中回答,所以将其作为答案

标签: python python-3.x subprocess


【解决方案1】:

call(["SetFile", "-c ",'""',"-t ",'""',"argument"])

Python 将'" 都视为有效的字符串分隔符,因此这是可能的。即便如此,您也可以转义引号。事实上,您在代码中使用了带有''__main__' 的字符串。

查看您遇到的错误后,我会尝试以下操作
call(["SetFile", "argument"])

【讨论】:

  • 无效类型或创建者值:'""' 无效类型或创建者值:'""' 错误:找不到文件。 (-43) 存档:参数
  • 您可以在您的 CMD/shell 中使用这些输入运行命令并将工作命令粘贴到此处吗?
  • 将工作命令(在 python 之外)添加到您的问题中,这样会更容易。
  • 我的意思是使用正确的文件名运行它并粘贴命令和输出。
  • 根据显示的错误Invalid type or creator value: 这与第一个错误不同。如果您发送它"",似乎 SetFile 会感到困惑。
【解决方案2】:

根据documentation,可以传递空字符串:

args 是所有调用所必需的,并且应该是一个字符串,或一系列程序参数。 通常首选提供一系列参数,因为它允许模块处理任何所需的参数转义和引用(例如,允许文件名中的空格)。 如果传递单个字符串,则任一 shell必须为 True(见下文),否则字符串必须简单地命名要执行的程序而不指定任何参数。

你也可以传递引号:“''”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2014-01-05
    • 2015-07-18
    • 2013-06-25
    • 2016-03-02
    相关资源
    最近更新 更多