2013-06-18 146 views
2

我目前發現自己不僅需要在工作中學習python,還需要使用Windows機器來執行編碼以部署到Linux環境。與操作系統無關的文件系統訪問

我想要做的是,希望是一個簡單的任務。

在根目錄下有一個名爲'www'的子目錄(在我的Windows機器上,它是c:\ www),如果它不存在,我需要創建一個文件。

我能得到這個使用此代碼我的機器上工作: file = open('c:\\www\\' + result + '.txt', 'w'),其中「結果」是我要創建的文件名,它也是用這個代碼工作在Linux環境:file = open('www/' + result + '.txt', 'w')

如果有一種快速簡便的方法可以改變我的語法以在兩種環境中工作?

+0

一般提示:您可以使用斜槓,而不是反斜槓用於Windows,太(在Python腳本或API調用,而不是在外殼的,當然) –

+0

'import platform; platform.uname();'可以告訴你你目前在哪個操作系統,並且可以相應地切換你的變量... –

回答

5

您可能會發現os.path有用

os.path.join('/www', result + '.txt') 
+1

wouldnt你想''/ www「'確保它在基礎根目錄下?否則會相對於cwd? –

+0

在Windows環境中包含正斜槓對於將其轉到c:\ root是必需的。 –

0

對於OS獨立性則不應手動硬代碼或做任何事情OS具體,如路徑分隔符和等。這不是這兩個環境的問題,這是所有環境的問題:

import os 
... 
... 
#replace args as appropriate 
#See http://docs.python.org/2/library/os.path.html 
file_name = os.path.join("some_directory", "child of some_dir", "grand_child", "filename") 
try: 
    with open(file_name, 'w') as input: 
     .... #do your work here while the file is open 
     .... 
     pass #just for delimitting puporses 
    #the scope termination of the with will ensure file is closed 
except IOError as ioe: 
    #handle IOError if file couldnt be opened 
    #i.e. print "Couldn't open file: ", str(ioe) 
    pass #for delimitting purposes 

#resume your work