Перетаскивание файла на скрипт Python в Windows - избегайте использования обратной косой черты в аргументе Windows - PullRequest
1 голос
/ 13 февраля 2012

Я знаю все о том, как Windows использует обратную косую черту для имен файлов и т. Д., А Unix использует forward.Однако я никогда не использую обратную косую черту со строками, которые создаю в своем коде.Однако:

Когда проводник Windows «сбрасывает» файл на скрипт Python, передаваемая строка содержит обратную косую черту.Они преобразуются в escape-последовательности в строках в списке sys.argv, и тогда у меня нет возможности изменить их после этого (откройте для предложений там)

Есть ли способ, которым я могу как-то заставить Windows передавать буквальную строкуили ... каким-то другим способом я могу решить эту проблему?

Я бы хотел, чтобы мой сценарий можно было сбрасывать, но единственное, что мешает мне, это обратная косая черта в Windows.

РЕДАКТИРОВАТЬ:

Извините всех, ошибка была на самом деле не в передаче строки - как кто-то указал ниже, но это может помочь кому-то еще:

Убедитесь, что вы используете абсолютные имена путей, потому что когда оболочка WindowsНЕ будет запускать скрипт в текущем каталоге, как в командной строке.Это приводит к ошибкам с отказом в разрешении при попытке записи в однокомпонентные пути, которые не являются абсолютными.

1 Ответ

0 голосов
/ 13 февраля 2012

Невозможно воспроизвести. Это:

import os, sys
print sys.argv
print map(os.path.exists, sys.argv)
raw_input()

дает мне это:

['D:\\workspaces\\generic\\SO_Python\\9266551.py', 'D:\\workspaces\\generic\\SO_Python\\9254991.py']
[True, True]

после сброса второго файла на первый. Python 2.7.2 (в Windows). Можете ли вы попробовать этот код?

...