コード例 #1
0
 public override Stream OpenInputFileStream(string path)
 {
     if (IsRelativePath(path))
     {
         if (OnOpenInputFileStream != null)
         {
             OnOpenInputFileStream(path);
         }
         return(getDirectory().GetFile(path.Substring(2)).OpenRead());
     }
     else
     {
         return(innerPal.OpenInputFileStream(path));
     }
 }
コード例 #2
0
 public override Stream OpenInputFileStream(string path)
 {
     if (IsRelativePath(path))
     {
         path = RemoveDotSlash(path);
         var file = getDirectory().GetFile(path);
         if (OnOpenInputFileStream != null)
         {
             OnOpenInputFileStream(file.FullPath);
         }
         return(file.OpenRead());
     }
     else
     {
         return(innerPal.OpenInputFileStream(path));
     }
 }
コード例 #3
0
 private static Stream OpenFile(CodeContext /*!*/ context, PlatformAdaptationLayer pal, string name, FileMode fileMode, FileAccess fileAccess, FileShare fileShare)
 {
     try {
         return(pal.OpenInputFileStream(name, fileMode, fileAccess, fileShare));
     } catch (UnauthorizedAccessException e) {
         throw PythonFile.ToIoException(context, name, e);
     } catch (IOException e) {
         PythonFile.AddFilename(context, name, e);
         throw;
     }
 }
コード例 #4
0
 private static Stream OpenFile(CodeContext /*!*/ context, PlatformAdaptationLayer pal, string name, FileMode fileMode, FileAccess fileAccess, FileShare fileShare)
 {
     try {
         return(pal.OpenInputFileStream(name, fileMode, fileAccess, fileShare));
     } catch (UnauthorizedAccessException) {
         throw PythonOps.OSError(13, "Permission denied", name);
     } catch (IOException e) {
         AddFilename(context, name, e);
         throw;
     }
 }
コード例 #5
0
 private static Stream OpenFile(CodeContext /*!*/ context, PlatformAdaptationLayer pal, string name, FileMode fileMode, FileAccess fileAccess, FileShare fileShare)
 {
     if (string.IsNullOrWhiteSpace(name))
     {
         throw PythonOps.OSError(2, "No such file or directory", filename: name);
     }
     try {
         return(pal.OpenInputFileStream(name, fileMode, fileAccess, fileShare));
     } catch (UnauthorizedAccessException) {
         throw PythonOps.OSError(13, "Permission denied", name);
     } catch (FileNotFoundException) {
         throw PythonOps.OSError(2, "No such file or directory", name);
     } catch (IOException e) {
         AddFilename(context, name, e);
         throw;
     }
 }
コード例 #6
0
ファイル: imp.cs プロジェクト: dearman/iron-python
        private static PythonTuple FindModulePath(CodeContext /*!*/ context, string name, List path)
        {
            Debug.Assert(path != null);

            if (name == null)
            {
                throw PythonOps.TypeError("find_module() argument 1 must be string, not None");
            }

            PlatformAdaptationLayer pal = context.LanguageContext.DomainManager.Platform;

            foreach (object d in path)
            {
                string dir = d as string;
                if (dir == null)
                {
                    continue;               // skip invalid entries
                }
                string pathName = Path.Combine(dir, name);
                if (pal.DirectoryExists(pathName))
                {
                    if (pal.FileExists(Path.Combine(pathName, "__init__.py")))
                    {
                        return(PythonTuple.MakeTuple(null, pathName, PythonTuple.MakeTuple("", "", PackageDirectory)));
                    }
                }

                string fileName = pathName + ".py";
                if (pal.FileExists(fileName))
                {
                    Stream     fs = pal.OpenInputFileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                    PythonFile pf = PythonFile.Create(context, fs, fileName, "U");
                    return(PythonTuple.MakeTuple(pf, fileName, PythonTuple.MakeTuple(".py", "U", PythonSource)));
                }
            }
            throw PythonOps.ImportError("No module named {0}", name);
        }
コード例 #7
0
 internal Stream GetStream(string path)
 {
     return(_pal.OpenInputFileStream(path));
 }