Python script sunflower una copia de lotes de archivos de copia

 

El problema

QA Xiao Zhangxin realizó una tarea de prueba, una de las cuales requiere el uso de dispositivos Android con lotes de videos o imágenes, y también requiere el uso de diferentes modelos y adaptaciones del sistema. Si usa operaciones de copia manual tradicionales, el costo es muy alto. Para encontrar el álbum del sistema y luego copiarlo

  • Hay pocas fotos o videos en el álbum, por lo que debe realizar varias operaciones de copia de selección en el álbum varias veces.

  • Hay pocas fotos o videos en el álbum. Si importa desde el exterior, asegúrese de que haya archivos por lotes en el exterior y comprenda la ruta a importar

  • Si implica una adaptación, debe operarse una vez en cada dispositivo

Análisis de problemas

 

¿Existe alguna solución que pueda copiar archivos automáticamente?

Asociado con el comando adb shell cp admite la copia de archivos, puede considerar automatizar la secuencia de comandos de empaquetado. Además, antes de copiar, debe verificar el estado de la conexión de adb y debe actualizar la galería después de la copia, de lo contrario el álbum del sistema no puede actualizar los archivos copiados a tiempo

Esquema Ventaja Desventaja
Esquema de una operación manual Operación directa, sin secuencias de comandos que consumen mucho tiempo Las operaciones repetidas llevan mucho tiempo
Esquema dos script de automatización Desarrollar una vez y usar muchas veces Necesita descargar y familiarizarse con el script


Implementación de script Python

Paso 1: verifique el estado de la conexión adb

 def check_adb_status(self):
print("第一步:检查adb连接状态")
command = 'adb devices'
adbfile = os.popen(command, "r")
result = adbfile.read()
adbfile.close()
# 对result处理,获取连接状态
formatresult = result.replace('\n', '').replace(' ', '')
if " device" not in formatresult:
print("adb连接失败,请重新连接\n")
sys.exit(1)
else:
print("adb连接成功\n")
self.get_lock_screen()


El paso dos realiza la función de copiar. Se pasan dos parámetros file_path y copy_count, que representan la ruta del archivo de origen que se copiará y la cantidad de veces que se copiará.

 def run_copy_file(cls, file_path, copy_count):
ADB_PUSH = 'adb push %s /data/local/tmp/' % file_path
os.system(ADB_PUSH)
time.sleep(2)
filename = os.path.basename(file_path)
print('filename名称为' + filename)
now = datetime.datetime.now()
nowtime = now.strftime('%Y_%m_%d_%H_%M_%S')
count = 1
while count <= copy_count:
ADB_SHELL_CP = 'adb shell cp /data/local/tmp/%s /sdcard/DCIM/Camera/%s_%s_%s'\
% (filename, count, nowtime, filename)
print("第%s次复制" % count)
print("ADB_SHELL_CP*******" + ADB_SHELL_CP)
os.system(ADB_SHELL_CP)
time.sleep(2)
count = count + 1

#更新广播,刷新系统相册
print("复制完成,刷新相册")
os.system(ADB_SHLEL_BROADCAST)

Nota: Para facilitar la identificación del archivo copiado, el nombre del archivo consta de tres partes, el número de copias_ hora actual_el nombre del archivo copiado, como 29_2020_04_19_19_11_50_jiantou.gif proceso de ejecución del script y resultados

Entrante la ruta del archivo local que se copiará y el número esperado de copias

if __name__ == "__main__":
cpfile = CopyFile()
cpfile.check_adb_status()
copy_file_count = 30
# file_path = r"D:\技术\读书笔记\gaoxiaoxuexi.jpg"
copy_file_path = r"D:\技术\读书笔记\jiantou.gif"
# file_path = r'D:\技术\读书笔记\WeChat_20200409154818.mp4'
CopyFile.run_copy_file(copy_file_path, copy_file_count)

Resultados de la ejecución del script, las capturas de pantalla son las siguientes

第一步:检查adb连接状态
adb连接成功

第二步:开始检查设备锁屏状态
未锁屏可继续操作

