On Sep 24, 7:34 am, Horse <[EMAIL PROTECTED]> wrote: > I've written a python script that copies a nightly Oracle backup file > to another server. Every couple days, the script fails with this > error message: > > Error copying Q:/Oradata/GISPROD/Backups/3UISN35R_1_1 to s:/gisprod/ > backups/3UISN35R_1_1 > [Errno 22] Invalid argument > > Here's the code for the function I'm running. The path names are all > correct, and it works *most of the time*. It only fails about once or > twice a week. Anyone know where I can get more info on this "errno 22 > invalid argument"? > > def CopyNewFiles(SOURCE_DIR, DEST_DIR): > global STATUS > try: > os.chdir(SOURCE_DIR) > for x in os.listdir(SOURCE_DIR): > int_time = os.stat(x)[stat.ST_CTIME] > str_time = time.ctime(int_time) > if datetime.date.fromtimestamp(int_time + 0.00) > > YESTERDAY: > try: > DEST_FILE = os.path.join(DEST_DIR, x) > logfile.write(" Copying " + SOURCE_DIR + x + " > to " + DEST_FILE + "\n") > logfile.flush() > if not os.path.isfile(DEST_FILE): > shutil.copy2(x, DEST_FILE)
I'm not sure of the error; but one possibility is that the source- directory contents may be modified by some other process, while you are looping here copying one-by-one the files. So a file 'x' could be present at the time you enter loop, but gone by the time you try the shutil.copy2. Again this is just a guess... Yet another possibility is 'x' is not a regular file (say in unix it could be a named pipe).. you can try adding a check for x (like os.path.isfile(x)) and copy only regular files. Karthik > else: > logfile.write(" File exists. Skipping. > \n") > logfile.flush() > except (IOError, os.error), why: > logfile.write("\n\nError copying " + SOURCE_DIR + > x + " to " + DEST_FILE + "\n\n") > logfile.write("\n" + str(why) + "\n") > logfile.flush() > STATUS = "FAILED" > except: > logfile.write("\n\nUnhandled error in CopyNewFiles\n\n") > logfile.write("SOURCE_DIR = " + SOURCE_DIR + "\n") > logfile.write("DEST_DIR = " + DEST_DIR + "\n") > logfile.flush() > STATUS = "FAILED" -- http://mail.python.org/mailman/listinfo/python-list