why doesn't is work?a script to backup a directory

O

obeeker

"""there is threee directories,one of these is used for the base
directory,decided by the user, default is d0"""

import shutil


#the three directories
d0='D:/Program Files/eb/mb/S'
d1='O:/eb/mb/S'
d2='P:/S/eb/mb/S'

#to backup
def update(base):
l=[d0,d1,d2]
l.remove(base)

for i in l:
shutil.rmtree(i)

for i in l:
shutil.copytree(base,i)

#use the base directory to invoke the update() func
def updateNow(base):
try:
if base=='d1':
update(d1)
elif base=='d2':
update(d2)
else:
update(d0)

except:
print "sth is wrong"
else:
print "OK!"

#promt user which is the base
if __name__ == '__main__':
print 'd0=',d0
print 'd1=',d1
print 'd2=',d2
base=raw_input("your base/standard directory is d0 d1 or d2 ?\n")
print base
updateNow(base)

raw_input('press Return>')
 
S

Steven D'Aprano

"""there is threee directories,one of these is used for the base
directory,decided by the user, default is d0"""

[snip code]

It doesn't work? Have you tried running it to see what it does? When you
do, please post a description of what it does, including any exception
tracebacks, and just as importantly, what you expect it to do.
 
O

obeeker

thank you for your suggestion and apologize for my mistake.
if i run it and answer the raw_input with "Enter" i get

sth is wrong
press Return>


i comment the try-except and run it and answer the raw_input with
"Enter"
and get message following:


Traceback (most recent call last):
File "G:\9\Eb\updateEbBb.py", line 41, in -toplevel-
updateNow(base)
File "G:\9\Eb\updateEbBb.py", line 28, in updateNow
update(d0)
File "G:\9\Eb\updateEbBb.py", line 16, in update
shutil.rmtree(i)
File "D:\Program Files\Python24\lib\shutil.py", line 155, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "D:\Program Files\Python24\lib\shutil.py", line 153, in rmtree
names = os.listdir(path)
WindowsError: [Errno 3] : 'O:/eb/mb/SCIL/*.*'
 
O

obeeker

please don't read the prevous post ,please read this one:


thank you for your suggestion and apologize for my mistake.
if i run it and answer the raw_input with "Enter" i get

sth is wrong
press Return>


i comment the try-except and run it and answer the raw_input with
"Enter"
and get message following:


Traceback (most recent call last):
File "G:\9\Eb\updateEbBb.py", line 41, in -toplevel-
updateNow(base)
File "G:\9\Eb\updateEbBb.py", line 28, in updateNow
update(d0)
File "G:\9\Eb\updateEbBb.py", line 16, in update
shutil.rmtree(i)
File "D:\Program Files\Python24\lib\shutil.py", line 155, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "D:\Program Files\Python24\lib\shutil.py", line 153, in rmtree
names = os.listdir(path)
WindowsError: [Errno 3] : 'O:/eb/mb/S/*.*'
 
F

Fredrik Lundh

please don't read the prevous post ,please read this one:

thank you for your suggestion and apologize for my mistake.
if i run it and answer the raw_input with "Enter" i get

sth is wrong
press Return>

i comment the try-except and run it and answer the raw_input with
"Enter"
and get message following:


Traceback (most recent call last):
File "G:\9\Eb\updateEbBb.py", line 41, in -toplevel-
updateNow(base)
File "G:\9\Eb\updateEbBb.py", line 28, in updateNow
update(d0)
File "G:\9\Eb\updateEbBb.py", line 16, in update
shutil.rmtree(i)
File "D:\Program Files\Python24\lib\shutil.py", line 155, in rmtree
onerror(os.listdir, path, sys.exc_info())
File "D:\Program Files\Python24\lib\shutil.py", line 153, in rmtree
names = os.listdir(path)
WindowsError: [Errno 3] : 'O:/eb/mb/S/*.*'

shutil.rmtree() expects a directory name, not a file pattern. if you leave
out the "*.*" part at the end, it should do what you want.

(assuming you want to remove the eb/mb/S directory, that is)

</F>
 
O

obeeker

i am very sorry .
the erroer was from my Portable Hard Disk
because its disk sign has changed from "o" to "h" ,from "p" to "i"
i'm very sorry
 
F

Fredrik Lundh

I said:
WindowsError: [Errno 3] : 'O:/eb/mb/S/*.*'

shutil.rmtree() expects a directory name, not a file pattern. if you leave
out the "*.*" part at the end, it should do what you want.

postscript: typically enough, I stumbled upon the same error message myself,
a day later. looks like it's Windows that adds the "*.*" thing to the path, all
by itself.

however, on my machine, I get a bit more information:

WindowsError: [Errno 3] The system cannot find the path specified:
'directory/*.*'

</F>
 

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,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top