6545

tryステートメントを使用せずに、ファイルが存在するかどうかを確認するにはどうすればよいですか?

4

42 に答える 42

5975

チェックしている理由が のようなことができるようにするためである場合は、それを開こうとする前にif file_exists: open_it()a を使用する方が安全です。tryチェックしてから開くと、ファイルが削除または移動されるか、チェックしてから開こうとするまでの間の何かのリスクがあります。

ファイルをすぐに開く予定がない場合は、次を使用できますos.path.isfile

Truepath が既存の通常ファイルである場合に戻ります。これはシンボリック リンクに従うため、同じパスに対してislink ()isfile( ) の両方が true になる可能性があります。

import os.path
os.path.isfile(fname) 

ファイルであることを確認する必要がある場合。

Python 3.4 以降、pathlibモジュールはオブジェクト指向のアプローチを提供します ( pathlib2Python 2.7 にバックポートされました)。

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # file exists

ディレクトリを確認するには、次のようにします。

if my_file.is_dir():
    # directory exists

Pathファイルであるかディレクトリであるかに関係なく、オブジェクトが存在するかどうかを確認するには、次を使用しexists()ます。

if my_file.exists():
    # path exists

ブロックで使用resolve(strict=True)することもできます:try

try:
    my_abs_path = my_file.resolve(strict=True)
except FileNotFoundError:
    # doesn't exist
else:
    # exists
于 2008-09-17T12:57:51.127 に答える
2428

あなたはos.path.exists機能を持っています:

import os.path
os.path.exists(file_path)

これはファイルとディレクトリの両方を返しますTrueが、代わりに使用できます

os.path.isfile(file_path)

具体的にファイルであるかどうかをテストします。シンボリックリンクに従います。

于 2008-09-17T12:57:08.740 に答える
1125

とは異なりisfile()、ディレクトリに対してexists()を返しTrueます。したがって、プレーンファイルのみが必要なのか、ディレクトリも必要なのかに応じて、またはを使用しisfile()ますexists()。簡単な REPL 出力を次に示します。

>>> os.path.isfile("/etc/password.txt")
True
>>> os.path.isfile("/etc")
False
>>> os.path.isfile("/does/not/exist")
False
>>> os.path.exists("/etc/password.txt")
True
>>> os.path.exists("/etc")
True
>>> os.path.exists("/does/not/exist")
False
于 2008-09-17T15:01:14.853 に答える
814
import os

if os.path.isfile(filepath):
   print("File exists")
于 2008-09-17T12:55:48.807 に答える
402

os.path.isfile()と一緒に使用os.access()

import os

PATH = './file.txt'
if os.path.isfile(PATH) and os.access(PATH, os.R_OK):
    print("File exists and is readable")
else:
    print("Either the file is missing or not readable")
于 2012-01-16T05:57:12.017 に答える
336
import os
os.path.exists(path) # Returns whether the path (directory or file) exists or not
os.path.isfile(path) # Returns whether the file exists or not
于 2008-09-17T12:56:22.563 に答える
208

Python 3.4+には、オブジェクト指向のパス モジュールpathlibがあります。この新しいモジュールを使用すると、次のようにファイルが存在するかどうかを確認できます。

import pathlib
p = pathlib.Path('path/to/file')
if p.is_file():  # or p.is_dir() to see if it is a directory
    # do stuff

try/exceptファイルを開くときにブロックを使用できます (通常は使用する必要があります) 。

try:
    with p.open() as f:
        # do awesome stuff
except OSError:
    print('Well darn.')

pathlib モジュールには、便利なグロビング、ファイルの所有者のチェック、より簡単なパスの結合など、多くの優れた機能が含まれています。チェックする価値があります。古い Python (バージョン 2.6 以降) を使用している場合でも、pip を使用して pathlib をインストールできます。

# installs pathlib2 on older Python versions
# the original third-party module, pathlib, is no longer maintained.
pip install pathlib2

次に、次のようにインポートします。

# Older Python versions
import pathlib2 as pathlib
于 2014-02-08T02:38:42.560 に答える
166

これは、ファイルが存在するかどうかを確認する最も簡単な方法です。チェックたときにファイルが存在していたからといって、それを開く必要があるときにそこにあるとは限りません。

import os
fname = "foo.txt"
if os.path.isfile(fname):
    print("file does exist at this time")
else:
    print("no such file exists at this time")
于 2013-06-27T13:38:04.933 に答える
135

