我有一个log.csv和db.csv文件。如果它们都包含相同的数字,则什么也不会发生。如果db.csv具有更大的数字,则log.csv将更新为与db.csv相同的数字

我当前的代码会通知缺少的文件(如果不存在)。这是使用try和except的正确方法吗?还是我应该尝试一下,但每个“ with open”语句除外?

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表,而不要维护单独的文件。另外,选择已经存在用户的位置或查找最大值都是直接的操作,然后

关于python - 正确使用try的方法,并且多次打开时除外,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49526528/

10-14 18:22
查看更多