Leer y escribir archivos del dispositivo

La interfaz de lectura y escritura de archivos le permite utilizar fácilmente esta función para cargar o descargar archivos desde el dispositivo. Admite la descarga y carga de archivos grandes. Puede utilizar las interfaces correspondientes para descargar archivos a su sistema local o a la memoria, y para cargar archivos desde la memoria o su sistema local al dispositivo. También incluye funciones como eliminar archivos, modificar permisos de archivos y obtener información de archivos. Para archivos que no existen o para los que no se tienen permisos de operación, la llamada provocará excepciones nativas de Python como OSError o FileNotFoundError.

Descargar archivo a local

Esta interfaz puede descargar archivos del dispositivo a su sistema local. En el siguiente ejemplo, el contenido del archivo /verity_key del dispositivo se descargará al archivo my_file.txt en el ordenador actual. Tenga en cuenta que el archivo descargado no conservará la información de permisos original.

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)

Descargar archivo a la memoria

Esta interfaz puede descargar archivos del dispositivo a la memoria (a través de BytesIO).

from io import BytesIO
fd = BytesIO()

d.download_fd("/verity_key", fd)
print (fd.getvalue())

Descargar archivo a un descriptor

Esta interfaz puede descargar archivos del dispositivo a un descriptor de archivo. Tenga en cuenta que el archivo debe abrirse en modo binario wb.

fd = open("my_file.txt", "wb")
d.download_fd("/verity_key", fd)

Cargar archivo al dispositivo

Esta interfaz puede cargar archivos locales al dispositivo. En el ejemplo, significa cargar el archivo local 测试文件.txt al archivo /data/usr/file.txt en el dispositivo. La carga de archivos tampoco conservará la información de permisos original.

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

Cargar archivo desde la memoria

El siguiente ejemplo carga el contenido de un archivo en memoria al archivo /data/usr/file.txt en el dispositivo a través de BytesIO.

from io import BytesIO
d.upload_fd(BytesIO(b"fileContent"), "/data/usr/file.txt")

Cargar archivo desde un descriptor

El siguiente ejemplo carga el contenido del archivo local myfile.txt al archivo /data/usr/file.txt en el dispositivo a través de un descriptor fd. Tenga en cuenta que el archivo local debe abrirse en modo binario rb.

fd = open("myfile.txt", "rb")
d.upload_fd(fd, "/data/usr/file.txt")

Eliminar archivo del dispositivo

Esta interfaz se utiliza para eliminar archivos en el dispositivo.

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

Modificar permisos de archivo

Esta interfaz se utiliza para modificar los permisos de archivos en el dispositivo.

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

Obtener información del archivo

Esta interfaz se utiliza para obtener información sobre los archivos en el dispositivo.

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'