我有以下代码,它使用 google gemini api 处理名为“pdf_texts_79_batch_#.txt”的文件。文件名中的“#”代表一个从 1 开始并依次递增的数字。我需要这样做,以便我可以运行代码,然后我可以将文件名中的数字更改为 onqecutive 数字,然后再次运行代码,所有这些都是自主的。例如,我的代码如下所示:
import google.generativeai as genai
import os
gemini_key = "ABCDEFG123456789"
genai.configure(api_key=gemini_key)
with open('pdf_texts_79_batch_1.txt', 'r', encoding='utf-8') as file:
input_text = file.read()
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
response = model.generate_content([
"""
Get rid of all instances of the letter "t".
""" + input_text
])
with open('extract-sections.txt', 'w', encoding='utf-8') as output_file:
output_file.write(response.text)
print("Output has been saved to extract-sections.txt")
运行该代码一次后,我会将“pdf_texts_79_batch_1.txt”更改为“pdf_texts_79_batch_2.txt”并再次运行该代码。由于 Gemini api 的令牌限制,我无法合并我的 txt 文件。
我尝试合并我的 txt 文件,但后来遇到了字符限制问题。通过字符限制的唯一方法是付费,但这很快就会变得非常昂贵。
你可以使用循环和字符串格式化来实现这个目标。以下是如何修改你的代码:
import google.generativeai as genai
import os
gemini_key = "ABCDEFG123456789"
genai.configure(api_key=gemini_key)
# 设置起始批次号
batch_start = 1
# 设置结束批次号
batch_end = 10
model = genai.GenerativeModel(model_name="gemini-1.5-pro")
# 循环遍历所有批次
for batch_num in range(batch_start, batch_end + 1):
# 使用字符串格式化构建文件名
input_filename = f"pdf_texts_79_batch_{batch_num}.txt"
# 检查文件是否存在
if not os.path.exists(input_filename):
print(f"文件 {input_filename} 不存在,跳过。")
continue
with open(input_filename, 'r', encoding='utf-8') as file:
input_text = file.read()
response = model.generate_content([
"""
Get rid of all instances of the letter "t".
""" + input_text
])
output_filename = f"extract-sections_batch_{batch_num}.txt"
with open(output_filename, 'w', encoding='utf-8') as output_file:
output_file.write(response.text)
print(f"批次 {batch_num} 的输出已保存到 {output_filename}")
print("所有批次处理完毕。")
这段代码做了以下几件事:
-
使用循环处理多个文件:
它使用
for
循环来迭代批次号,从batch_start
到batch_end
。 -
使用字符串格式化构建文件名:
它使用 f-string 来动态地创建文件名,例如
pdf_texts_79_batch_1.txt
,pdf_texts_79_batch_2.txt
等。 -
检查文件是否存在:
在尝试打开文件之前,它使用
os.path.exists()
检查文件是否存在。如果文件不存在,它会打印一条消息并跳过该文件。 -
为每个批次创建单独的输出文件:
它使用与输入文件名类似的格式为每个批次创建一个单独的输出文件,例如
extract-sections_batch_1.txt
,extract-sections_batch_2.txt
等。
要使用这段代码,你需要:
-
设置
batch_start
和batch_end
变量: 将batch_start
设置为第一个批次的编号,将batch_end
设置为最后一个批次的编号。 -
确保所有输入文件都存在:
确保所有名为
pdf_texts_79_batch_#.txt
的文件都存在于你的工作目录中,其中#
是从batch_start
到batch_end
的数字。
运行这段代码后,它会自动处理所有批次的文件,并将每个批次的输出保存到一个单独的文件中。
标签:python,api,automation,google-gemini From: 78818668