1

私はかなり単純な仕訳入力プログラムを書いています。ディレクトリが存在するかどうかを確認し、存在しない場合は作成する必要があります。

journal.py では、別のモジュールであるファイルをインポートしています。このモジュールは、ファイルとディレクトリの作成と削除を処理します

ジャーナル.py

if __name__ == '__main__':
    if files.testForDir('entries') == False:
        print 'Directory "entries" does not exist'
        print 'Attempting to create directory'
        files.createDir('entires')

files.py

def testForDir(dirname, path=os.getcwd()):
    pathtotest = os.path.join(path, dirname)
    return os.path.isdir(pathtotest)

def createDir(dirname, path=os.getcwd()):
    dirpath = os.path.join(path, dirname)
    try:
        os.mkdir(dirpath)
    except OSError as error:
        print error

私の問題: Ubuntu 内にディレクトリを作成すると、testForDir()は正しい結果を返します。/entries なしでプログラムを実行しても、正しく実行されます。os.mkdir()を使用してディレクトリを作成し、/entries が Ubuntu に表示されます。ただし、ディレクトリが os.mkdir() によって作成された後に実行すると testForDir ()は False を返し、フォルダーが既に存在するため OSError 例外が発生します。

問題を正式に提示し、繰り返します。os.mkdir()を使用してディレクトリを作成すると、os.path.isdir()はディレクトリが存在しないことを通知します。

システム情報: Ubuntu 12.04 LTS 32 ビット、Python 2.7。

ファイル構造: home/name/Programs/journal/.

ジャーナルには、entries.py(空白)、files.py、journal.py、entries(dir) が含まれています。

4

2 に答える 2

9

スペルミスがあります:

'entries' != 'entires'

複数の場所で同じ文字列をハードコーディングするのはやめてください (スペルミスはリスクの 1 つですが、後で変更するのは不必要に面倒です)。

これを変数に入れると、変数名のつづりを間違えると、Python が警告を発します。

于 2012-08-16T14:43:07.900 に答える
0

全体がもっと簡単になると思います:

try:
    somfunc(dirpath)
except:
    os.mkdir(dirpath)
    somfunc(dirpath)
于 2012-08-16T14:45:52.247 に答える