441 KB/s (15827 bytes in 0.035s)
filename名称为jiantou.gif
第1次复制
ADB_SHELL_CP*******adb shell cp /data/local/tmp/jiantou.gif /sdcard/DCIM/Camera/1_2020_04_19_19_11_50_jiantou.gif
....
第29次复制
ADB_SHELL_CP*******adb shell cp /data/local/tmp/jiantou.gif /sdcard/DCIM/Camera/29_2020_04_19_19_11_50_jiantou.gif
第30次复制
ADB_SHELL_CP*******adb shell cp /data/local/tmp/jiantou.gif /sdcard/DCIM/Camera/30_2020_04_19_19_11_50_jiantou.gif
复制完成,刷新相册
Broadcasting: Intent { act=android.intent.action.MEDIA_SCANNER_SCAN_FILE dat=file:///sdcard/DCIM/Camera flg=0x400000 }
Broadcast completed: result=0

Después de ejecutar el script, los archivos copiados se muestran debajo de la cámara del dispositivo y los archivos del dispositivo, como se muestra a continuación

 

 

 

 

 


Verificación del formato del script

Compruebe si el código debe cumplir con las especificaciones a través de pylint, los siguientes resultados de comprobación 7.45 / 10 deben optimizarse

pylint copyfile_nosh.py
************* Module 9.utils.copyfile_nosh
copyfile_nosh.py:1:0: C0114: Missing module docstring (missing-module-docstring)
copyfile_nosh.py:17:4: C0116: Missing function or method docstring (missing-function-docstring)
copyfile_nosh.py:32:4: C0116: Missing function or method docstring (missing-function-docstring)
copyfile_nosh.py:32:4: R0201: Method could be a function (no-self-use)
copyfile_nosh.py:45:4: C0116: Missing function or method docstring (missing-function-docstring)
copyfile_nosh.py:45:27: W0621: Redefining name 'file_path' from outer scope (line 71) (redefined-outer-name)
copyfile_nosh.py:45:38: W0621: Redefining name 'copy_count' from outer scope (line 69) (redefined-outer-name)
copyfile_nosh.py:46:8: C0103: Variable name "ADB_PUSH" doesn't conform to snake_case naming style (invalid-name)
copyfile_nosh.py:53:12: C0103: Variable name "ADB_SHELL_CP" doesn't conform to snake_case naming style (invalid-name)
copyfile_nosh.py:45:4: R0201: Method could be a function (no-self-use)
copyfile_nosh.py:67:4: C0103: Constant name "cpfile" doesn't conform to UPPER_CASE naming style (invalid-name)
copyfile_nosh.py:69:4: C0103: Constant name "copy_count" doesn't conform to UPPER_CASE naming style (invalid-name)
copyfile_nosh.py:71:4: C0103: Constant name "file_path" doesn't conform to UPPER_CASE naming style (invalid-name)

------------------------------------------------------------------
Your code has been rated at 7.45/10 (previous run: 6.20/10, +1.25)

Después de la modificación de acuerdo con la solicitud, el resultado de la ejecución es el siguiente, y finalmente más de 9 puntos: si está asociado con git y establece el límite de configuración de git-pylint = 9.0, el código puede enviarse con éxito.

Nota: Si desea ignorar algunas indicaciones, puede usar -d de la siguiente manera

pylint copyfile_nosh.py -d C0103 -d C0116
************* Module 9.utils.copyfile_nosh
copyfile_nosh.py:1:0: C0114: Missing module docstring (missing-module-docstring)

------------------------------------------------------------------
Your code has been rated at 9.81/10 (previous run: 9.81/10, +0.00)


Hoyo encontrado

Después de copiar el archivo, el álbum de fotos del sistema aún no muestra las fotos o videos copiados. En este momento, debe actualizar la galería y ejecutar el siguiente comando

La solución uno puede ejecutar el siguiente comando

adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///sdcard/DCIM/Camera

La opción dos reinicia el dispositivo, si la opción uno no tiene efecto

Supongo que te gusta

 

 

Supongo que te gusta

Origin www.cnblogs.com/echoqi/p/12734086.html
Recomendado
Clasificación