Lire et écrire des fichiers sur l'appareil¶
L'interface de lecture/écriture de fichiers vous permet d'utiliser facilement cette fonctionnalité pour téléverser ou télécharger des fichiers depuis l'appareil. Elle prend en charge le téléchargement et le téléversement de fichiers volumineux. Vous pouvez utiliser les interfaces correspondantes pour télécharger des fichiers localement ou en mémoire, et pour téléverser des fichiers depuis la mémoire ou localement vers l'appareil. Elle inclut également des fonctionnalités telles que la suppression de fichiers, la modification des permissions de fichiers et l'obtention d'informations sur les fichiers.
Pour les fichiers qui n'existent pas ou pour lesquels vous n'avez pas les permissions nécessaires, l'appel provoquera des exceptions Python natives telles que OSError ou FileNotFoundError.
Télécharger un fichier localement¶
Cette interface permet de télécharger un fichier de l'appareil vers le système local. Dans l'exemple ci-dessous, le contenu du fichier /verity_key de l'appareil est téléchargé dans le fichier my_file.txt sur l'ordinateur actuel. Notez que les informations de permission d'origine ne sont pas conservées pour le fichier téléchargé.
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)
Télécharger un fichier en mémoire¶
Cette interface permet de télécharger un fichier de l'appareil en mémoire (via BytesIO).
from io import BytesIO
fd = BytesIO()
d.download_fd("/verity_key", fd)
print (fd.getvalue())
Télécharger un fichier vers un descripteur¶
Cette interface permet de télécharger un fichier de l'appareil vers un descripteur de fichier. Notez que le fichier doit être ouvert en mode binaire wb.
fd = open("my_file.txt", "wb")
d.download_fd("/verity_key", fd)
Téléverser un fichier sur l'appareil¶
Cette interface permet de téléverser un fichier local sur l'appareil. Dans l'exemple, cela signifie téléverser le fichier local 测试文件.txt vers le fichier /data/usr/file.txt sur l'appareil. De même, les informations de permission d'origine ne sont pas conservées pour le fichier téléversé.
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
Téléverser un fichier depuis la mémoire¶
L'exemple suivant téléverse le contenu d'un fichier en mémoire vers le fichier /data/usr/file.txt sur l'appareil via BytesIO.
from io import BytesIO
d.upload_fd(BytesIO(b"fileContent"), "/data/usr/file.txt")
Téléverser un fichier depuis un descripteur¶
L'exemple suivant téléverse le contenu du fichier local myfile.txt vers le fichier /data/usr/file.txt sur l'appareil via un descripteur de fichier fd. Notez que le fichier local doit être ouvert en mode binaire rb.
fd = open("myfile.txt", "rb")
d.upload_fd(fd, "/data/usr/file.txt")
Supprimer un fichier de l'appareil¶
Cette interface est utilisée pour supprimer des fichiers sur l'appareil.
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
Modifier les permissions d'un fichier¶
Cette interface est utilisée pour modifier les permissions d'un fichier sur l'appareil.
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
Obtenir les informations d'un fichier¶
Cette interface est utilisée pour obtenir des informations sur un fichier de l'appareil.
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'