2010-10-07 87 views

回答

9

取決於。 Python標準庫有幾個部分僅在某些平臺上可用。這些部分在Python文檔中註明。

您還需要小心如何處理文件路徑等事情 - 使用os.path.join()等以確保路徑格式正確。

+0

Upvoted提及路徑。 – kindall 2010-10-07 04:21:04

0

是的,除非你使用的是依賴os的模塊。

編輯:我的回答似乎短 並沒有太多的點基於 評論

我不是解決一般的便攜式編程。

這將意味着照顧二進制數據的打包和操作,c擴展問題,windows/unix中的路徑,windows文本中的「\ r \ n」等等。

但是關於python模塊的可移植性,沒有任何問題。

它們是便攜式的。

但是,有些模塊只能在特定平臺上使用,如果您使用它們,那麼可移植性將會降低。

+0

-1:這不就是說,除了那些不會的東西外,一切都會奏效嗎? – 2010-10-07 06:41:21

+0

@Lasse V. Karlsen:不是。我可能會做一個簡短的回覆。但這意味着與上面Amber提供的答案完全相同。如果你在腳本中使用的話,有一些操作系統依賴模塊,它不會在其他操作系統上移植。這些操作系統特定的可用模塊都有詳細記錄 – pyfunc 2010-10-07 06:55:36

+0

在我的答案中嘗試「幻數26」示例 - 它僅使用內置函數。 – 2010-10-07 07:04:22

7

閱讀二進制文件時需要小心。始終使用'rb','wb'等文件打開模式。你可以在Unix/Linux /等上使用'r'等,但它對Windows很重要。不直觀的是,CSV文件是二進制文件。

指導鍛鍊:鍛鍊身體爲什麼這個代碼在Windows上產生26來代替,這將產生在非Windows中的128:

>>> 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(或utf8編碼的unicode),並使其可讀或完全呈現。

某些Python模塊不會自動安裝在某些Linux發行版中......您需要單獨的「dev」軟件包。

不完全是操作系統問題,但某些操作系統在bigendian機器上運行,所以如果您正在編寫/讀取二進制格式的任何工作,則需要考慮排序。

+0

提示(練習):嘗試手動遍歷輸入,並查看ASCII表。 – 2010-10-08 03:54:15