Cannot create a new file
Peter Hansen
peter at engcorp.com
Tue Jun 22 05:44:56 EDT 2004
Eric Belanger wrote:
> Traceback (most recent call last):
> File "./hnbupdate", line 42, in ?
> localtousb()
> File "./hnbupdate", line 12, in localtousb
>
> shutil.copyfile("/home/bilange/usb/.hnb","/home/bilange/.hnb-backup/"+str(int(time.time())))
>
> File "/usr/local/lib/python2.3/shutil.py", line 38, in copyfile
> fdst = open(dst, 'wb')
> IOError: [Errno 2] No such file or directory:
> '/home/bilange/.hnb-backup/1087869914'
There's the problem... you can't copy to a non-existent directory.
I think in your first posting, you gave some misleading info, too.
You said that using os.system('cp ' + file1 + ' ' + file2) showed
a Python IOError, but I think it was this instead (with the full
filename instead of ...):
cp: cannot create regular file `/home/bilange/....': No such file or
directory
If that's true, the problem is the same there, though the error
comes from the cp program and not from Python.
What you probably want to do is use os.makedirs(). This will
create the directory, even recursively, if needed. It normally
throws an exception if the directory already exists though, so
you probably want to put all this in a nice function:
def mycopy(src, dst):
'''copies one file to another, quietly creating the dest dir
if required'''
dstdir = os.path.split(dst)[0]
try:
os.makedirs(dstdir)
except OSError:
pass # dir exists, ignore error
shutil.copyfile(src, dst)
# optionally copy access/modification time as well
shutil.copystat(src, dst)
-Peter
More information about the Python-list
mailing list