子进程 cp returns 错误 - bufsize 必须是整数

Subprocess cp returns error - bufsize must be integer

我正在尝试从一个目录复制到另一个目录,并通过调用 'cp' 同时重命名它们,如下所示:

directories = ['/Users/Me/Folder1/File1.txt', '/Users/Me/Folder/File2.txt']
output = ['/Users/Me/Folder2/Hello.txt', 'Users/Me/Folder2/World.txt'] 
for in, out, in zip(directories, output):
    subprocess.call('cp', in, out)

但是 returns:

 File "./test.py", line 33, in <module>
    subprocess.call('cp', in, out)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 522, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 659, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

我做错了什么?

你有两个问题:

1 - subprocess.call() 需要 list 个参数,而不是多个参数:

#wrong
subprocess.call('cp', in, out)
#right
subprocess.call(['cp', in, out])

2 - in 是 python 保留关键字,将其更改为 inp:

#wrong
subprocess.call(['cp', in, out])
#right
subprocess.call(['cp', inp, out])