Вы можете добавить проверку для каталога, как это непосредственно перед open
оператором
dir_path = 'folder_to_save_csv_file_in'
if not os.path.isdir(dir_path):
os.makedirs(dir_path)
with open('{file_path}.csv'.format(file_path=os.path.join(dir_path, file_name), 'w+') as csv_file:
....
Я думал об этом, и есть два способа, которые кажутся подходящими (конечно, есть и другие способы заставить его работать).
Вы меняете членство провайдер должен использовать свой собственный и использовать свой объект User для хранения всей информации.
Проблема с этим состоит в том, что он включает в себя много повторной реализации вещей, которые уже хорошо обрабатываются Asp.Net. Хорошо, что у вас есть один объект User со всеми подробностями.
При использовании этого метода вы будете использовать исходный поставщик членства для обработки имени пользователя и пароля, но вы связываете свой собственный объект User с этим, например, с именем пользователя, используя службу.
Это действительно легко настроить, вам просто нужно создать сервис, который будет использоваться следующим образом:
string userName = "Jon Skeet";
User user = new UserManagementServices().GetUserByUserName(userName);
Я расширил членство и создал свою собственную версию SqlMembershipProvider для сопоставления с моим существующим доменом, и теперь он работает хорошо.
MembershipUser - это, по сути, просмотр моей таблицы User. Мой расширенный класс MembershipUser включает свойства профиля / стиля учетной записи вместо использования системы SqlProfileProvider по умолчанию, которая немного хрупкая.
Я не смог использовать существующие таблицы членства или sprocs, но написал свою собственную. Например, SqlMembershipProvider использует GUID в качестве непрозрачного ключа, но производственная система использует простой старый тип int. Все даты указаны в формате UTC и т. Д.
Все дополнительные функции пользователя доступны через домен пользователя, а не через методы членства.
HTH.
В конце концов я написал своего собственного поставщика членства и реализовал его в трех отдельных решениях. Это чрезвычайно просто и намного, намного элегантнее, чем связывание пользователя с memberUser (что я тоже пробовал).
Прочтите это ...:
Создать настраиваемого поставщика членства для безопасности веб-сайта ASP.NET
А если вы хотите узнать больше, посмотрите это видео (с исходным кодом) .