Quiero crear una variable de "nombre de archivo completo" de varias otras variables, pero las operaciones de concatenación de cadenas y cadenas de caracteres no se comportan de la manera esperada.Python 3.2 - Concatenar y el comportamiento de formato de cadena no se comportan como se esperaba
Mi código es el siguiente:
file_date = str(input("Enter file date: "))
root_folder = "\\\\SERVER\\FOLDER\\"
file_prefix = "sample_file_"
file_extension = ".txt"
print("")
print("Full file name with concatenation: ")
print(root_folder + file_prefix + file_date + file_extension)
print("Full file name with concatenation, without file_extension: ")
print(root_folder + file_prefix + file_date)
print("")
print("")
print("Full file name with string formatting: ")
print("%s%s%s%s" % (root_folder, file_prefix, file_date, file_extension))
print("Full file name with string formatting, without file_extension: ")
print("%s%s%s" % (root_folder, file_prefix, file_date))
print("")
La salida al ejecutar la secuencia de comandos es:
C:\Temp>python test.py
Enter file date: QT1
Full file name with concatenation:
.txtRVER\FOLDER\sample_file_QT1
Full file name with concatenation, without file_extension:
\\SERVER\FOLDER\sample_file_QT1
Full file name with string formatting:
.txtRVER\FOLDER\sample_file_QT1
Full file name with string formatting, without file_extension:
\\SERVER\FOLDER\sample_file_QT1
que estaba esperando para concatenar el ".txt" al final, excepto que es reemplazando los primeros cuatro caracteres de la cadena con él en su lugar.
¿Cómo concateno la variable de extensión al final de la cadena en lugar de reemplazar los primeros n caracteres de la cadena?
Además de cómo resolver este problema en particular, me gustaría saber por qué me topé con él en primer lugar. ¿Qué hice mal/de qué comportamiento de Python 3.2 no soy consciente?
confirmado. Después de ejecutar el código del OP, 'repr (file_date)' es ''QT1 \ r'' –
. Tenía la sensación de que era algo así de simple. Estaba agregando un retorno de carro "\ r" en lugar de un salto de línea, pero me ayudaste a orientarme en la dirección correcta. ¡Gracias! – tgxiii
En Python 3, la entrada devuelve una cadena, por lo que no es necesario usar str. – MRAB