472,954 Members | 1,775 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 472,954 software developers and data experts.

path backslash escaping trouble

Hi All,

I have these files; which are Merge Request (ClearCase) files that are
created by a Perl CGI script (being re-written in Python, as the HTML/
JavaScript have been mixed with Perl, maintainability is zero)

MergeType::::codefromlabel::::
BLname::::BUILDMODS::::
OldLname::::::::
BaseVersion::::6.9.1.24A::::
RequiredRelease::::6.10.1.3::::
Description::::::::
FixRelation::::::::
Dependencies::::::::
LpAffected::::No::::
CodeReview::::FirstName LastName::::
Testing::::Compile/Build;Designer;Smoketests;::::
OtherTesting::::::::
Vobs::::ipsupport;::::
Elements::::\ipsupport\ipbuild\Wizard\build.pl@@\m ain\buildmods\3::::

i read this whole file into a string so i can search for the value of
Elements which is
\ipsupport\ipbuild\Wizard\build.pl@@\main\buildmod s\3

but this path is escaped
\\ipsupport\\ipbuild\\Wizard\\build.pl@@\\main\\bu ildmods\\3

so when i try to escape a string containing that same path using any
of the os.path escaping methods doesnt
result in the correct escaped path. It either appends "C:\\" in front
of the string with all the backslashes escaped
or it converts the three(3) at then end to "x03" and a match doesnt
occur!

My question is, is there a function in Python that only escapes
backslashes?

Cheers

Jul 10 '07 #1
3 3331
placid <Bu****@gmail.comwrote:
>I have these files; [ ... ]

MergeType::::codefromlabel::::
BLname::::BUILDMODS::::
OldLname::::::::
BaseVersion::::6.9.1.24A::::
RequiredRelease::::6.10.1.3::::
Description::::::::
FixRelation::::::::
Dependencies::::::::
LpAffected::::No::::
CodeReview::::FirstName LastName::::
Testing::::Compile/Build;Designer;Smoketests;::::
OtherTesting::::::::
Vobs::::ipsupport;::::
Elements::::\ipsupport\ipbuild\Wizard\build.pl@@\ main\buildmods\3::::

i read this whole file into a string so i can search for the value of
Elements which is
\ipsupport\ipbuild\Wizard\build.pl@@\main\buildmo ds\3

but this path is escaped
\\ipsupport\\ipbuild\\Wizard\\build.pl@@\\main\\b uildmods\\3
How are you reading the file in? Are you absolutely sure that the
escaping appears *in the string*, and isn't being done by whatever
you're using to inspect it?

Consider:
>>s = open('/tmp/Elements').read()
s
'Elements::::\\ipsupport\\ipbuild\\Wizard\\build.p l@@\\main\\buildmods\\3::::\n'
>>len(s)
70

Now, if those backslashes had *really* been escaped, the string would be
length 77, wouldn't it?
>>s.find('\\\\')
-1

And find() can't find any double-backslashes in there.

--
\S -- si***@chiark.greenend.org.uk -- http://www.chaos.org.uk/~sion/
"Frankly I have no feelings towards penguins one way or the other"
-- Arthur C. Clarke
her nu becomež se bera eadward ofdun hlęddre heafdes bęce bump bump bump
Jul 10 '07 #2
En Mon, 09 Jul 2007 22:40:04 -0300, placid <Bu****@gmail.comescribió:
I have these files; which are Merge Request (ClearCase) files that are
created by a Perl CGI script (being re-written in Python, as the HTML/
JavaScript have been mixed with Perl, maintainability is zero)

MergeType::::codefromlabel::::
BLname::::BUILDMODS::::
OldLname::::::::
BaseVersion::::6.9.1.24A::::
RequiredRelease::::6.10.1.3::::
Description::::::::
FixRelation::::::::
Dependencies::::::::
LpAffected::::No::::
CodeReview::::FirstName LastName::::
Testing::::Compile/Build;Designer;Smoketests;::::
OtherTesting::::::::
Vobs::::ipsupport;::::
Elements::::\ipsupport\ipbuild\Wizard\build.pl@@\m ain\buildmods\3::::

i read this whole file into a string so i can search for the value of
Elements which is
\ipsupport\ipbuild\Wizard\build.pl@@\main\buildmod s\3

but this path is escaped
\\ipsupport\\ipbuild\\Wizard\\build.pl@@\\main\\bu ildmods\\3

so when i try to escape a string containing that same path using any
of the os.path escaping methods doesnt
result in the correct escaped path. It either appends "C:\\" in front
of the string with all the backslashes escaped
or it converts the three(3) at then end to "x03" and a match doesnt
occur!
You may be confused about the actual string contents: "a\\b" contains
exactly 3 characters, the second being a single backslash. The \ is the
escape character; to include an actual \ inside a string, you have to
double it. Another way is to use raw string literals (supressing escape
processing): r"a\\b" contains four characters.
See section 3.1.2 in the Python tutorial or the Reference (more
technical): http://docs.python.org/ref/strings.html

--
Gabriel Genellina

