我的Beeware应用程序生成numpy数组,我将其保存为.npy
,并保存在Galaxy23
的Download
文件夹中。为了检查连续运行是否正常工作,在开发者模式下重新运行手机上的Beeware应用程序之前(连接到Windows 11上的PC)我用手机资源管理器手动删除所有.npy
文件,但在下一次运行中,我会遇到FileExistingError
崩溃,尽管所有.npy
文件都被删除,并且在Download
文件夹中看不到。手动清空Trash
文件夹没有帮助。直接从手机安装(未连接到PC)运行应用程序也会出现同样的问题。
为了能够在Galaxy23
上重新正确运行Beeware应用程序,我必须重新启动手机,然后再次正确生成.npy
文件。我将numpy
与python 3.8.1
一起使用如果我以.txt
保存numpy数组,也会出现同样的问题
当我在Beeware emulator
上使用相同的文件和相同的文件夹运行相同的Beeware应用程序时,问题并没有出现。
谁能给予我一个方向,我做错了什么?任何建议或提示将不胜感激。
**更新:**基于下面blackapps
给出的答案所提供的理解,我发现了一个简单的解决方法,对我来说效果很好。其思想如下:每当我想删除一个文件,比如my_file.txt
,我首先将其重命名为junk.txt
。MediaStore会更新索引,因此my_file.txt
不再被索引。然后删除junk.txt
,现在可以重新创建my_file.txt
。唯一始终保持索引的文件是junk.txt
。我试过了,它似乎可以手动和编程完成这项工作。删除函数如下所示:
path="/storage/emulated/0/Documents/my_file.txt"
junk_path="/storage/emulated/0/Documents/junk.txt"
def delete_file():
try:
os.rename(path,junk_path)
os.remove(junk_path)
except FileNotFoundError:
pass
1条答案
按热度按时间t40tm48m1#
这些文件将已被媒体存储编入索引。
有许多草率的文件浏览器只删除文件,但不删除媒体存储中的条目。
只要它们在媒体存储中,就不能再次创建它们。
也删除媒体存储中的条目。
重新启动时,媒体存储会扫描整个存储,因此条目将消失。