import pandas as pd
import os
import pyautogui
import time
#查找未下载的文件名
def find_undownloadcode():
# 1.利用OS库遍历文件夹所有的文件名
downloaded_filenames = os.listdir("F:\\gupiaoziliao\\managerstock\\")
# 2.读取excel所有的股票代码
pd1 = pd.DataFrame(pd.read_excel("F:\\gupiaoziliao\\沪深A股.xlsx"))
all_stockcodes = list(pd1['证券代码'])
# 3.删除已下载的文件名
i = 0
while i < len(all_stockcodes):
if all_stockcodes[i] in downloaded_filenames:
del all_stockcodes[i]
i -= 1
i += 1
return all_stockcodes
undownload_codes = find_undownloadcode()
我能想到的是先将函数运行结果存入到excel,用的时候直接从excel中调用,但是感觉有点麻烦,不知道有没有其他的方法,不用把数据导出,就能达到这种效果的
利用上述代码,得出未下载的代码,后面一直调用undownload_codes列表里面的数据即可,而不用重复运行find_undownloadcode函数
运行结果不是在all_stockcodes里吗,不是return回来了吗,你放内存里放着就行,为什么要存excel?
你就搞个全局变量来接函数的返回值,里面存的不就是all_stockcodes了吗
一定是全局变量,不要局部变量,否则函数执行完变量释放了你又找不到这个值了
总之变量不释放这个值就一直在,不用存来存去的
如果是本次运行过程中,其他地方需要使用undownload_codes 列表数据,是可以直接使用的。
如果是想多次运行,使用undownload_codes 列表内容的话,就可以
把undownload_codes 列表内容存文件中,每次运行前先读取文件中的列表数据,如果不存在数据,再调用find_undownloadcode方法获取数据。
现在你的代码已经得到了undownload_codes,他就已经保存在内存中了。后续用的话只需要用undownload_codes就行了,比如print(undownload_codes) 这样是不会再去调用函数的,只会读出保存在内存中的函数的返回结果
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!