2011-02-13 136 views
1

那麼我現在要做的就是加入一些在不可預知的結果

os.path.join('C:\path\to\folder', 'filename'). 

形式**編輯: 實際的代碼是:

filename = 'creepy_%s.pcl' % identifier 
file = open(os.path.join(self.cache_dir, filename), 'w') 

其中self.cache_dir從文件使用configobj(返回字符串)讀出並在所述特定情況下,是「\ Documents和Settings \管理員\爬行\緩存」

第一部分從一個configuratio返回n文件,使用configobj。第二個是2串狀的連接:「文件%s」%NAME

當我使用安裝Python解釋器在Windows中運行通過控制檯應用程序,我得到預期的結果是

C:\\path\\to\\folder\\filename 

當我捆綁在Windows中的可執行相同的應用程序和Python解釋器(版本相同,2.6),並運行應用程序的結果,而不是

C:\\path\\to\\folderfilename 

任何線索,可能是什麼問題,還是什麼話在輸出中導致這種不一致?

+0

剪切並粘貼導致問題的確切代碼行。您的代碼行無法生成列出的輸出。您示例中的輸出是「C:\\ path \ to \ x0colder \\ filename'`,它實際上在文件名之前具有正確的連接反斜槓。 – 2011-02-13 03:31:28

+0

好吧,我只是想表明結果是正確的。可能因爲我很幸運沒有任何以f或t.t.c開頭的文件夾或文件名。見上面的原始代碼 – ilektrojohn 2011-02-13 03:57:33

回答

0

您的代碼格式不正確。您需要加倍反斜槓或使用原始字符串。

os.path.join('C:\\path\\to\\folder', 'filename'). 

我不知道爲什麼它工作在一個解釋,而不是其他,但你的代碼將無法正確解釋爲是。奇怪的是我預料會有不同的輸出,例如:C:pathtofolder\filename

+0

事情就是它的同一位譯者。在一種情況下,它被正常訪問,另一種情況下,它在應用程序中被捆綁爲一個dll。 – ilektrojohn 2011-02-13 03:25:07

+0

「奇怪的是我期望有不同的輸出」:Yeap,那是奇怪的部分。但是,仍然需要添加第二個反斜槓才能正常工作。 – ilektrojohn 2011-02-13 03:43:40

0

這是令人驚訝的行爲。它沒有理由以這種方式行事。

只要保持謹慎,您可以將該行更改爲以下內容。

os.path.join(r'C:\path\to\folder\', 'filename'). 

注意r''原始字符串和最終\

0

三件事情可以做:

    在原始字符串
  1. 使用雙斜槓,「C:\\路徑\\到\\文件夾'

  2. 使用原始字符串,r'C:\ path \ to \ folder'

  3. 使用正斜槓, 'C:/路徑/到/文件夾'

0

昨天我看着辦吧。像往常一樣,當事情看起來很奇怪時,解釋非常簡單,大部分時間都會讓你變得愚蠢。

長話短說,有一些先前安裝在dist-packages中的剩菜。捆綁解釋器從那裏加載模塊,但是當我從終端運行python腳本時,當前目錄中的模塊(較新版本)已加載。因此「不可預知」的結果。