"hyou"  wrote:

Hello,

I'm trying to write a script that simply execute a command line like:

C:\...(path)..\Devenv solution /build "Debug|Win32"

However, in Python the "|" symbol is reserved thus I just can't make the
command line above working once I added the "|" sign in it.

How can I put the "original" vertical bar in a string?

Thanks!


It would help if you mentioned which version of python you're using, and in what OS environment. I can guess you're running some Windows version because of the C:\ but the problem could also be different between XP and Vista, and certainly different between Windows95 and Windows 7.

It also would help if you actually showed what you tried, and what the response was. Cut and paste the command window text into your message.

I'm going to guess you did not mean "write a script that simply execute a command line like" but instead meant that the command line would be entered in a batch file, or at the command prompt, and that the python script was the first argument to the command line. In your case, the script is called "Devenv.py" and that you replaced most of its path with ellipses.

As far as I know, the vertical bar isn't a special character in Python at all. It is, however, special in CMD.EXE, the command interpreter for recent Windows versions. It is used to specify multiple programs on the same command line, where the stdout of the first is piped into the stdin of the next. Similarly, the > and < symbols are used to specify redirection, and the & symbol is used to separate two commands that are to be run sequentially.

CMD.EXE isn't the only shell available for Windows, but it's the standard one built into all the recent versions. So I'm guessing that's what you're using. If you're running a different one, such as 4NT, let us know.

In some versions of Windows, for example in XP, the | character is not special inside a quoted string. So the example you sort-of supplied would have no problem.

To demonstrate,  I created a trivial Python script  echo2.py:

import sys
print "Args are ---", sys.argv, "---"

Then the following is pasted from a CMD window:

M:\Programming\Python\sources\dummy>echo2 How are you?
Args are --- ['M:\\Programming\\Python\\sources\\dummy\\echo2.py', 'How', 'are',
'you?'] ---

M:\Programming\Python\sources\dummy>echo2 This has a "vertical|bar"
Args are --- ['M:\\Programming\\Python\\sources\\dummy\\echo2.py', 'This', 'has'
, 'a', 'vertical|bar'] ---

M:\Programming\Python\sources\dummy>echo2 This is not|quoted
'quoted' is not recognized as an internal or external command,
operable program or batch file.

Note that if you cannot do matching quotes, you can get some funny groupings of text. For example, if you have leading quotes but no trailing quotes, then the entire rest of the line will be one element of sys.argv.

DaveA

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to