What I am trying to do is pretty simple. I want to call the following command using python\'s subprocess
module.
cat /path/to/file_A > file_B
>
output redirection is a shell feature, but subprocess.call()
with an args
list and shell=False
(the default) does not use a shell.
You'll have to use shell=True
here:
subprocess.call("cat /path/to/file_A > file_B", shell=True)
or better still, use subprocess
to redirect the output of a command to a file:
with open('file_B', 'w') as outfile:
subprocess.call(["cat", "/path/to/file_A"], stdout=outfile)
If you are simply copying a file, use the shutil.copyfile() function to have Python copy the file across:
import shutil
shutil.copyfile('/path/to/file_A', 'file_B')
Addition to Martijn's answer:
you can do the same thing as cat
yourself:
with open("/path/to/file_A") as file_A:
a_content = file_A.read()
with open("file_B", "w") as file_B:
file_B.write(a_content)