2012-08-10 189 views
0

我想穿過.py文件所在的當前文件夾(python 2.7)。但是,它在我的eclipse中工作,但不是在cmd中。下面是代碼:python os.path不能在CMD中工作,但在eclipse中工作

import os 
import sys 

def checkFiles(path): 

    fileDict = [] 
    for dirPath, dirNames, fileNames in os.walk(path): 
     for fileName in fileNames: 
      if os.path.splitext(fileName)[1] == '.entity': 
       fileDict.append(os.path.join(dirPath,fileName)) 
       print dirPath 
    return fileDict 

fileDict = [] 

fileDict = checkFiles('.') 

print fileDict 

現在我有這個文件夾下5個.entity文件,因此在打印時fileDict,它應該打印列表中的5個元素。然而,這在eclipse中可以正常工作,但它在cmd中向我返回一個空列表。任何人都可以幫我解決這個問題嗎?

哦順便說一句,我有另一個問題,當生成一個XML文件。我認爲它也有同樣的問題。當我使用eclipse時,它會正常工作,但是當我使用cmd時它不會創建任何文件。

回答

0

首先,不要使用字符串連接來加入路徑。使用os.path.join
其次,不要將\\用於路徑分隔符。 /是通用的,適用於Windows:

fileDict.append(os.path.join(dirPath, fileName)) 

然後當你怎麼稱呼它:

fileDict = checkFiles('.') 

而且也,你將要覆蓋列表,當你循環,通過使用相同的變量名:

for fileNames in fileNames: 

所以,這樣的事情:

def checkFiles(path): 
    fileDict = [] 
    for dirPath, dirNames, fileNames in os.walk(path): 
     for fileName in fileNames: 
      if os.path.splitext(fileName)[1] == '.entity': 
       fileDict.append(os.path.join(dirPath, fileName)) 
    return fileDict 

fileDict = checkFiles('.') 

注意:此腳本假定您的文件位於您正在運行腳本的位置之下... 不是腳本本身的位置。

C:\SomeDir> python C:\path\to\script.py 

...您的文件需要C:\SomeDir下和非C:\path\to\

當您運行通過Eclipse的腳本,當前工作目錄是工作區。但是,當你通過cmd運行它時,它就是你在currect目錄中的那個。

+0

非常感謝jdi,但是問題仍然存在。當在cmd下運行時,它仍然將fileDict作爲空列表([])打印給我。 – user1589003 2012-08-10 01:10:21

+0

你如何運行你的腳本? – jdi 2012-08-10 01:13:28

+0

c:\ python27> python c:\ users \ myusername \ workspace \ test.py – user1589003 2012-08-10 01:14:43

相關問題