2012-08-10 139 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

相关问题