files,folders,paths

Dave Angel davea at ieee.org
Mon Feb 14 10:43:02 CET 2011


On 01/-10/-28163 02:59 PM, ecu_jon wrote:
> this is a reply to both Dave Angel and Ben Finney. this version of
> testing i think incorperates what you guys are saying.
> <a href="http://thanksforallthefish.endofinternet.net/
> testing1.py">testin1.py</a>
> except maybe the os.join.path in the last function.
> here is the traceback
> Traceback (most recent call last):
>    File "I:\college\spring11\capstone-project\testing.py", line 88, in
> <module>
>      backupall()
>    File "I:\college\spring11\capstone-project\testing.py", line 84, in
> backupall
>      shutil.copy2(filesource, filedest1)
>    File "C:\Python27\lib\shutil.py", line 127, in copy2
>      copyfile(src, dst)
>    File "C:\Python27\lib\shutil.py", line 82, in copyfile
>      with open(dst, 'wb') as fdst:
> IOError: [Errno 2] No such file or directory: '//Mothera/week2\\jonI:\
> \college\\spring11\\capstone-project\\changelog.txt'
>
> it looks like it needs os.walk and the other for line to dig through
> the folders.
> this being the whole path
> I:\\college\\spring11\\capstone-project\\changelog.txt of source.
>

Simplify the code.


def weekChoice()
     return 1 + (datetime.now().day -1) // 7   #weeks go from 1 to 5

def backupall():
     source = source1()
     destination = destination2()
     print "copy tree ", source, destination
     if os.path.exists(destination):
         if os.path.isdir(destination):
             shutil.rmtree(destination)
	else:
             os.unlink(destination)
     shutil.copytree(source, destination)
     return

All that nonsense with curdir was messing up your thinking.


I'm not going to try to debug your destination2() function, but I would 
point out that when you use os.path.join(), please let it do the work 
for you.  It takes any number of arguments, and those arguments should 
not have extra slashes or backslashes in them.  The leading slashes are 
okay for the first node, if you want a unc.

It would have been much easier if you had made source and destination 
arguments to the backupall() function.  It then might have become clear 
that it's simply copytree(), with the extra requirement of deleting 
whatever used to be there.

Now if you aren't allowed to delete what was already there, then you 
can't use copytree, and need to start over with os.walk().

DaveA



More information about the Python-list mailing list