'OSError: [Errno 63] File name too long while calling python subprocess
While running the following code I'm getting file name too long
import subprocess
import json
data = [{
  "id": 1,
  "first_name": "Janet",
  "last_name": "Tilbury",
  "email": "[email protected]",
  "gender": "Female",
  "ip_address": "181.83.28.51"
}, {
  "id": 2,
  "first_name": "Terrie",
  "last_name": "Reboulet",
  "email": "[email protected]",
  "gender": "Female",
  "ip_address": "75.209.60.68"
}]
bashCommand = 'java -cp . AESwithRSAEncryption %s' %json.dumps(data)
process = subprocess.Popen(bashCommand, stdout=subprocess.PIPE)
output, error = process.communicate()
print(output, error)
Following error, I'm getting
Traceback (most recent call last):
  File "encrypt.py", line 20, in <module>
    process = subprocess.Popen(bashCommand, stdout=subprocess.PIPE)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 858, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 1704, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 63] File name too long: 'java -cp . AESwithRSAEncryption [{"id": 1, "first_name": "Janet", "last_name": "Tilbury", "email": "[email protected]", "gender": "Female", "ip_address": "181.83.28.51"}, {"id": 2, "first_name": "Terrie", "last_name": "Reboulet", "email": "[email protected]", "gender": "Female", "ip_address": "75.209.60.68"}]'
Is there any way to solve this issue in python?
Solution 1:[1]
The first argument to Popen is supposed to be either
A list, consisting of a program name and its arguments,
A string, containing a program name, or
if
shell=Trueis used, a string containing a shell command.
You seem to be trying to use (3), but without using shell=True. Unless you really need the shell, I recommend going for (1) instead.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source | 
|---|---|
| Solution 1 | Ture PÄlsson | 
