我想在.py文件所在的当前文件夹(python 2.7)下浏览。但是,它可以在我的日食中运行,但不适用于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时它不会创建任何文件。答案 0 :(得分: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运行它时,它就在你当前的目录中。