Python を使用して、try ステートメントを使用せずにファイルが存在するかどうかを確認するにはどうすればよいですか?

Python 3.4 以降で使用できるようPathになりました。ファイル名を使用してオブジェクトをインポートおよびインスタンス化し、メソッドをチェックしますis_file(これは、通常のファイルを指すシンボリック リンクに対しても True を返すことに注意してください)。

>>> from pathlib import Path
>>> Path('/').is_file()
False
>>> Path('/initrd.img').is_file()
True
>>> Path('/doesnotexist').is_file()
False

Python 2 を使用している場合は、pathlib モジュールを pypi からバックポートするか、モジュールからチェックpathlib2することができます。isfileos.path

>>> import os
>>> os.path.isfile('/')
False
>>> os.path.isfile('/initrd.img')
True
>>> os.path.isfile('/doesnotexist')
False

上記はおそらくここでの最も実用的な直接的な答えですが、競合状態の可能性があり (何を達成しようとしているかによって異なります)、基になる実装では が使用されていますtryが、Python ではtry実装のあらゆる場所で使用されています。

Python はtryあらゆる場所で使用されるため、Python を使用する実装を避ける理由はまったくありません。

ただし、この回答の残りの部分では、これらの警告を考慮しようとします。

より長く、より衒学的な答え

Python 3.4 以降で利用可能で、 の新しいPathオブジェクトを使用しますpathlib.existsディレクトリはファイルではないため、完全に正しくないことに注意してください(すべてがファイルであるというUNIXの意味を除いて)。

>>> from pathlib import Path
>>> root = Path('/')
>>> root.exists()
True

したがって、次を使用する必要がありますis_file

>>> root.is_file()
False

のヘルプは次のis_fileとおりです。

is_file(self)
    Whether this path is a regular file (also True for symlinks pointing
    to regular files).

それでは、ファイルであることがわかっているファイルを取得しましょう。

>>> import tempfile
>>> file = tempfile.NamedTemporaryFile()
>>> filepathobj = Path(file.name)
>>> filepathobj.is_file()
True
>>> filepathobj.exists()
True

デフォルトでNamedTemporaryFileは、ファイルを閉じるとファイルが削除されます (ファイルへの参照がなくなると、自動的に閉じられます)。

>>> del file
>>> filepathobj.exists()
False
>>> filepathobj.is_file()
False

ただし、実装を掘り下げると、次のようにis_file使用されていることがわかりますtry

def is_file(self):
    """
    Whether this path is a regular file (also True for symlinks pointing
    to regular files).
    """
    try:
        return S_ISREG(self.stat().st_mode)
    except OSError as e:
        if e.errno not in (ENOENT, ENOTDIR):
            raise
        # Path doesn't exist or is a broken symlink
        # (see https://bitbucket.org/pitrou/pathlib/issue/12/)
        return False

Race Conditions: トライが好きな理由

try競合状態を回避できるので気に入っています。を使用tryすると、ファイルがそこにあることを期待して単純にファイルを読み取ろうとし、そうでない場合は例外をキャッチして、意味のあるフォールバック動作を実行します。

ファイルを読み取ろうとする前にそのファイルが存在することを確認したい場合で、そのファイルを削除しようとしていて、複数のスレッドまたはプロセスを使用している可能性がある場合、または別のプログラムがそのファイルを認識していて削除できる可能性がある場合は、次の可能性があります。存在することを確認すると競合状態になります。これは、その状態(存在) が変化する前に競合状態で開くためです。

競合状態はデバッグが非常に困難です。これは、プログラムが失敗する原因となるウィンドウが非常に小さいためです。

しかし、これが動機である場合は、コンテキスト マネージャーを使用してステートメントの値を取得できます。trysuppress

try ステートメントを使用せずに競合状態を回避する:suppress

Python 3.4 はsuppressコンテキスト マネージャー (以前のignoreコンテキスト マネージャー) を提供します。これは、より少ない行で意味​​的にまったく同じことを行いますが、(少なくとも表面的には)tryステートメントを回避するという元の要求にも応えます。

from contextlib import suppress
from pathlib import Path

使用法:

>>> with suppress(OSError), Path('doesnotexist').open() as f:
...     for line in f:
...         print(line)
... 
>>>
>>> with suppress(OSError):
...     Path('doesnotexist').unlink()
... 
>>> 

