Python 每次调用轮换文件的函数

Python function that rotates files per call

我正在为一个项目使用 OAuth,并且在单独的 csv 文件中有三组用于访问的密钥。有没有办法编写一个函数,每次调用该函数时都会访问三个文件之一(按顺序,1、2、3,重复)?我能想到的唯一方法 "without global variables" 是在我的主函数中添加某种变量来跟踪。但是,我无法破解/google-fu 我的方法。

在代码开头使用 iter 创建文件名的迭代器:

names = iter([1,2,3])
print(next(names))
print(next(names))
print(next(names))
1
2
3

或itertools.cycle:

from itertools import cycle
names = cycle([1,2,3])
print(next(names))
print(next(names))
print(next(names))
print(next(names))
print(next(names))
print(next(names))
1
2
3
1
2
3

在您的函数中只需使用 with open next(names) as f:....,其中 names 包含 filenames/paths。

使用发电机:

def accessInSequence():
    while True:
        accessFileOne()
        yield
        accessFileTwo()
        yield
        accessFileThree()
        yield

mySequence = accessInSequence()
mySequence() #file 1
mySequence() #file 2
# ...