Не удается открыть файл на общем сетевом ресурсе при 6-й попытке использования Python - PullRequest
2 голосов
/ 09 июля 2019

У меня есть скрипт, который записывает данные в общую папку на другом сервере.Я открываю отдельный файл для отдельных наборов данных на сетевом ресурсе и сохраняю его.Проблема в том, что после 5-го файла или около того в цикле открытие завершается неудачно с помощью:

Exception has occurred: OSError[Errno 22] Invalid argument: 
'\\\\file-storage\\storage\\waystar\\active\\ID-143892-Active.txt'
File "D:\AGB\test.py", line 7, in <module>
          with open(fn,'w') as f:

Я попытался сопоставить напрямую IP-адрес вместо имени общего сетевого ресурса.Я попытался сопоставить его с буквой диска на сервере.Я создал следующий тестовый код, который воспроизводит проблему.

import os
activedir=r'\\file-storage\storage\waystar\active'
IDs=['123457','123458','123459','143890','143891','143892']
for id in IDs:
    fn=activedir+r'\ID-'+id+'-Active.txt'    
    with open(fn,'w') as f:
        f.write("Hello World - what a bunch of crap.")

Я хотел бы знать, почему он не работает в последнем файле в списке.Первые 5 работают правильно и созданы.Последнее не так, и я получаю Errno22, как описано выше.

Я добавил блок try с предложением исключением, которое просто пытается снова открыть файл.Это имело интересный результат в отладчике.Если бы я остановил его в предложении "исключить" перед открытием и удалил один из ранее созданных файлов, он продолжил бы и создал следующий файл.Так что должно быть какое-то ограничение, мешающее мне создавать более 5 файлов одновременно?

import os
activedir=r'\\file-storage\storage\waystar\active'
IDs=['123457','123458','123459','143890','143891','143892']
for id in IDs:
    fn=activedir+r'\ID-'+id+'-Active.txt'    
    try:
        with open(fn,'w') as f:
            f.write("Hello World - what a bunch of crap.")
   except:
        with open(fn,'w') as f:
            f.write("Hello World - what a bunch of crap.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...