Lesen und Schreiben von Gerätedateien¶
Die Schnittstelle zum Lesen und Schreiben von Dateien ermöglicht es Ihnen, diese Funktion einfach zu nutzen, um Dateien vom Gerät hoch- oder herunterzuladen. Sie unterstützt das Herunter- und Hochladen großer Dateien. Sie können die entsprechenden Schnittstellen verwenden, um Dateien lokal oder in den Speicher herunterzuladen und Dateien aus dem Speicher oder von einem lokalen Speicherort auf das Gerät hochzuladen. Sie umfasst auch Funktionen wie das Löschen von Dateien, das Ändern von Dateiberechtigungen und das Abrufen von Dateiinformationen.
Bei Dateien, die nicht existieren oder für die keine Berechtigung für den Vorgang besteht, löst der Aufruf eine native Python-Ausnahme wie OSError oder FileNotFoundError aus.
Datei lokal herunterladen¶
Diese Schnittstelle kann Dateien vom Gerät lokal herunterladen. Im folgenden Beispiel wird der Inhalt der Datei /verity_key auf dem Gerät in die Datei my_file.txt auf dem aktuellen Computer heruntergeladen. Beachten Sie, dass die heruntergeladene Datei die ursprünglichen Berechtigungsinformationen nicht beibehält.
d.download_file("/verity_key", "my_file.txt")
>>> d.download_file("/adb_keys", "my_file.txt")
name: "adb_keys"
path: "/adb_keys"
st_mode: 33188
st_atime: 1230768000
st_mtime: 1230768000
st_ctime: 1230768000
st_size: 2202
>>> result = d.download_file("/adb_keys", "my_file.txt")
>>> print (result.st_mtime)
1230768000
>>> os.chmod("my_file.txt", result.st_mode)
Datei in den Speicher herunterladen¶
Diese Schnittstelle kann Dateien vom Gerät in den Speicher herunterladen (mittels BytesIO).
from io import BytesIO
fd = BytesIO()
d.download_fd("/verity_key", fd)
print (fd.getvalue())
Datei in einen Deskriptor herunterladen¶
Diese Schnittstelle kann Dateien vom Gerät in einen Dateideskriptor herunterladen. Beachten Sie, dass die Datei im Binärmodus wb geöffnet werden muss.
fd = open("my_file.txt", "wb")
d.download_fd("/verity_key", fd)
Datei auf das Gerät hochladen¶
Diese Schnittstelle kann lokale Dateien auf das Gerät hochladen. Im Beispiel bedeutet dies, dass die lokale Datei 测试文件.txt in die Datei /data/usr/file.txt auf dem Gerät hochgeladen wird. Auch beim Hochladen werden die ursprünglichen Berechtigungsinformationen nicht beibehalten.
d.upload_file("测试文件.txt", "/data/usr/file.txt")
>>> d.upload_file("file.txt", "/data/usr/file.txt")
name: "file.txt"
path: "/data/usr/file.txt"
st_mode: 33184
st_atime: 1230768000
st_mtime: 1230768000
st_ctime: 1230768000
>>> result = d.upload_file("file.txt", "/data/usr/file.txt")
>>> print (result.st_size)
0
Datei aus dem Speicher hochladen¶
Das folgende Beispiel lädt den Inhalt einer Datei aus dem Speicher mittels BytesIO in die Datei /data/usr/file.txt auf dem Gerät hoch.
from io import BytesIO
d.upload_fd(BytesIO(b"fileContent"), "/data/usr/file.txt")
Datei von einem Deskriptor hochladen¶
Das folgende Beispiel lädt den Inhalt der lokalen Datei myfile.txt über den fd-Deskriptor in die Datei /data/usr/file.txt auf dem Gerät hoch. Beachten Sie, dass die lokale Datei im Binärmodus rb geöffnet werden muss.
fd = open("myfile.txt", "rb")
d.upload_fd(fd, "/data/usr/file.txt")
Gerätedatei löschen¶
Diese Schnittstelle wird verwendet, um Dateien auf dem Gerät zu löschen.
d.delete_file("/data/usr/file.txt")
>>> d.delete_file("/data/usr/file.txt")
True
>>> d.delete_file("/adb_keys")
Traceback (most recent call last):
File "<console>", line 1, in <module>
OSError: [Errno 30] Read-only file system
Dateiberechtigungen ändern¶
Diese Schnittstelle wird verwendet, um die Berechtigungen von Dateien auf dem Gerät zu ändern.
d.file_chmod("/data/usr/file.txt", mode=0o777)
>>> d.file_chmod("/data/usr/file.txt", mode=0o777)
name: "file.txt"
path: "/data/usr/file.txt"
st_mode: 33279
st_atime: 1230768000
st_mtime: 1230768000
st_ctime: 1230768000
>>> result = d.file_chmod("/data/usr/file.txt", mode=0o777)
>>> print (oct(result.st_mode))
0o100777
Dateiinformationen abrufen¶
Diese Schnittstelle wird verwendet, um Informationen über Dateien auf dem Gerät abzurufen.
d.file_stat("/data/usr/file.txt")
>>> d.file_stat("/data/usr/file.txt")
name: "file.txt"
path: "/data/usr/file.txt"
st_mode: 33279
st_atime: 1230768000
st_mtime: 1230768000
st_ctime: 1230768000
>>> result = d.file_stat("/data/usr/file.txt")
>>> print (result.name)
'file.txt'