0

我想浏览 .py 文件所在的当前文件夹(python 2.7)。但是,它在我的 Eclipse 中有效,但在 cmd 中无效。下面是代码:

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时它不会创建任何文件。

4

1 回答 1

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 运行它时,无论你在当前目录中。

于 2012-08-10T00:49:48.537 回答