Чтобы открыть (), вам необходимо указать полный путь к файлу cookie.
В противном случае вы просто проверяете текущую рабочую директорию, в которой, очевидно, нет этого файла, поскольку она находится в папке cookie.
Я думаю, что следующий фрагмент кода должен помочь прояснить ситуацию:
full_path = os.path.join(os.getcwd(), "cookies", f)
cookies = pickle.load(open(full_path , "rb"))
Тип условного выражения должен быть выведен в целом - и лямбда-выражения всегда должны преобразовываться в определенного делегата или тип дерева выражений.
В Ваших последних двух примерах, компилятор знает то, во что он пытается преобразовать лямбда-выражение. В первом примере это пытается разработать тип целого условного выражения сначала.
бросок А в одном из ответвлений состоял бы достаточно в том хотя:
protected override Func<Stream> GetStream()
{
return someBool
? (Func<Stream>)
(() => EmbeddedResourceExtractor.GetFile("SomeFile1.ext"))
: () => EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
фиксация Sergio (теперь удаленный, но включенный ниже) будет работать , если Вы были рады оценить someBool
в то время, когда функция вызвана:
protected override Func<Stream> GetStream()
{
return () => someBool
? EmbeddedResourceExtractor.GetFile("SomeFile1.ext")
: EmbeddedResourceExtractor.GetFile("SomeFile2.ext");
}
В зависимости от синхронизации, существуют все виды различных способов зафиксировать пример, который Вы на самом деле дали, например,
protected override Func<Stream> GetStream()
{
string name = someBool ? "SomeFile1.ext" : "SomeFile2.ext";
return () => EmbeddedResourceExtractor.GetFile(name);
}
я предполагаю, что Ваш реальный код более сложен все же.
Это - позор до некоторой степени, что вывод типа C# не может быть более мощным - но это уже довольно сложно.