Почему мой исполняемый файл не следует по указанному пути в сценарии? - PullRequest
0 голосов
/ 08 января 2019

Итак, я создал исполняемый файл, который будет работать до того момента, когда его нужно открыть и записать в CSV-файл, ошибка:

FileNotFoundError: [Errno 2] Нет такого файла или каталога: 'P: \\ myfile \\ directory \\ sheet.csv'

[5520] Не удалось выполнить скрипт sheetcsv

Каталог существует, и скрипт выполняется в режиме отладки или из оболочки Python, он завершается ошибкой только в формате exe.

Я также заметил, что он печатает \\ между каталогами, это не так, как это выглядит в моем скрипте.

У меня есть теория, что exe-файл не может записывать на общий сетевой диск.

Я работаю на Windows 10, python3.7

мой код:

with open('P:\my\directory\sheet.csv', 'a', newline='') as csvfile:

1 Ответ

0 голосов
/ 08 января 2019

Вы должны изменить это на:

with open('P:/my/directory/sheet.csv', 'a', newline='') as csvfile:

Обратите внимание на изменение с \ на /

Строки Python рассматривают обратную косую черту как экранирующий символ. У вас есть много вариантов:

  • заменить \ на /

  • использование \\

  • использовать необработанные литералы, т.е.

  • использование os.path.sep

  • использование os.path.join

  • и т.д ..

В вашем случае я бы сказал, что проще всего просто заменить \ на / в качестве примера, который я вам дал.

В качестве примера попробуйте следующее:

print("mydir\nothing\table.csv")

Выход:

P:\mydir
othing  able

и вы увидите, что результат не соответствует ожиданиям, поскольку \n и \t были преобразованы в специальные символы:)

Как правило, избегайте использования обратной косой черты \ в строках, если вы не уверены, что происходит. Каталоги, разделенные /, будут обработаны правильно.

...