You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
invalid call of Windows API _popen() generating The input line is too long error message #53908
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/tjguk'closed_at=Nonecreated_at=<Date2010-08-27.11:42:17.599>labels= ['type-bug', 'OS-windows']
title='invalid call of Windows API _popen() generating The input\tline is too long error message'updated_at=<Date2019-04-26.19:41:53.020>user='https://github.com/ssbarnea'
Behavior: you get "The input line is too long." error message when you try to run an external process by using os.system(), subprocess.Popen() or other similar methods.
The real command line limit is 8192 under Windows and in most cases (if not all) the cause for getting this message is not the length.
The real cause is that if you even have a quote inside your command line you need to include the entire command in quote.
Even if this is caused by a bug on Windows that is present for more than ten years I think Python needs to workaround it by adding the quotes when they are needed.
This will prevent other developers from writing OS specific code in their Python programs in order to workaround this bug.
Python does not call _popen, though it does call cmd.exe (through CreateProcess) when shell=True in subprocess. Can you provide an example that shows this error occurring?
ssbarnea commented on Aug 27, 2010
ssbarneamannequin
MannequinAuthor
More actions
I'm currently building some samples (one that could be run on any Windows machine).
ssbarnea commented on Aug 27, 2010
ssbarneamannequin
MannequinAuthor
More actions
Here is a test file. It does contain 3 command lines that are similar but one of them is not working (cmd_2).
Thanks, sorin. This issue is at least affected by the fix to bpo-2304. I don't currently have an up-to-date version of 2.7 trunk on my windows VM, so I can't test your code there. (Note that 'import tee' needs to be removed before your test program will run.) Adding Tim and Brian to nosy so they can check it out. It is quite possible (even likely) that 2304 fixed this problem as well.
I'll pick this up and try to decide what's best to
do. I'm away from home for a few weeks and have only
intermittent internet access. Thanks, Sorin, for
a reproducible test case.
changed the title [-]invalid call of Windows API _popen() generating The input line is too long error message[/-][+]invalid call of Windows API _popen() generating The input line is too long error message[/+]on Aug 27, 2010
ssbarnea commented on Sep 13, 2010
ssbarneamannequin
MannequinAuthor
More actions
I made a small but important update to quote_command(), now it does quote the command line only under Windows because doing this under other platforms may break the command line.
Activity
ssbarnea commentedon Aug 27, 2010
Behavior: you get "The input line is too long." error message when you try to run an external process by using os.system(), subprocess.Popen() or other similar methods.
The real command line limit is 8192 under Windows and in most cases (if not all) the cause for getting this message is not the length.
The real cause is that if you even have a quote inside your command line you need to include the entire command in quote.
Here are some details:
http://stackoverflow.com/questions/682799/what-to-do-with-the-input-line-is-too-long-error-message/3583282#3583282
http://msdn.microsoft.com/en-us/library/96ayss4b.aspx (see comment)
Even if this is caused by a bug on Windows that is present for more than ten years I think Python needs to workaround it by adding the quotes when they are needed.
This will prevent other developers from writing OS specific code in their Python programs in order to workaround this bug.
bitdancer commentedon Aug 27, 2010
Python does not call _popen, though it does call cmd.exe (through CreateProcess) when shell=True in subprocess. Can you provide an example that shows this error occurring?
ssbarnea commentedon Aug 27, 2010
I'm currently building some samples (one that could be run on any Windows machine).
ssbarnea commentedon Aug 27, 2010
Here is a test file. It does contain 3 command lines that are similar but one of them is not working (cmd_2).
bitdancer commentedon Aug 27, 2010
Thanks, sorin. This issue is at least affected by the fix to bpo-2304. I don't currently have an up-to-date version of 2.7 trunk on my windows VM, so I can't test your code there. (Note that 'import tee' needs to be removed before your test program will run.) Adding Tim and Brian to nosy so they can check it out. It is quite possible (even likely) that 2304 fixed this problem as well.
ssbarnea commentedon Aug 27, 2010
True about tee, I forgot to remove it. By the way, in case the other patch does not solve the issue we can use the quote_command() from
http://github.com/ssbarnea/tendo/blob/master/tendo/tee.py to solve it.
tjguk commentedon Aug 27, 2010
I'll pick this up and try to decide what's best to
do. I'm away from home for a few weeks and have only
intermittent internet access. Thanks, Sorin, for
a reproducible test case.
[-]invalid call of Windows API _popen() generating The input line is too long error message[/-][+]invalid call of Windows API _popen() generating The input line is too long error message[/+]ssbarnea commentedon Sep 13, 2010
I made a small but important update to quote_command(), now it does quote the command line only under Windows because doing this under other platforms may break the command line.
BreamoreBoy commentedon Jul 15, 2014
@tim can you pick this up?
devdanzin commentedon Sep 21, 2025
Cannot reproduce on main (3.15) on Windows 11. Will close the issue unless someone can repro.