如何在python中的文件夹中生成自动增量?
How to generate auto increment in a folder in python?
我是 Python 的新手。任何人帮助如何生成 B00001、B00002、B00003 等自动递增......它可以使用特定文件夹中的按钮自动保存 excel 文件名。
我试过
global numXlsx
numXlsx = 1
wb.save(f'invoice/B{numXlsx}.xlsx')
numXlsx += 1
但是当我用不同的数据点击几次按钮时,它仍然会覆盖B1.xlsx文件。任何人都可以帮忙:)
您可以尝试使用全局变量并每次递增它。
尝试类似的东西:
(初始化为0)
global numXlsx # this is like your counter variable)
wb.save(f'folder/B{numXlsx}.xlsx')
numXlsx += 1 # Incrementing the variable so it does not overwrite the file as your code is doing
祝你有愉快的一天!
听起来你遇到的最大问题是每次按钮点击都是 re-starting 你的 python 脚本的执行,所以使用全局变量将不起作用,因为那不起作用' t 在执行过程中持续存在。在这种情况下,我建议在每次执行脚本时使用 pickle module 之类的东西来存储和重新加载计数器值。使用该模块,您的解决方案可能如下所示:
import pickle
from pathlib import Path
# creates file if it doesn't exist
myfile = Path("save.p")
myfile.touch(exist_ok=True)
persisted = {}
with (open(myfile, "rb")) as f:
try:
persisted = pickle.load(f)
except EOFError:
print("file was empty, nothing to load")
# use get() to avoid KeyError if key doesn't exist
if persisted.get('counter') is None:
persisted['counter'] = 1
wb.save(f"invoice/B{persisted.get('counter')}.xlsx")
persisted['counter'] += 1
# save everything back into the same file to be used next execution
pickle.dump(persisted, open(myfile, "wb"))
奖励:如果您希望在文件名中用零填充计数,请在保存文件时在大括号中使用 persisted.get('counter'):05d
。 5
表示您希望结果值至少有 5 个字符长,因此例如 2
将变为 00002
,而 111
将变为 00111
。
我是 Python 的新手。任何人帮助如何生成 B00001、B00002、B00003 等自动递增......它可以使用特定文件夹中的按钮自动保存 excel 文件名。
我试过
global numXlsx
numXlsx = 1
wb.save(f'invoice/B{numXlsx}.xlsx')
numXlsx += 1
但是当我用不同的数据点击几次按钮时,它仍然会覆盖B1.xlsx文件。任何人都可以帮忙:)
您可以尝试使用全局变量并每次递增它。 尝试类似的东西: (初始化为0)
global numXlsx # this is like your counter variable)
wb.save(f'folder/B{numXlsx}.xlsx')
numXlsx += 1 # Incrementing the variable so it does not overwrite the file as your code is doing
祝你有愉快的一天!
听起来你遇到的最大问题是每次按钮点击都是 re-starting 你的 python 脚本的执行,所以使用全局变量将不起作用,因为那不起作用' t 在执行过程中持续存在。在这种情况下,我建议在每次执行脚本时使用 pickle module 之类的东西来存储和重新加载计数器值。使用该模块,您的解决方案可能如下所示:
import pickle
from pathlib import Path
# creates file if it doesn't exist
myfile = Path("save.p")
myfile.touch(exist_ok=True)
persisted = {}
with (open(myfile, "rb")) as f:
try:
persisted = pickle.load(f)
except EOFError:
print("file was empty, nothing to load")
# use get() to avoid KeyError if key doesn't exist
if persisted.get('counter') is None:
persisted['counter'] = 1
wb.save(f"invoice/B{persisted.get('counter')}.xlsx")
persisted['counter'] += 1
# save everything back into the same file to be used next execution
pickle.dump(persisted, open(myfile, "wb"))
奖励:如果您希望在文件名中用零填充计数,请在保存文件时在大括号中使用 persisted.get('counter'):05d
。 5
表示您希望结果值至少有 5 个字符长,因此例如 2
将变为 00002
,而 111
将变为 00111
。