什么是/tmp的Android等效项?如何获取Python脚本来使用它?

von4xj4u  于 2023-11-15  发布在  Android
关注(0)|答案(3)|浏览(142)

我尝试在Android上使用派力肯(python)(在termux中)。当pelican尝试写入/tmp时失败,据我所知,它不存在,并且/或者是一个只读文件系统。
错误来自os.py,位于makedirs(名称,模式)中

OSError: [Errno 30] Read-only file system: '/tmp'

字符串

  • 我如何告诉Android上的任何类型的脚本为/tmp使用不同的位置?
  • 如何告诉Android上的python(在Termux中)为/tmp使用不同的位置?
  • 在Android系统中,/tmp的等效项是什么?

正在编辑以回应重复的建议:
我觉得这个答案很有帮助,但它与这个问题无关。
我尝试了这里建议的指令:https://stackoverflow.com/a/18280309/608970,发现通过设置TMP、TMPDIR和TEMP,我确实可以为python更改/tmp并创建tmp文件,如果脚本使用tempfile模块的话。
显然,派力肯没有。这就留下了我最初的问题,在Android中,/tmp的模型是什么,我们如何移植任意脚本,它是否需要更改代码,或者可以通过更改代码工作的Android环境来修复?

zfciruhq

zfciruhq1#

根据https://stackoverflow.com/a/41105574/493161,它是/data/local/tmp,但我的经验是termux不能读取很多/大多数的文件和目录,可以使用adb从桌面上看到,并有写访问权限(我发现)以外的自己的文件。我建议mkdir $HOME/tmp代替,并使用它。
关于这个问题的其他一些答案有关于缺少/tmp的很好的信息。注意/data/local/tmp没有设置粘性(“t”)位,也没有像Linux那样对所有用户都有完全的读/写访问权。

jum4pzuy

jum4pzuy2#

对于许多用例来说,更好的解决方案是使用termux中内置的文件共享选项,参见https://wiki.termux.com/wiki/Sharing_Data

$ termux-setup-storage
$ cp test.png ~/storage/downloads
$ xdg-open ~/storage/downloads/test.png

字符串

83qze16e

83qze16e3#

作为开场白,我知道这是一个老问题,提问者可能已经离开了(很可能已经离开了),但我还是要回答这个问题,为了子孙后代,我还将使用Termux环境变量名来保持答案的简单性。
由于在现代Android版本中,应用程序似乎需要管理自己的临时文件,因此Termux使用TMPloud环境变量,在我写这篇文章时,该变量默认设置为/data/data/com.termux/files/usr/tmp,您可以在Python中使用它,只需引用整个目录名,然后(另一个正斜杠和)您需要的任何文件的名称。
我不打算介绍在Python中打开和关闭文件的确切语法,但是你可以自己用shell命令echo $TMPDIR验证路径,假设变量没有被重新分配。尽管你可能想在Python中将目录分配给一个变量作为一个字符串来速记。
如果你愿意的话,你可以使用一个额外的库,访问/tmp目录就像访问任何其他目录一样,所以你可以在其中进行通常的文件操作,包括创建和修改子目录。事实上,Termux wiki声明它“* 可以由用户自由修改 *”。它是常见Linux发行版中/tmp和/var/tmp目录的组合,而Termux中的$PREFIX/var应该更小心地使用。(下面的链接。)
如果您想从Termux和其他应用程序/服务访问文件:

  • 在Termux应用具有存储访问权限的情况下运行termux-setup-storage,应授予对$HOME/storage/shared(相当于$PREFIX/home/storage/shared)处Android用户文件的符号链接访问权限。这意味着您可以在任何不扩展shell环境变量的应用中使用/data/data/com.termux/files/home/storage/shared/Downloads访问设备的Downloads文件夹,(你的设备可能有一个稍微不同的文件系统,这只是在谷歌像素7. YMMV上工作的东西。)
  • 您也可以运行mkdir "$HOME/storage/shared/[yourdirectory]"。然后您可以从任何其他具有存储权限的应用程序访问创建的目录。

希望对未来的读者有所帮助。
更多信息:Termux file system layout

相关问题