Python将变量从文件加载到数组中
问题描述:
我正在制作一个reddit机器人,并且它已将它存储在数组中,因此它不会回复相同的注释两次,但是如果关闭程序数组被清除。Python将变量从文件加载到数组中
我正在寻找一种方法来保持数组,例如将其存储在外部文件中并阅读它,谢谢!
这里是我的代码:
import praw
import time
import random
import pickle
#logging into the Reddit API
r = praw.Reddit(user_agent="Random Number machine by /u/---")
print("Logging in...")
r.login(---,---, disable_warning=True)
print("Logged in.")
wordsToMatch = ["+randomnumber","+random number","+ randomnumber","+ random number"] #Words which the bot looks for.
cache = [] #If a comment ID is stored here, the bot will not reply back to the same post.
def run_bot():
print("Start of new loop.")
subreddit = r.get_subreddit(---) #Decides which sub-reddit to search for comments.
comments = subreddit.get_comments(limit=100) #Grabbing comments...
print(cache)
for comment in comments:
comment_text = comment.body.lower() #Stores the comment in a variable and lowers it.
isMatch = any(string in comment_text for string in wordsToMatch) #If the bot matches a comment with the wordsToMatch array.
if comment.id not in cache and isMatch: #If a comment is found and the ID isn't in the cache.
print("Comment found: {}".format(comment.id)) #Prints the following line to console, develepors see this only.
#comment.reply("Hey, I'm working!")
#cache.append(comment.id)
while True:
run_bot()
time.sleep(5)
答
你在寻找什么叫serialization。您可以使用json
或yaml
甚至pickle
。他们都有着非常相似的API:
import json
a = [1,2,3,4,5]
with open("/tmp/foo.json", "w") as fd:
json.dump(a, fd)
with open("/tmp/foo.json") as fd:
b = json.load(fd)
assert b == a
foo.json:
$ cat /tmp/foo.json
[1, 2, 3, 4, 5]
json
和yaml
只有基本类型,如字符串,数字,列表和字典的工作。 Pickle具有更多的灵活性,允许您序列化更复杂的类型,如类。 json
通常用于程序之间的通信,而yaml
倾向于在输入需要人工编辑/读取时使用。您可能需要json
。如果你想让它变得漂亮,可以选择json
库来缩进输出。
用'json.dumps'将列表写入文件 – Keatinge