string to path problem

E

ecu_jon

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 ...). i am not sure what to do at this point. i have look at the
docs for string, and os.____ . i cant os.path.join anything if they
give me an absolute path. here is a bit of the code

import os,string,fnmatch,shutil,time,getpass,md5,ConfigParser
from datetime import *
from os.path import join, getsize

config = ConfigParser.ConfigParser()
config.read("config.ini")
source = config.get("myvars", "source")
destination = config.get("myvars", "destination")
helptext = config.get("myvars", "helptext")

def weekChoice():
dateNum = datetime.now().day
if dateNum <=7:
week = 1
elif (dateNum >= 8) and (dateNum <= 14):
week = 2
elif (dateNum >= 15) and (dateNum <= 21):
week = 3
elif dateNum > 22:
week = 4
else:
print "error"
return week

def destination1():
global destination
username = getpass.getuser()
week = weekChoice()
weekstr = "week"+str(week)
destination1 = os.path.join("//mothera","jon","week1") #where //
mothera is a samba server on the network
return destination1
print "source :",source
destination = destination1()
shutil.copy2(source, destination)


here is some of config.ini
[myvars]
source:c:\users\jon\backup
destination:
 
C

Chris Rebert

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
 
E

ecu_jon

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.
 
K

Kushal Kumaran

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:

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.
 
E

ecu_jon

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:


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.

well i changed a few minor things in the bigger problem, and c:\users
\jon\backup as the source worked fine. now to test it on winxp, where
the default has a space in the name.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,796
Messages
2,569,645
Members
45,367
Latest member
Monarch

Latest Threads

Top