Serialization supports pathlib.Path object for the input argument (#18562)
authorHyungjoo Andrew Cho <phelahab@gmail.com>
Fri, 29 Mar 2019 03:49:43 +0000 (20:49 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Fri, 29 Mar 2019 04:01:15 +0000 (21:01 -0700)
Summary:
This will allow pathlib.Path object to the torch.load as an input argument.
Fixes #16607
Pull Request resolved: https://github.com/pytorch/pytorch/pull/18562

Differential Revision: D14668255

Pulled By: soumith

fbshipit-source-id: 0ae4f7c210918582912f2d1ef2a98f1ab288c540

torch/serialization.py

index ee92d8d..aabdf72 100644 (file)
@@ -377,10 +377,12 @@ def load(f, map_location=None, pickle_module=pickle, **pickle_load_args):
     """
     new_fd = False
     if isinstance(f, str) or \
-            (sys.version_info[0] == 2 and isinstance(f, unicode)) or \
-            (sys.version_info[0] == 3 and isinstance(f, pathlib.Path)):
+            (sys.version_info[0] == 2 and isinstance(f, unicode)):
         new_fd = True
         f = open(f, 'rb')
+    elif (sys.version_info[0] == 3 and isinstance(f, pathlib.Path)):
+        new_fd = True
+        f = f.open('rb')
     try:
         return _load(f, map_location, pickle_module, **pickle_load_args)
     finally: