diff --git a/fsl/utils/fslsub.py b/fsl/utils/fslsub.py
index aeb1420ae7dbbb8d704b682adacb4ff5b61c60e0..4a09f0828cb0bea65305c1e4272437fc4094b57f 100644
--- a/fsl/utils/fslsub.py
+++ b/fsl/utils/fslsub.py
@@ -495,9 +495,10 @@ def func_to_cmd(func, args=None, kwargs=None, tmp_dir=None, clean="never", verbo
         pickle.dump(('module', func.__module__, func.__name__,
                      args, kwargs), pickle_bytes)
 
-    _, filename = tempfile.mkstemp(prefix=func.__name__ + '_',
-                                   suffix='.py',
-                                   dir=tmp_dir)
+    handle, filename = tempfile.mkstemp(prefix=func.__name__ + '_',
+                                        suffix='.py',
+                                        dir=tmp_dir)
+    os.close(handle)
 
     verbose_script = f'\nprint("running {filename}")\n' if verbose else ''
     if clean == 'never':