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 に答える