2017-01-24 1 views
0

В настоящее время я пишу программу на python на компьютере с Windows, который использует selenium для загрузки pdf (используя novaPDF), а затем перезаписывает этот pdf с новым именем.Shuttil Python Копирование файлов на ограниченный общий диск

Тем не менее, загрузка и окончательное сохранение этого PDF-файла находятся на общем сетевом диске. У меня есть доступ к папкам, которые уместны, и любой пользователь, который будет использовать эту программу, также будет иметь доступ к правильным папкам.

С учетом сказанного, я могу загрузить файл отлично (в общий диск), но когда я пытаюсь запустить shutil.copy(curr, new), чтобы переименовать загруженный файл в соответствующее имя, я получаю IOError: [Errno 13] Permission denied. Я понял, что могу переместить или переименовать файл, но у меня возникают похожие проблемы, поэтому в настоящее время я копирую, а затем удаляю оригинал (открываем для его изменения).

Я думаю, что проблема связана с разрешениями на общий диск, но это очень хорошо. Я буду продолжать работать над этим самостоятельно и опубликую, если я получу решение, но не стесняйтесь задавать любые последующие вопросы. Помощь всегда приветствуется!

Спасибо!

+1

Является 'new' в другой каталог? Затем проверьте права. Любая вероятность, что вы случайно назвали 'curr' и' new' одинаковыми? – tdelaney

+0

curr и new не то же самое, потому что это работает иногда. Новый - это одна директория, глубже, чем curr. Кроме того, в настоящее время у меня он работает, где, если я получаю ошибку, она ждет секунду, а затем снова пытается. Кажется, что это работает –

+1

Похоже, что цель существует, и что-то ее открывает. Вы можете попробовать 'os.path.exists' отлаживать. – tdelaney

ответ

0

Это не совсем ответит на вопрос в широких масштабах, но я предоставлю некоторую информацию в целом, которая может помочь кому-то завершить аналогичный проект.

Трюк, казалось, ожидал, пока os.path.isfile вернется. Затем, подождите немного, подождите. Что я сделал, я закончил тем, что написал вспомогательную функцию, которая принимает этот метод, а затем вызывает его с заданным числом попыток. Казалось, что это хорошо работает, и это невероятно полезно в целом для селена, поскольку иногда страницы занимают немного больше времени, чем ожидалось.

Вот вспомогательная функция:

def helper_function(self, method, *args): 
    ''' 
    This method is a wrapper to allow calls to retry if the original 
    call fails 
    :return: the element if any 
    ''' 

    exception = None 

    for i in xrange(config.number_of_retries): 
     try: 
      element = method(*args) 
      return element 
     except Exception as e: 
      exception = e 
    raise Exception("Number of retries exceeded: " + repr(exception)) 
Смежные вопросы