file uploader
James T. Dennis
jadestar at idiom.com
Mon May 14 18:03:09 EDT 2007
Gabriel Genellina <gagsl-py2 at yahoo.com.ar> wrote:
> En Sun, 13 May 2007 18:41:16 -0300, Sick Monkey <sickcodemonkey at gmail.com>
> escribi?:
>> If anyone has a simpler way of checking to see if
>> a file already exists (prior to uploading to a server) and renaming it,
>> please let me know.
> I will ignore the "server" part...
>> Here is the code that I am using (it runs exactly the same as the linux
>> app
>> 'arcgen').
>> [...]
>> t = i-1
>> filename=string.replace(filename,".-%s" % (t),".-%s" % (i))
> If the original filename contained .-1 somewhere, you're modifying it.
> This is safer and shorter:
> import os,string
> filename = "whoa.mp3"
> dir_path = "/u01/"
> ofilename = filename
> i = 0
> while os.path.exists(dir_path+filename):
> filename = "%s.-%s" % (ofilename,i)
> i += 1
> req.write(filename)
Is it really safer? Couldn't their still be a race condition
(if some hostile process has write access to the directory in
which this is being attempted)?
Wouldn't it be safer to import tempfile, use the t=NamedTemporaryFile()
function therein and then use try: os.link(t.name, ...) except OSError:
to safely rename it?
Something like:
import os, tempfile
tdir = "/u01/"
tf = tempfile.NamedTemporaryFile(dir="/u01/"
i = 0
while 1:
try:
os.link(tf.name, os.path.join(tdir, filename)
except OSError:
i += 1
filename = "%s.-%s" % (filename, i)
else:
break
...???
--
Jim Dennis,
Starshine: Signed, Sealed, Delivered
More information about the Python-list
mailing list