annotate Lib/nturl2path.py @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 0ff5bd8ebb01
children b770796519f6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3725
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 #
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 # nturl2path convert a NT pathname to a file URL and
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 # vice versa
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 def url2pathname(url):
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 """ Convert a URL to a DOS path...
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 Currently only works for absolute paths
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
8
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 ///C|/foo/bar/spam.foo
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
10
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 becomes
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
13 C:\foo\bar\spam.foo
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 """
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 import string
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 comp = string.splitfields(url, '|')
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 if len(comp) != 2 or comp[0][-1] not in string.letters:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 error = 'Bad URL: ' + url
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 raise IOError, error
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 drive = string.upper(comp[0][-1])
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 components = string.splitfields(comp[1], '/')
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 path = drive + ':'
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 for comp in components:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 if comp:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 path = path + '\\' + comp
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 return path
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
27
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 def pathname2url(p):
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
29
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 """ Convert a DOS path name to a file url...
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 Currently only works for absolute paths
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 C:\foo\bar\spam.foo
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 becomes
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 ///C|/foo/bar/spam.foo
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 """
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
39
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 import string
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 comp = string.splitfields(p, ':')
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 if len(comp) != 2 or len(comp[0]) > 1:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 error = 'Bad path: ' + p
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 raise IOError, error
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
45
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 drive = string.upper(comp[0])
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 components = string.splitfields(comp[1], '\\')
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 path = '///' + drive + '|'
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 for comp in components:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 if comp:
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 path = path + '/' + comp
0ff5bd8ebb01 url2path for NT
Guido van Rossum <guido@python.org>
parents:
diff changeset
52 return path