それが存在しない場合は、ファイルを作成し、それ以外の場合は何もしません

アミールA.シャバニ:

私は、そのスクリプトを持って、私は複数回実行されますが、このスクリプトの主な機能の最初の行は次のようなものです:

def main():
    users_csv_file_init()

何この関数はやるべきことは、このようなファイルが存在しない場合は、CSVファイルを作成し、列の名前を追加することであり、それがない場合、それは何もしないはずです。私が書いたことは、このでした:

def users_csv_file_init():
    with open("users.csv", 'a+') as output_file:
        writer = csv.writer(output_file)
        writer.writerow(["userid", "username", "fname", "lname", "uuid"])

それは新しい行(列の名前)私は、スクリプトを実行するたびに、作成しているので、それは、理にかなっているので、これは、失敗しa+、それが存在し、追加モードで開いていない場合は、ファイルを作成します。しかし、私はに変更することはできませんw+それはファイルで以前にいたすべてのものが削除されるため、どちらか。そして、のモードの中からopen()唯一w+a+思われるが存在しない場合は、ファイルを作成します。

ファイルが存在する場合、私は手動でこのように、チェックすることができます:

def users_csv_file_init():
    if not os.path.exists("users.csv"):
        with open("users.csv", 'w') as output_file:
            writer = csv.writer(output_file)
            writer.writerow(["userid", "username", "fname", "lname", "uuid"])

しかし、私は聞いています、それはこのようにそれを行うには競合状態にunpythonicとなりやすいのです。どのように私はそれを正しく行うことができますか?

どのように:

あなただけのキャッチできるFileExistsErrorと排他作成モードでファイルを開いてみてください。

ファイルがすでに存在する場合は失敗し、排他的な作成のために開きます

def users_csv_file_init():
    try:
        with open("users.csv", 'x') as output_file:
            writer = csv.writer(output_file)
            writer.writerow(["userid", "username", "fname", "lname", "uuid"])
    except FileExistsError:
        pass

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=280958&siteId=1