Subprocess cp returns error - bufsize must be integer [duplicate]
Publish date: 2024-05-02
![](https://cdn.statically.io/img/cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon@2.png)
I'm trying to copy from one directory to another, and rename them at the same time by calling 'cp' like so:
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)
But it 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
What am I doing wrong?
01 Answer
You've got two problems:
1 - subprocess.call()
expects a list
of arguments, not multiple arguments:
#wrong subprocess.call('cp', in, out) #right subprocess.call(['cp', in, out])
2 - in
is a python reserved keyword, change it to something like inp
:
#wrong subprocess.call(['cp', in, out]) #right subprocess.call(['cp', inp, out])
2ncG1vNJzZmirpJawrLvVnqmfpJ%2Bse6S7zGiorp2jqbawutJoam1pZWt%2Ben%2BOrKybqKKksKa%2F0maaqWWimsG2vs2sZJ6qoqS%2Fbq7Un6qispViura%2F02aZnmWZo8Gms8Sr