Python 正确使用try和except的方法打开多个

Python 正确使用try和except的方法打开多个,python,python-3.x,Python,Python 3.x,我有一个log.csv和db.csv文件。如果它们都包含相同的数字,则不会发生任何事情。如果db.csv的编号较大,则log.csv将使用与db.csv相同的编号进行更新 如果文件不存在,我当前的代码会通知丢失的文件。这是使用try和except的正确方法吗?或者我应该对每一个“with open”语句使用try和except吗 import time import os def locate(): while True: time.sleep(8)

我有一个log.csv和db.csv文件。如果它们都包含相同的数字,则不会发生任何事情。如果db.csv的编号较大,则log.csv将使用与db.csv相同的编号进行更新

如果文件不存在,我当前的代码会通知丢失的文件。这是使用try和except的正确方法吗?或者我应该对每一个“with open”语句使用try和except吗

import time
import os

def locate():

    while True:

        time.sleep(8)
        try:
            with open("log.csv", "rb") as f:  # Open local log for read
                for number in f:
                    log_number = number
                    with open("db.csv", "rb") as f2:  # Open db for write

                        # Will read database here
                        for first_line in f2:
                            db_number = first_line

                            if db_number > log_number:
                                print ("We have a new winner!")
                                with open("log.csv", "wb") as f:
                                    f.write(db_number)
                                    break
                            else:
                                print ("Number is the same.")
                                break
        except OSError as e:
            print (e)
            break

locate()

为什么不在一行上打开多个?在循环中重复打开任何文件,而实际上不依赖于循环变量,效率极低

with open("log.csv", "rb+") as log, open("db.csv", "rb") as db:
    for log_number in log:

但是,如果您确实想要一个合适的数据库,请使用
sqlite3
模块并在单个数据库文件中创建SQL表,而不是维护单独的文件。另外,选择用户已经存在的位置,或查找最大值都是简单的操作,谢谢。是的,我实际上在使用SQL Server。我将使用pyodbc而不是db.csv。