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
# ...
我正在为一个项目使用 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
# ...