Can you rename the source file first, then open it, then try to write the result to the original filename?
Then you can del all the OIIO Python objects and delete the original file after everything is done. (Or add an option to leave the source file as a backup for the user.) On Wed, Apr 11, 2018, 8:12 AM Stéphane Bertrand <[email protected]> wrote: > thx for your answer > > you right, i'm on Windows > i'm agree with you, my code is ugly with file path, it's just a crash code > simplification for my post > > the problem is with os.remove on original image > > if i launch my script in interactive mode, without the last two lines ( > os.remove and os.rename) > python -i compress_dwaa.py > so my python interprete still alive > > i can't delete by hand my file because : "file is open by python.exe > process" > > > 2018-04-11 17:01 GMT+02:00 Scott Wilson <[email protected]>: > >> Not sure if this will help you out, but out of curiosity, have you tried >> only deleting or renaming the file? From what I remember when I used oiio >> on Windows, I was able to do delete/rename. >> >> Also, here's some general Python tips: >> - Use os.splitext(path) to get everything leading up to the extension, >> and the .ext. For example "my file.ext" becomes ("my file", ".ext") >> - Use os.path.join(pathroot, filename) when joining paths, because it >> handled when the path root ends with a '/' or not. >> - Strong formatting is generally preferred to strong concatenation >> because it is usually faster, and can be more readable. For example: >> outfile = "{}.tmp{}".format(filename, ext) >> >> On Wed, Apr 11, 2018, 7:39 AM Stéphane Bertrand, <[email protected]> >> wrote: >> >>> hi all, >>> >>> i've this simple script, inpire by snippet in the docs : >>> >>> import os >>> import OpenImageIO as oiio >>> >>> >>> DIR_PATH = r"D:\Seq02\Scn01\Shot01\Left\pass\Decor\\" >>> IN_FILE = "Seq02_Scn01_Shot01_Decor_0000.exr" >>> >>> >>> ext = IN_FILE.rfind(".") >>> out_file = IN_FILE[:ext]+ ".tmp" + IN_FILE[ext:] >>> >>> >>> def write_image (image, filename, format=oiio.UNKNOWN) : >>> if not image.has_error : >>> image.set_write_format (format) >>> image.write (filename) >>> if image.has_error : >>> print("Error writing", filename, ":", image.geterror()) >>> >>> img = oiio.ImageBuf(DIR_PATH+IN_FILE) >>> img.specmod().attribute("compression", "dwaa") >>> write_image(img, DIR_PATH+out_file) >>> >>> os.remove(DIR_PATH+IN_FILE) >>> os.rename(DIR_PATH+out_file, DIR_PATH+IN_FILE) >>> >>> it's a simple script for inplace convert with dwa compression a EXR file >>> but i've a PermissionError, my own process have hands on my file >>> i'll try to add >>> img.reset(oiio.ImageSpec()) >>> for free my image >>> but not >>> >>> thx for your help >>> Stéphane >>> >>> >>> _______________________________________________ >>> Oiio-dev mailing list >>> [email protected] >>> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org >>> >> >> _______________________________________________ >> Oiio-dev mailing list >> [email protected] >> http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org >> >> > _______________________________________________ > Oiio-dev mailing list > [email protected] > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org >
_______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