Jul 11 '07 #3
On Jul 11, 10:37 am, "Gabriel Genellina" <gagsl-...@yahoo.com.ar>
wrote:
En Mon, 09 Jul 2007 22:40:04 -0300, placid <Bul...@gmail.comescribió:
I have these files; which are Merge Request (ClearCase) files that are
created by a Perl CGI script (being re-written in Python, as the HTML/
JavaScript have been mixed with Perl, maintainability is zero)
MergeType::::codefromlabel::::
BLname::::BUILDMODS::::
OldLname::::::::
BaseVersion::::6.9.1.24A::::
RequiredRelease::::6.10.1.3::::
Description::::::::
FixRelation::::::::
Dependencies::::::::
LpAffected::::No::::
CodeReview::::FirstName LastName::::
Testing::::Compile/Build;Designer;Smoketests;::::
OtherTesting::::::::
Vobs::::ipsupport;::::
Elements::::\ipsupport\ipbuild\Wizard\build.pl@@\m ain\buildmods\3::::
i read this whole file into a string so i can search for the value of
Elements which is
\ipsupport\ipbuild\Wizard\build.pl@@\main\buildmod s\3
but this path is escaped
\\ipsupport\\ipbuild\\Wizard\\build.pl@@\\main\\bu ildmods\\3
so when i try to escape a string containing that same path using any
of the os.path escaping methods doesnt
result in the correct escaped path. It either appends "C:\\" in front
of the string with all the backslashes escaped
or it converts the three(3) at then end to "x03" and a match doesnt
occur!

You may be confused about the actual string contents: "a\\b" contains
exactly 3 characters, the second being a single backslash. The \ is the
escape character; to include an actual \ inside a string, you have to
double it. Another way is to use raw string literals (supressing escape
processing): r"a\\b" contains four characters.
See section 3.1.2 in the Python tutorial or the Reference (more
technical):http://docs.python.org/ref/strings.html

--
Gabriel
When a user submits a merge request the Python script creats a
subprocess and reads the stdout via a pipe (cleartool find ...) which
returns elements that have a particular label. These elements appeared
like;

\ipsupport\ipbuild\Wizard\build.pl@@\main\buildmod s\3

these elements are then checked againts previously submitted merge
requests to see if there are any merge requests that require the
same elements to be merged too. When the elements are read from the
stdout pipe of the subprocess the backslashes aren't escaped and
because these "paths" aren't real windows paths non of the os.path...
path escaping methods work!

Well i've solved the problem just by using pycleartool "links directly
against ClearCase libraries" which returns a tuple
containing (status,output,error) and the element paths in output are
properly escaped.

Thanks for the replies
Jul 12 '07 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: Aloysio Figueiredo | last post by:
I need to replace every ocurrence of '/' in s by '\/' in order to create a file named s. My first attempt was: s = '\/'.join(s.split('/')) but it doesn't work: >>> s = 'a/b' >>> s =...
1
by: Rich Strang | last post by:
Hi I need to pass a path to FindFirstFile() that is specified by the user, problem is that all \ characters need to be prefixed with another \, what is the easiest way to do this short of...
1
by: Matt | last post by:
In test() method: var path="C:\test\hello.txt"; //returns -1 for path.lastIndexOf("\\"). why?? var pos=path.lastIndexOf("\\"); //return -1 But in showFile() method: We are able to get the...
3
by: VK | last post by:
On Windows platforms path separator "\" collides with the script escape sign "\" Obvious and old way to prevent it is to double backslashes: "\\" But I'm curious if there is a reliable way to...
2
by: John Dann | last post by:
I guess there must be some convention or Windows specification for whether the backslash immediately preceding the file name in a full path string to a file is formally part of the path string or...
5
by: Yansky | last post by:
Hi, I'm trying to write a backslash as a text node into the style tag of a web page, but IE is not letting me(perhaps because of security or something?). I need to write a backslash because it is...
11
by: cybervigilante | last post by:
I can't seem to change the include path on my local winmachine no matter what I do. It comes up as includ_path .;C:\php5\pear in phpinfo() but there is no such file. I installed the WAMP package...
6
by: Konrad Hinsen | last post by:
I am trying to install Python from sources in my home directory on a Mac cluster (running MacOS X 10.4.8). The path to my home directory contains a blank, and since the installation procedure...
34
by: Alexnb | last post by:
Gerhard HƤring wrote: No, it didn't work, but it gave me some interesting feedback when I ran it in the shell. Heres what it told me: Traceback (most recent call last): File...
0
by: lllomh | last post by:
Define the method first this.state = { buttonBackgroundColor: 'green', isBlinking: false, // A new status is added to identify whether the button is blinking or not } autoStart=()=>{
2
by: DJRhino | last post by:
Was curious if anyone else was having this same issue or not.... I was just Up/Down graded to windows 11 and now my access combo boxes are not acting right. With win 10 I could start typing...
0
by: Aliciasmith | last post by:
In an age dominated by smartphones, having a mobile app for your business is no longer an option; it's a necessity. Whether you're a startup or an established enterprise, finding the right mobile app...
0
tracyyun
by: tracyyun | last post by:
Hello everyone, I have a question and would like some advice on network connectivity. I have one computer connected to my router via WiFi, but I have two other computers that I want to be able to...
3
NeoPa
by: NeoPa | last post by:
Introduction For this article I'll be using a very simple database which has Form (clsForm) & Report (clsReport) classes that simply handle making the calling Form invisible until the Form, or all...
1
by: Teri B | last post by:
Hi, I have created a sub-form Roles. In my course form the user selects the roles assigned to the course. 0ne-to-many. One course many roles. Then I created a report based on the Course form and...
0
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 1 Nov 2023 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM) Please note that the UK and Europe revert to winter time on...
3
by: nia12 | last post by:
Hi there, I am very new to Access so apologies if any of this is obvious/not clear. I am creating a data collection tool for health care employees to complete. It consists of a number of...
0
NeoPa
by: NeoPa | last post by:
Introduction For this article I'll be focusing on the Report (clsReport) class. This simply handles making the calling Form invisible until all of the Reports opened by it have been closed, when it...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.