es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Las cadenas sin procesar que contienen rutas de Windows producen “SyntaxError: unterminated string literal”.

Estoy intentando usar un script de shutil que encontré, pero recibo SyntaxError: literal de cadena no terminada (detectado en la línea 4). Se agradecería cualquier ayuda para solucionar esto o un nuevo script.

import shutil
import os

source = r"C:\Users\[nombre_de_usuario]\Downloads\"
dest1 = r"C:\Users\[nombre_de_usuario]\Desktop\Reports\14\"
dest2 = r"C:\Users\[nombre_de_usuario]\Desktop\Reports\52\"
dest3 = r"C:\Users\[nombre_de_usuario]\Desktop\Reports\59\"

files = os.listdir(source)

for f in files:

 if (f.startswith("Log 14")):
        shutil.move(f, dest1)
    elif (f.startswith("Log 54")):
        shutil.move(f, dest2)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error indica que hay un problema con una cadena de texto incompleta en la línea 4 del script. En este caso, parece que los caracteres de barra invertida utilizados para escapar caracteres especiales en las rutas de archivo están causando el error.

    Para arreglar el script, las barras invertidas deben ser escapadas, o las rutas de archivo deben ser encerradas entre comillas dobles en lugar de comillas simples:

    import shutil
    import os
    
    source = r"C:\\Users\\[nombre de usuario]\\Downloads\\"
    dest1 = r"C:\\Users\\[nombre de usuario]\\Desktop\\Reports\\14"
    dest2 = r"C:\\Users\\[nombre de usuario]\\Desktop\\Reports\\52"
    dest3 = r"C:\\Users\\[nombre de usuario]\\Desktop\\Reports\\59"
    
    files = os.listdir(source)
    
    for f in files:
        if (f.startswith("Log 14")):
            shutil.move(os.path.join(source, f), dest1)
        elif (f.startswith("Log 54")):
            shutil.move(os.path.join(source, f), dest2)
    

    Este script actualizado debería ejecutarse sin el error de sintaxis, ya que escapa correctamente todas las barras invertidas y une correctamente la ruta del archivo fuente con el nombre de archivo utilizando os.path.join().

Comments are closed.