(sourcefilename, destfilename, copymode=True)
| 202 | |
| 203 | |
| 204 | def CopyFile(sourcefilename, destfilename, copymode=True): |
| 205 | msg.Verbose("CopyFile: \"{}\" to \"{}\"".format(sourcefilename, destfilename)) |
| 206 | if not os.path.exists(sourcefilename): |
| 207 | raise IOError("Can't copy file \"{}\": not found.".format(sourcefilename)) |
| 208 | usourcefilename = MakeUnicodePath(sourcefilename) |
| 209 | udestfilename = MakeUnicodePath(destfilename) |
| 210 | destdir = os.path.dirname(destfilename) |
| 211 | if not os.path.exists(destdir): |
| 212 | CreateDirectory(destdir) |
| 213 | last_error = None |
| 214 | for _ in range(_OS_RETRY_COUNT): |
| 215 | try: |
| 216 | shutil.copyfile(usourcefilename, udestfilename) |
| 217 | if copymode: |
| 218 | shutil.copymode(usourcefilename, udestfilename) |
| 219 | return True |
| 220 | except EnvironmentError as e: |
| 221 | last_error = e |
| 222 | time.sleep(1) |
| 223 | raise IOError("Can't copy file \"{}\" to \"{}\"!\nLast error: {}".format( |
| 224 | sourcefilename, destfilename, last_error)) |
| 225 | |
| 226 | |
| 227 | def CopyAllFiles(sourcedir, destdir, copymode=True): |
no test coverage detected