Ho un'applicazione Python che genera un file SQL:"Backspace" rispetto allo scorso carattere scritto a file
sql_string = "('" + name + "', " + age + "'),"
output_files['sql'].write(os.linesep + sql_string)
output_files['sql'].flush()
Questo non è fatto in un ciclo for
, è scritto come dati diventa disponibile. C'è un modo per 'backspace' sull'ultimo carattere virgola quando l'applicazione viene eseguita in esecuzione e per sostituirla con un punto e virgola? Sono sicuro che potrei inventare una soluzione alternativa emettendo la virgola prima della nuova riga e usando un Bool globale per determinare se una particolare "scrittura" è la prima scrittura. Tuttavia, penso che l'applicazione sarebbe molto più pulita se potessi semplicemente "backspace" su di esso. Certo, essendo Python forse c'è un modo più semplice!
Si noti che avere ciascuna riga di valore insert
in un elenco e quindi implodere l'elenco non è una soluzione valida in questo caso d'uso.
In realtà non si vuole andare lì; preferisci mantenere il tuo file di output molto generico, in modo che possa essere un pipe, named pipe, un oggetto che rappresenta una connessione TCP o un campo HTTP post, ecc. Alcuni di questi hanno effetti collaterali e non puoi riprendere l'ultimo carattere . –
@qarma: Grazie. Nel caso specifico in cui il mio 'file di output' non è generico ma piuttosto un file di testo come ho descritto, ci sono degli "effetti collaterali" di cui dovrei essere prudente? Si noti che questo sarà in esecuzione su un SO derivato da Debian. Inoltre, non sono sicuro del perché preferirei mantenere il mio file di output molto generico, forse potresti chiarire? – dotancohen