使用call方法使用多个args更改文件属性

时间:2015-02-03 11:18:56

标签: python subprocess

from subprocess import call

def change_attribute(filename,attrib):
try:
    call(["attrib ", attrib ,  filename])
except OSError as exception:
    raise exception

f1 = "D:\\Tests\\fileattrib\\file1.txt"
att = ["+s","+h"]
#att = "+s" // this works fine 
#time.sleep(5)
change_attribute(f1,att)

我有一个函数change_attribute()来更改文件属性。

在上面的脚本中,如果我将'list' att替换为'string'变量,则效果很好。

但如果我传递列表att,它会抛出异常"parameter format not correct

接受列表作为对方法的争议需要做出哪些更改。请在python中看到我作为新手。  任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:1)

call需要一个字符串数组,而不是包含字符串的数组,字符串数组和另一个字符串。

您可以通过执行

来解决这个问题
call(["attrib"] + attrib + ["filename"])