У меня есть много каталогов с текстовыми файлами, написанными с использованием (g) vim, и я написал несколько утилит, которые я нахожу полезными в Python. Я запускаю утилиты с помощью строки python pound-bang- / usr / bin / env, чтобы использовать Python, установленный под cygwin. Я хотел бы набрать команды, как это:
% cd ~ / SomeBook
% который pythonUtil
/ USR / местные / бен / pythonUtil
% pythonUtil ./infile.txt ./outfile.txt
(или% pythonUtil someRelPath / infile.txt somePossblyDifferentRelPath / outfile.txt)
pythonUtil: найдено infile.txt; Написание outfile.txt; Готово (или что-то подобное, если что-нибудь)
Однако мои программы на pythonUtil постоянно говорят мне, что не могут найти infile.txt. Если я скопирую утилиту в текущий рабочий каталог, все будет хорошо, но тогда у меня есть копии моих утилит, засоряющие ландшафт. Что мне делать?
Еще одно редактирование: Подводя итог - я хотел, чтобы был os.path.abspath ('имя файла'). Это возвращает абсолютный путь в виде строки, а затем вся неоднозначность была удалена.
НО: ЕСЛИ используемый Python является тем, который установлен под Cygwin, ТОГДА абсолютный путь будет относительным к CYGWIN-путям, например /home/someUser/someDir/someFile.txt. ОДНАКО, ЕСЛИ Python был установлен под Windows (и здесь он вызывается из командной строки терминала cygwin), ТОГДА абсолютный путь будет полным путем Windows, от «диска» и далее, например, D: \ cygwin \ home \ someUser \ someDir \ somefile.txt.
Мораль: не ожидайте, что Cygwin Python сгенерирует полный абсолютный путь к Windows для файла, который не имеет корня в /; это вне его горизонта событий. Однако вы можете обратиться к любому файлу в системе WinXP с помощью cygwin-python, если вы укажете путь к файлу, используя условное обозначение "/ cygdrive / driveLetter".
Примечание: не используйте '\' для разделителей в пути WinXP в командной строке cygwin; используйте '/' и доверяйте змее. Не знаю, почему, но некоторые разделители могут быть удалены, а путь может быть изменен, чтобы включить дополнительные уровни, такие как «Документы и настройки \ someUser» и другие глупости Windows.
Спасибо ответчикам за то, что подтолкнули меня в правильном направлении.