[QGIS-Developer] Python ResourceWarning: unclosed file in Processing Plugin

Nyall Dawson nyall.dawson at gmail.com
Mon Sep 3 16:03:36 PDT 2018


On Tue, 4 Sep 2018 at 02:56, Martin Isenburg <martin.isenburg at gmail.com> wrote:
>
> Hello,
>
> as soon as I run any of my LAStools plugin scripts I get the WARNING "ResourceWarning" about an "unclosed file" shown below in the Python warning window. I use the call "output = subprocess.Popen(....)" to get the stderr output from the process so I can push it to the console once the subprocess is complete with the feedback.pushConsoleInfo(output.decode("utf-8")). Is it bad? Can I fix it? Should I ignore it?
>
> Complete code:
>
> https://github.com/rapidlasso/LAStoolsPluginQGIS3/blob/master/LAStools/LAStoolsUtils.py
>
> Regards.
>
> Martin
>
> 2018-09-03T18:34:08     WARNING    warning:C:/Users/isenburg/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\LAStools\LAStoolsUtils.py:60: ResourceWarning:
>
>              unclosed file
>
>              traceback: File "C:/Users/isenburg/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\LAStools\LAStoolsPipelines\flightlinesToDTMandSpikeFreeDSM.py", line 82, in processAlgorithm
>               LAStoolsUtils.runLAStools(commands, feedback)
>               File "C:/Users/isenburg/AppData/Roaming/QGIS/QGIS3\profiles\default/python/plugins\LAStools\LAStoolsUtils.py", line 60, in runLAStools
>               output = subprocess.Popen(commandline, shell=True, stdout=subprocess.PIPE, stdin=open(os.devnull), stderr=subprocess.STDOUT, universal_newlines=False).communicate()[0]

I think you need a:

output.wait()

after this line. See
https://stackoverflow.com/questions/23279941/closing-stdin-in-subprocess-popen

Nyall


>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer


More information about the QGIS-Developer mailing list