1

valex.exists(path)を返し続ける理由がわかりません。つまり、None単独でテストすると正常に動作しますが、別のモジュールで使用するために呼び出すとNone、パス名が有効であるにもかかわらず、戻り続けます。

これが私のものvalex.exists(path)です:

def exists(path):
  # I've imported os already
  if os.path.exists(path):
    return "Exists"
  else:
    return None
4

4 に答える 4

1

これらのタイプの関数の場合 (関数が役に立たず、None を返すのは冗長ですが、一般的には冗長であるという事実に同意します)、1 行の if ステートメントを使用する方が明確だと思います。

def exists(path):
    return "Exists" if os.path.exists(path) else None
于 2012-08-21T21:27:24.920 に答える
0

次のコード (インポートが明示的に作成され、冗長なリターン None Lanaru が削除された例) は、インターウェブの私の側で問題なく動作します。私が走るときexists('C:/Python27')Exists返されます。を試しても同じことが起こりexists('C:\Python27')ます。

(上記のコード):

import os

def exists(path):
    if os.path.exists(path):
        return "Exists"

相対パスに関するコメントは正しいかもしれません。このコード スニペットは確かに問題ありません。

于 2012-08-21T21:09:51.003 に答える
0

これを説明できる可能性はいくつかあります。

  1. Python インタープリターは、ファイルが置かれているフォルダーへのアクセス許可を持っていない可能性があるため、ファイルが表示されません。または、システムで ACL を使用している場合、インタープリターがファイルを認識できないようにするルールが ACL に含まれている可能性があります。
  2. おそらく、あなたのコードは、あなたが思っているものを開こうとしていません。確認するためにファイルを開く前に、ファイル名を印刷するかログに記録します。
  3. ファイル エクスプローラーやlsコマンドなどで表示されるファイル名は、コードが探しているものと一致するように見えますが、実際には一致しません。たとえば、Unix では、バックスペース コントロールがファイル名に表示され、ls出力での表示方法が歪む可能性があります。また、似たような文字がファイル名に現れる可能性もあります。たとえば、キリル文字の 'a' とラテン語の 'a' は同じように見えます。
于 2012-08-21T21:20:42.753 に答える
0

「パス」を渡す方法に注意してください。

print exists('C:\temp\test.txt')
>>> None

print exists(r'C:\temp\test.txt')
>>> Exists

print exists('C:\\temp\\test.txt')
>>> Exists
于 2012-08-21T21:25:22.683 に答える