以前の Python では、独自の を作成できsuppressましたが、 を使用しないと、try使用するよりも冗長になります。これは、代わりにコンテキストマネージャーを使用するため、Python 3.4より前に適用できるPythonのどのレベルでも使用しない唯一の答えだtryと思います。

class suppress(object):
    def __init__(self, *exceptions):
        self.exceptions = exceptions
    def __enter__(self):
        return self
    def __exit__(self, exc_type, exc_value, traceback):
        if exc_type is not None:
            return issubclass(exc_type, self.exceptions)

おそらく試してみると簡単です:

from contextlib import contextmanager

@contextmanager
def suppress(*exceptions):
    try:
        yield
    except exceptions:
        pass

「試してみない」という要求に合わないその他のオプション:

isfile

import os
os.path.isfile(path)

ドキュメントから:

os.path.isfile(path)

path が既存の通常ファイルの場合は True を返します。これはシンボリック リンクをたどるので、同じパスに対して と のislink()両方が成り立ちます。isfile()

しかし、この関数のソースを調べると、実際には try ステートメントが使用されていることがわかります。

# This follows symbolic links, so both islink() and isdir() can be true
# for the same path on systems that support symlinks
def isfile(path):
    """Test whether a path is a regular file"""
    try:
        st = os.stat(path)
    except os.error:
        return False
    return stat.S_ISREG(st.st_mode)
>>> OSError is os.error
True

指定されたパスを使用して統計を取得できるかOSErrorどうかを確認し、キャッチしてから、例外が発生しなかった場合はファイルかどうかを確認するだけです。

ファイルで何かを行う場合は、競合状態を回避するために、try-except を使用して直接試すことをお勧めします。

try:
    with open(path) as f:
        f.read()
except OSError:
    pass

os.access

Unix と Windows で利用できるのはos.accessですが、使用するにはフラグを渡す必要があり、ファイルとディレクトリを区別しません。これは、実際の呼び出しユーザーが昇格された特権環境でアクセスできるかどうかをテストするために使用されます。

import os
os.access(path, os.F_OK)

また、 と同じ競合状態の問題もありisfileます。ドキュメントから:

注: access() を使用して、ユーザーがファイルを実際に開く前に、たとえばファイルを開く権限があるかどうかを確認すると、セキュリティ ホールが作成されます。これは、ユーザーがファイルを確認してから開くまでの短い時間間隔を悪用して、ファイルを操作する可能性があるためです。EAFP 手法を使用することをお勧めします。例えば:

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()
return "some default data"

次のように書く方が良いです:

try:
    fp = open("myfile")
except IOError as e:
    if e.errno == errno.EACCES:
        return "some default data"
    # Not a permission error.
    raise
else:
    with fp:
        return fp.read()

の使用は避けてくださいos.access。これは、前述の高レベルのオブジェクトや関数よりもユーザー エラーの可能性が高い低レベルの関数です。

別の回答に対する批判:

別の答えは、これについてos.access次のように述べています。

個人的には、内部でネイティブ API を呼び出すため ("${PYTHON_SRC_DIR}/Modules/posixmodule.c" を介して)、これを好みますが、ユーザー エラーの可能性に対するゲートも開きます。また、他のバリアントほど Pythonic ではありません。 :

この回答は、正当な理由のない、非 Pythonic でエラーが発生しやすい方法を好むと述べています。ユーザーが低レベルの API を理解せずに使用することを奨励しているようです。

Trueまた、無条件に を返すことにより、すべての例外 (KeyboardInterruptおよび! を含む) を黙って渡すことを許可するコンテキスト マネージャーも作成しますSystemExit。これは、バグを隠す良い方法です。

これは、ユーザーが不適切な慣行を採用することを助長しているようです。

于 2015-08-11T03:54:25.493 に答える
134

tryステートメントを優先します。より良いスタイルと見なされ、競合状態を回避します。

私の言葉を信じないでください。この理論には多くの支持があります。ここにいくつかあります:

于 2009-11-04T00:48:06.243 に答える
94
import os
#Your path here e.g. "C:\Program Files\text.txt"
#For access purposes: "C:\\Program Files\\text.txt"
if os.path.exists("C:\..."):   
    print "File found!"
else:
    print "File not found!"

インポートosすると、オペレーティング システムでの標準アクションのナビゲートと実行が容易になります。

参照については、Python を使用してファイルが存在するかどうかを確認する方法も参照してください。

高レベルの操作が必要な場合は、 を使用しますshutil

于 2015-05-25T18:29:22.343 に答える
92

