Hey kiwi (y cualquier otro que encuentra esto!),
estoy en el mismo ejercicio y creo que he agrietado.
Hay dos lecturas posibles de la frase "Podría hacer que esta línea sea larga" de Shaw.
- Podía hacer que el script Python una línea larga, sobre la importación de todos los comandos necesarios a partir de los módulos, por ejemplo
from sys import argv
, etc.
- Pudo copiar el contenido de un archivo a otro en una línea con el comando línea.
Personalmente, creo que se refiere a este último, pero voy a explicar ambas soluciones por el bien de aprender!
La primera (Long) solución: usted debe reconocer que necesita los import
x from
Y líneas en el archivo de Python, de lo contrario argv
y exist
no funcionará, ya que sólo se ha hecho referencia implícitamente, es decir, que no le han dejado claro a Python que desea usar estas funciones.
La siguiente cosa que hacer es eliminar todo el código irrelevante, con código irrelevantes ser que está escrito para el beneficio del usuario, es decir print
, raw_input()
, len()
, etc.
Si hace esto, habrá dejó con:
from sys import argv
from os.path import exists
script, from_file, to_file = argv
indata = open(from_file).read()
out_file = open(to_file, 'w')
out_file.write(indata)
out_file.close()
in_file.close()
Para hacer esto aún más corto, puede empezar a anidar las variables y función en unos a los otros. Este es el mismo principio que en matemáticas cuando se puede definir una función y luego sustituir la variable que representa esa función en otra función.
Por ejemplo:
y = x + 3
z = y, which is essentially z = (x + 3)
Si trabaja en esto, se puede simplificar el código a:
from sys import argv
from os.path import exists
script, from_file, to_file = argv
(open(to_file, 'w').write(open(from_file).read()))
A continuación, puede utilizar una gran cantidad de ;
para unir todas las líneas de código y vio-la has terminado.
Nota: No necesita cerrar los archivos, como lo hizo en el original, ya que Python los cerrará automáticamente al ejecutar el script.
El segundo (Corto) solución:
Si nos fijamos en su sección 'Lo que debes ver', que utiliza el gato en el terminal. Esto es corto para la concatenación, que es un medio de conectar cadenas juntas.Si se combina con> puede sobrescribir el contenido de un archivo con otro en una línea:
cat from_file.txt > to_file.txt
Eso es todo. Una línea que tomará el contenido de un archivo y lo colocará en otro.
Por supuesto, ambas soluciones no son perfectas, ya que la primera no es realmente una línea y la segunda ni siquiera usa Python.
Regeneración apreciada, sólo empezó a hacer esto hace dos días ...
Para expresiones más difíciles, debe evitar rellenar tanto como sea posible en una línea. – leoluk
Si no tiene ningún bloque sangrado, puede simplemente unir cada línea, terminando con un punto y coma. * Muy * mala forma, pero si estás empeñado en ello ... –
O si realmente quieres ser un dolor de trasero: http://effbot.org/pyfaq/is-it- possible-to-write-ofuscado-one-liners-in-python.htm –