get a copy of a string leaving original intact

Fredrik Lundh fredrik at pythonware.com
Fri Oct 21 04:09:48 EDT 2005


"Bell, Kevin" wrote:

> I'm having trouble with something that seems like it should be simple.
>
> I need to copy a file, say "abc-1.tif" to another directory, but if it's
> in there already, I need to transfer it named "abc-2.tif" but I'm going
> about it all wrong.
>
> Here's what doesn't work: (I'll add the copy stuff from shutil after
> figuring out the basic string manipulation.)

define "doesn't work".

> import os
>
> source = r"C:\Source"
> target = r"P:\Target"
>
> files = os.listdir(source)
>
> for f in files:
>     if os.path.isfile(target + "\\" + f):      # if it already exists
>         print f + " exists"
>         s = f                                  # i'd like a copy to
> alter
>         s = s.replace("-1", "-2")
>         print "Altered it to be " + s
>         print source + "\\" + s, target + "\\" + s

did you mean

        print source + "\\" + f, target + "\\" + s

?

>     else:
>         print f + " IS NOT THERE YET"
>         print source + "\\" + f, target + "\\" + f  # use the original
>
> -- 
> http://mail.python.org/mailman/listinfo/python-list

btw, note that

        source + "\\" + f

is better written as

        os.path.join(source, f)

e.g.

    for f in os.listdir(source):
        sourcefile = os.path.join(source, f)
        targetfile = os.path.join(target, f)
        if os.path.isfile(targetfile):
            targetfile = os.path.join(target, f.replace("-1", "-2"))
        print "copy", sourcefile, "to", targetfile
        shutil.copy(sourcefile, targetfile)

</F>






More information about the Python-list mailing list