Kivi:如何设置Android应用程序的Output.txt文件的存储路径

2024-10-03 21:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用kivy和python制作android应用程序,我有创建TXT格式记录的功能,在我的项目中,它与.PY文件位于同一文件夹中,但我知道一旦创建.apk,文件将存储在哪里可能会出现问题。 例如,我想将Tracking.txt文件存储在Android设备的下载文件夹中。请问我如何定义这个

这就是它现在的定义,它应该安全/打开应用程序所在的文件

import kivy
from datetime import datetime
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.image import Image
from kivy.core.audio import SoundLoader
from kivy.core.window import Window
from kivy.clock import Clock
from kivy.utils import platform
import os

if platform == 'android':
    import android
    from android.permissions import request_permissions, Permission
    request_permissions([Permission.READ_EXTERNAL_STORAGE, Permission.WRITE_EXTERNAL_STORAGE])
    from android.storage import primary_external_storage_path
    dir = primary_external_storage_path()
    download_dir_path = os.path.join(dir, 'Download')

Window.size = (480, 800)

class MyGrid(GridLayout):
    def __init__(self, **kwargs):
        super(MyGrid, self).__init__(**kwargs)

        self.cols = 1  # Set columns for main layout
        self.inside = GridLayout(cols=2, row_force_default=True,
                                 row_default_height=50, padding=20,
                                 spacing=10)  # Create a new grid layout
        self.add_widget(Label(text="Tracking Number \n Checker", halign="center", font_size=40))  # Top Label
        self.inside.add_widget(Label(text="Work Number:", halign="center", font_size=20))  # Add a label widget
        self.worknumb = TextInput(text_validate_unfocus=True, multiline=False, font_size=20, halign="center")
        self.inside.add_widget(self.worknumb)
        self.inside.add_widget(Label(text="Tracking \nNO. Scan:", halign="center", font_size=20))
        self.tracknumb = TextInput(multiline=False, font_size=15, halign="center")  # Create a Text input box stored in the name variable
        self.inside.add_widget(self.tracknumb)  # Add the text input widget to the GUI

        self.add_widget(self.inside)  # Add the interior layout to the main
        self.submit = Button(text="Submit", font_size=40, size_hint =(.5, .5))  # Submit button
        self.add_widget(self.submit)
        self.submit.bind(on_press=self.send_tracknumb)
        self.resultbox = Image(source="status.png")  #image box on bottom
        self.add_widget(self.resultbox)

        Window.bind(on_key_down=self.pressed)
        Clock.schedule_once(self.focus_worknumb, 1)
    def pressed(self, instance, keyboard, keycode, text, modifiers):
        if keycode == 40 or keycode == 13 or keycode == 8:
            self.send_tracknumb(None)

    def focus_worknumb(self, _):
        self.worknumb.focus = True
    def focus_tracknumb(self, _):
        self.tracknumb.focus = True
    def send_tracknumb(self, _):
        tracknumb = self.tracknumb.text
        worknumb = self.worknumb.text
        errorsound = SoundLoader.load("incorrect.mp3")  # add sound to the scanning
        correctsound = SoundLoader.load("correct.ogg")
        self.tracknumb.text = ""  # Reset text to blank in each text input
        Clock.schedule_once(self.focus_tracknumb, 0.2)
        f = open(os.path.join(download_dir_path, 'tracking.txt'), "a")
        tr = tracknumb
        wr = worknumb
        time = str(datetime.now())

编辑:我使用了下面帖子中建议的功能,但现在它显示它找不到Android,我从Pycharm中弹出的建议中安装了什么,但是没有找到存储和前置。 我在进口部分遗漏了什么


Tags: thepathtextfromimportselfaddsize
1条回答
网友
1楼 · 发布于 2024-10-03 21:26:58

您可以使用下面的代码片段来获取android中的Download目录路径。然后根据需要使用路径

from kivy.utils import platform
import os

if platform == 'android':
    from android.storage import primary_external_storage_path
    dir = primary_external_storage_path()
    download_dir_path = os.path.join(dir, 'Download')

相关问题 更多 >