2010-10-07 3 views

ответ

9

Зависит. Есть несколько частей стандартных библиотек Python, которые доступны только на определенных платформах. Эти части отмечены в документации Python.

Вы также должны быть осторожны с тем, как вы обрабатываете такие вещи, как пути к файлам - используя os.path.join() и такие, чтобы убедиться, что пути отформатированы правильно.

+0

Упомянуто для упоминания путей. – kindall

0

Да, если вы не используете модули, зависящие от os.

Edit: Мой ответ казалось коротким и не слишком точки на основе комментариев

Я не обращаясь портативными программированиями в целом.

Это будет означать уход за упаковкой и манипуляцией двоичными данными, проблемы с расширением, пути, как в windows/unix, «\ r \ n» в тексте Windows и многие другие.

Но что касается переносимости модулей python, нет никаких сомнений.

Они переносные.

Как правило, существуют модули, которые доступны только на конкретной платформе, и если вы их используете, ваша мобильность будет сокращена.

+0

-1: Разве это не так, как сказать, что все будет работать, за исключением бит, который не будет? –

+0

@ Lasse V. Karlsen: Не совсем. Возможно, я сделал короткий, короткий ответ. Но это означало то же самое, что и ответ, представленный Амбером выше. Существуют зависимые от os модули, которые, если вы используете в сценариях, не будут переноситься в другую ОС. Эти доступные для ОС модули хорошо документированы. – pyfunc

+0

Попробуйте пример «magic number 26» в моем ответе - он использует только встроенные функции. –

7

Вам нужно быть внимательным при чтении двоичных файлов. Всегда используйте режимы открытия файлов «rb», «wb» и т. Д. Вы можете уйти с 'r' и т. Д. В Unix/Linux/и т. Д., Но это действительно важно для Windows. Неинтуитивно, CSV-файлы являются двоичными.

Поучительное упражнение: выяснить, почему этот код производит 26 на Windows, а не 128, что он будет производить на коробке, отличной от Windows:

>>> s = ''.join(map(chr,range(128))) 
>>> len(s) 
128 
>>> f = open('junk.txt', 'w') 
>>> f.write(s) 
>>> f.close() 
>>> len(open('junk.txt').read()) 
26 

Избегайте жесткое кодирование пути к файлам.

Не предполагайте, что вы можете разбить unicode (или unicode с использованием utf8) на консоли и сделать его разборчивым или вообще.

Некоторые модули Python не устанавливаются автоматически на некоторых дистрибутивах Linux ... вам нужен отдельный пакет «dev».

Не совсем проблема с операционной системой, но некоторые операционные системы работают на бигдианских боксах, поэтому, если вы работаете над написанием/чтением двоичных форматов, вам нужно учитывать утверждение.

+0

Подсказка (для упражнения): попробуйте вручную пройти через вход и взгляните на таблицу ASCII. –

Смежные вопросы