os.path.isfile()os.path.isdir()およびを使用したファイルとフォルダーのテストos.path.exists()

「パス」が有効なパスであると仮定すると、次の表は、ファイルとフォルダーの各関数によって返されるものを示しています。

ここに画像の説明を入力

ファイルが拡張子を取得するために使用する特定の種類のファイルであるかどうかをテストすることもできますos.path.splitext()(まだ知らない場合)。

>>> import os
>>> path = "path to a word document"
>>> os.path.isfile(path)
True
>>> os.path.splitext(path)[1] == ".docx" # test if the extension is .docx
True
于 2016-10-08T12:43:02.357 に答える
79

2016年、最良の方法はまだ使用していos.path.isfileます:

>>> os.path.isfile('/path/to/some/file.txt')

または Python 3 では、次を使用できますpathlib

import pathlib
path = pathlib.Path('/path/to/some/file.txt')
if path.is_file():
    ...
于 2016-02-24T12:44:10.810 に答える
72

try/except と の間に意味のある機能上の違いがあるようには見えないので、意味のあるisfile()方を使用する必要があります。

ファイルが存在する場合は、ファイルを読み取りたい場合は、

try:
    f = open(filepath)
except IOError:
    print 'Oh dear.'

ただし、ファイルが存在する場合に名前を変更したいだけで、開く必要がない場合は、次のようにします。

if os.path.isfile(filepath):
    os.rename(filepath, filepath + '.old')

ファイルに書き込みたい場合、それが存在しない場合は、

# python 2
if not os.path.isfile(filepath):
    f = open(filepath, 'w')

# python 3, x opens for exclusive creation, failing if the file already exists
try:
    f = open(filepath, 'wx')
except IOError:
    print 'file already exists'

ファイルのロックが必要な場合は、別の問題です。

于 2013-09-25T01:52:46.610 に答える
69

TL;DR
の 答えは次のとおりです:pathlibモジュール -- 1 行のコードで --

Pathlibは、ほぼすべてのファイル操作でおそらく最も最新で便利な方法です。ファイルまたはフォルダーの存在については、1 行のコードで十分です。

from pathlib import Path

if Path("myfile.txt").exists(): # works for both file and folders
    # do your cool stuff...

