2010-12-30 30 views
1

os.path.existsが私に間違った答えを与えています。(python)os.path.exists os.path.isfileの嘘ですか?

私は窓にいるので、以下のリンクで議論したのと同じ問題はありません。 失敗する理由は他にありますか?

os.path.exists() lies

テストは*の.pyスクリプトが実行されますと、私は同じディレクトリにあるファイルに対してそれをテストしたときに[OK]を返しますが、そのサブディレクトリのどれも..

-EDIT-

絶対パスを使用しています。

私は、このスクリプトが実行されるときにサブディレクトリの1つを見ていて、Windowsエクスプローラでファイルの最終変更時刻フィールドが変更されていることを文字通り見ることができます。
私のコンピュータには他のものはありませんが、それは問題のファイルを修正すると思います。判明

def SaveIfNewer(doc, aiFile, pngFile): 
    options = win32com.client.Dispatch('Illustrator.ExportOptionsPNG24') 
    options.SetArtBoardClipping(True) 
    if (os.path.exists(pngFile)): 
     aiFileTime = os.stat(aiFile)[8] 
     pngFileTime = os.stat(pngFile)[8] 
     print("aiFileTime: ", aiFileTime, "pngFileTime: ", pngFileTime) 

     if(aiFileTime > pngFileTime): 
      os.remove(pngFile) 

    if(not os.path.isfile(pngFile)): 
     doc.Export(pngFile, constants.aiPNG24, options) 
     print 'exporting:', pngFile 
    else: 
     print 'skipping file:', pngFile 
+7

これらの間違った答えは何ですか?あなたの問題はリンクの問題と何が違うのですか?あなたのコードとサンプルのディレクトリレイアウトを教えてください。 – birryree

+0

絶対パスまたは相対パスを使用していますか?相対的であれば、getcwd()の返り値を確認してください。 –

答えて

1

、os.path.existsとos.path.isfileは、大文字と小文字が区別されます。..

何とか!

1

os.path.existsおよびos.path.isfileは、Windowsマシンでは大文字と小文字が区別されません。ここで

は(Pythonの2.7)私は、Windows 7で何を得るのです

>>> os.path.exists('C:/.rnd') 
True 
>>> os.path.exists('C:/.RND') 
True 
>>> os.path.isfile('C:/.rnd') 
True 
>>> os.path.isfile('C:/.RND') 
True 
+0

異なるバージョンかもしれませんが、私はこれについてPython-devで議論されている曖昧な記憶を持っています。 –

+0

私はc:\ a \ B \ c.txtとc:\ a \ b \ c.txtでテストし、私に異なる結果を与えました – eugene

関連する問題