string to path problem

Kushal Kumaran kushal.kumaran+python at gmail.com
Mon Apr 4 11:06:49 CEST 2011


On Mon, Apr 4, 2011 at 9:48 AM, ecu_jon <hayesjdno3 at yahoo.com> wrote:
> On Apr 4, 12:17 am, Chris Rebert <c... at rebertia.com> wrote:
>> On Sun, Apr 3, 2011 at 8:30 PM, ecu_jon <hayesjd... at yahoo.com> wrote:
>> > i am writing a basic backup program for my school. so they wanted the
>> > possibility to be able to set source/destination from a config file.
>> > my source/destination was fine before, i would build it up with
>> > functions, like 1 that got the user-name, and put it all together with
>> > os.path.join. but if they set a source in the config file to something
>> > like c:\users\jon\backup  python tries to read from c:\\users\\jon\
>> > \backup, and throws out a read permission (because it doesn't
>> > exist ...).
>>
>> Please give the exact error message and full exception traceback that
>> you're getting.
>>
>> Cheers,
>> Chris
> Traceback (most recent call last):
>  File "I:\college\spring11\capstone-project\testing1.py", line 39, in
> <module>
>    shutil.copy2(source1, destination)
>  File "C:\Python27\lib\shutil.py", line 127, in copy2
>    copyfile(src, dst)
>  File "C:\Python27\lib\shutil.py", line 81, in copyfile
>    with open(src, 'rb') as fsrc:
> IOError: [Errno 13] Permission denied: 'c:\\users\\jon\\backup'
>
> i have permission to c:\users\jon\*
> but c:\\* obviously does not exist.

The extra backslashes in the string literal are there to "escape" the
required backslashes.  This is required because the backslash
character is used to introduce certain special characters in strings,
such as tabs and newlines.  The actual string does not contain the
extra backslashes.  This is documented in extensive detail in the
language reference:
http://docs.python.org/reference/lexical_analysis.html#string-literals.
 But you might want to start with the tutorial:
http://docs.python.org/tutorial/introduction.html#strings

Example:

>>> s = 'c:\\users\\jon\\backup'
>>> print s
c:\users\jon\backup
>>>

Is c:\users\jon\backup a directory?  The shutil.copyfile function will
only copy a file.  There is a shutil.copytree that will copy an entire
directory tree.

-- 
regards,
kushal



More information about the Python-list mailing list