このpathlibモジュールは で導入されたPython 3.4ため、Python 3.4+ が必要です。この lib を使用すると、ファイルやフォルダーを操作する際の作業がはるかに簡単になり、使いやすくなります。これに関する詳細なドキュメントは次のとおりです ( https://docs.python. org/3/library/pathlib.html )。

ところで、パスを再利用する場合は、変数に割り当てることをお勧めします

そうなる

from pathlib import Path

p = Path("loc/of/myfile.txt")
if p.exists(): # works for both file and folders
    # do stuffs...
#reuse 'p' if needed.
于 2021-01-23T09:48:29.683 に答える
64

これを試すことができます(より安全です):

try:
    # http://effbot.org/zone/python-with-statement.htm
    # 'with' is safer to open a file
    with open('whatever.txt') as fh:
        # Do something with 'fh'
except IOError as e:
    print("({})".format(e))

出力は次のようになります。

([Errno 2] そのようなファイルまたはディレクトリはありません: 'whatever.txt')

次に、結果に応じて、プログラムはそこから実行を続けるか、必要に応じて停止するようにコーディングできます。

于 2011-01-25T23:00:01.193 に答える
54

私は常にtryandexceptステートメントを使用することをお勧めしますが、いくつかの可能性があります (私の個人的なお気に入りは の使用ですos.access)。

  1. ファイルを開いてみてください:

    ファイルを開くと、常にファイルの存在が確認されます。次のように関数を作成できます。

    def File_Existence(filepath):
        f = open(filepath)
        return True
    

    False の場合、Python の以降のバージョンでは未処理の IOError または OSError で実行が停止します。例外をキャッチするには、try except 句を使用する必要があります。もちろん、次のようにいつでもtryexcept` ステートメントを使用できます (考えさせてくれたhsandt に感謝します)。

    def File_Existence(filepath):
        try:
            f = open(filepath)
        except IOError, OSError: # Note OSError is for later versions of Python
            return False
    
        return True
    
  2. 使用os.path.exists(path):

    これにより、指定したものの存在がチェックされます。ただし、ファイルディレクトリをチェックするため、使用方法に注意してください。

    import os.path
    >>> os.path.exists("this/is/a/directory")
    True
    >>> os.path.exists("this/is/a/file.txt")
    True
    >>> os.path.exists("not/a/directory")
    False
    
  3. 使用os.access(path, mode):

    これにより、ファイルにアクセスできるかどうかがチェックされます。パーミッションをチェックします。os.py のドキュメントに基づいて、 と入力するos.F_OKと、パスの存在がチェックされます。ただし、これを使用すると、パーミッションのチェックとファイルを開くまでの時間を利用して、誰かがファイルを攻撃できるため、セキュリティ ホールが作成されます。パーミッションを確認する代わりに、直接ファイルを開く必要があります。( EAFPLBYP )。後でファイルを開かず、その存在を確認するだけの場合は、これを使用できます。

    とにかく、ここに:

    >>> import os
    >>> os.access("/is/a/file.txt", os.F_OK)
    True
    

また、ファイルの存在を確認できない方法が 2 つあります。問題はpermission deniedまたはになりますno such file or directory。をキャッチした場合はIOErrorIOError as e(私の最初のオプションのように) を設定しprint(e.args)、問題を特定できるように入力します。それが役立つことを願っています!:)

于 2014-12-26T20:05:32.250 に答える
41

さらに、os.access():

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()

、、R_OKおよび権限をテストするフラグ ( W_OKdoc )X_OK

于 2008-09-17T13:13:31.430 に答える
22
if os.path.isfile(path_to_file):
    try: 
        open(path_to_file)
            pass
    except IOError as e:
        print "Unable to open file"

例外を発生させることは、プログラムでフロー制御を行うための受け入れ可能な Pythonic アプローチであると考えられています。不足しているファイルを IOErrors で処理することを検討してください。この場合、ファイルは存在するがユーザーに読み取り権限がない場合、IOError 例外が発生します。

SRC: http://www.pfinn.net/python-check-if-file-exists.html

于 2015-04-28T02:45:31.913 に答える
22

NumPy を他の目的で既にインポートしている場合はpathlibospaths、 などの他のライブラリをインポートする必要はありません。

import numpy as np
np.DataSource().exists("path/to/your/file")

これは、その存在に基づいて true または false を返します。

于 2017-08-10T05:50:16.413 に答える
20

.なしでブライアンの提案を書くことができますtry:

from contextlib import suppress

with suppress(IOError), open('filename'):
    process()

suppressPython 3.4 の一部です。古いリリースでは、独自の抑制をすばやく記述できます。

from contextlib import contextmanager

@contextmanager
def suppress(*exceptions):
    try:
        yield
    except exceptions:
        pass
于 2014-02-10T21:30:20.503 に答える
18

私は約 10 年前から存在するパッケージの作成者であり、この質問に直接対処する機能を備えています。基本的に、Windows 以外のシステムを使用している場合は、 を使用Popenしてアクセスしますfind。ただし、Windows を使用している場合はfind、効率的なファイルシステム ウォーカーを使用してレプリケートします。

コード自体はブロックを使用しませんtry…オペレーティングシステムを決定し、「Unix」スタイルfindまたは手作りのfind. タイミング テストではtry、OS の判別が高速であることが示されたので、そこでは 1 つを使用しました (ただし、他の場所では使用しませんでした)。

>>> import pox
>>> pox.find('*python*', type='file', root=pox.homedir(), recurse=False)
['/Users/mmckerns/.python']

そしてドキュメント…</p>

>>> print pox.find.__doc__
find(patterns[,root,recurse,type]); Get path to a file or directory

    patterns: name or partial name string of items to search for
    root: path string of top-level directory to search
    recurse: if True, recurse down from root directory
    type: item filter; one of {None, file, dir, link, socket, block, char}
    verbose: if True, be a little verbose about the search

    On some OS, recursion can be specified by recursion depth (an integer).
    patterns can be specified with basic pattern matching. Additionally,
    multiple patterns can be specified by splitting patterns with a ';'
    For example:
        >>> find('pox*', root='..')
        ['/Users/foo/pox/pox', '/Users/foo/pox/scripts/pox_launcher.py']

        >>> find('*shutils*;*init*')
        ['/Users/foo/pox/pox/shutils.py', '/Users/foo/pox/pox/__init__.py']

>>>

見たい場合の実装は次のとおりです

于 2016-05-05T12:00:42.880 に答える
18

他の回答には正確に反映されていないわずかなバリエーションをもう1つ追加します。

file_pathこれは、存在Noneまたは空の文字列のケースを処理します。

def file_exists(file_path):
    if not file_path:
        return False
    elif not os.path.isfile(file_path):
        return False
    else:
        return True

Shahbaz からの提案に基づくバリアントの追加

def file_exists(file_path):
    if not file_path:
        return False
    else:
        return os.path.isfile(file_path)

Peter Wood からの提案に基づくバリアントの追加

def file_exists(file_path):
    return file_path and os.path.isfile(file_path):
于 2016-08-05T15:54:37.243 に答える
16

Linux コマンド ライン環境用の 1 行の Python コマンドを次に示します。私はそれほど熱心な Bash の男ではないので、これは非常に便利だと思います。

python -c "import os.path; print os.path.isfile('/path_to/file.xxx')"

これがお役に立てば幸いです。

于 2015-08-29T16:15:29.367 に答える
15

Python の「OS」ライブラリを使用できます。

>>> import os
>>> os.path.exists("C:\\Users\\####\\Desktop\\test.txt") 
True
>>> os.path.exists("C:\\Users\\####\\Desktop\\test.tx")
False
于 2014-12-20T15:21:40.383 に答える
15

try ステートメントを使用せずに、ファイルが存在するかどうかを確認するにはどうすればよいですか?

2016 年になっても、これは間違いなく、ファイルが存在するかどうか、およびそれがファイルであるかどうかの両方を確認する最も簡単な方法です。

import os
os.path.isfile('./file.txt')    # Returns True if exists, else False

isfileos.stat実際には、内部で andを使用する単なるヘルパー メソッドですstat.S_ISREG(mode)。これos.statは、ファイル、ディレクトリ、ソケット、バッファなどに関する詳細情報を提供する低レベルのメソッドです。os.stat の詳細はこちら

注:ただし、この方法ではファイルがロックされないため、コードが「チェック時から使用時まで」( TOCTTOU ) バグに対して脆弱になる可能性があります。

そのため、例外を発生させることは、プログラム内のフロー制御のための受け入れ可能な Pythonic アプローチであると見なされます。また、不足しているファイルをステートメントではなく IOErrors で処理することを検討する必要がありますif(単なるアドバイス)。

于 2016-12-02T06:39:08.737 に答える
11
import os.path

def isReadableFile(file_path, file_name):
    full_path = file_path + "/" + file_name
    try:
        if not os.path.exists(file_path):
            print "File path is invalid."
            return False
        elif not os.path.isfile(full_path):
            print "File does not exist."
            return False
        elif not os.access(full_path, os.R_OK):
            print "File cannot be read."
            return False
        else:
            print "File can be read."
            return True
    except IOError as ex:
        print "I/O error({0}): {1}".format(ex.errno, ex.strerror)
    except Error as ex:
        print "Error({0}): {1}".format(ex.errno, ex.strerror)
    return False
#------------------------------------------------------

path = "/usr/khaled/documents/puzzles"
fileName = "puzzle_1.txt"

isReadableFile(path, fileName)
于 2015-08-05T06:28:27.807 に答える
8

絶対にこれを使うべきです。

from os.path import exists

if exists("file") == True:
    print "File exists."
elif exists("file") == False:
    print "File doesn't exist."
于 2013-04-04T18:21:11.250 に答える
7
import os
path = /path/to/dir

root,dirs,files = os.walk(path).next()
if myfile in files:
   print "yes it exists"

これは、複数のファイルをチェックする場合に役立ちます。または、既存のリストとの交差/減算を行いたい場合。

于 2011-08-26T08:08:04.907 に答える
7

To check if a file exists,

from sys import argv

from os.path import exists
script, filename = argv
target = open(filename)
print "file exists: %r" % exists(filename)
于 2014-10-17T21:25:30.180 に答える
6

os.listdir を使用して、ファイルが特定のディレクトリにあるかどうかを確認できます。

import os
if 'file.ext' in os.listdir('dirpath'):
    #code
于 2016-06-08T12:45:32.343 に答える
5
import os

# for testing purpose args defaulted to current folder & file. 
# returns True if file found
def file_exists(FOLDER_PATH='../', FILE_NAME=__file__):
    return os.path.isdir(FOLDER_PATH) \
        and os.path.isfile(os.path.join(FOLDER_PATH, FILE_NAME))

基本的にはフォルダ チェック、次にos.path.joinを使用した適切なディレクトリ セパレータを使用したファイル チェックです。

于 2018-10-31T13:22:09.593 に答える