Autor
|
Tema: Consejos sobre programación en python (Leído 2,887 veces)
|
PanzerLily
Desconectado
Mensajes: 3
|
Hola gente. como están? Soy nuevo en el foro asi que paso a presentarme primero. Tengo 24 años, soy de Argentina y hace poco empecé con el tema de la programación y más que nada con Python. Estoy leyendo mi primer libro sobre este lenguaje: http://inventwithpython.com/hacking/chapters/y si bien todavia voy por el capitulo 6 les quería hacer una consulta. Estuve modificando el código ejemplo que da el libro sobre el cifrado caesar para abrir un archivo, leer el contenido, encriptarlo y sobreescribirlo. Seguramente van a encontrar mil errores en las modificaciones que hice, y si bien el código funciona y hace lo que quiero, quisiera saber que maneras hay para abrir archivos y sobreescribirlos sin tener que cerrarlos y volverlos a abrir porque cuando probé con 'w+' o 'w' directamente los dejaba vacios. Consejos, criticas y todo lo que se les ocurra es bienvenido. Aquí les dejo el código # Caesar Cipher # http://inventwithpython.com/hacking (BSD Licensed)
# open encrypted/decrypted file message = open('test.txt','r+') test = message.read()
# the encryption/decryption key key = int(input('Key: '))
# tells the program to encrypt or decrypt mode = input('choose: encrypt / decrypt: ')# set to 'encrypt' or 'decrypt'
# every possible symbol that can be encrypted LETTERS = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'
# stores the encrypted/decrypted form of the message translated = ''
# capitalize the string in message #message = message.upper()
# run the encryption/decryption code on each symbol in the message string for symbol in test: if symbol in LETTERS: # get the encrypted (or decrypted) number for this symbol num = LETTERS.find(symbol) # get the number of the symbol if mode == 'encrypt': num = num + key elif mode == 'decrypt': num = num - key
# handle the wrap-around if num is larger than the length of # LETTERS or less than 0 if num >= len(LETTERS): num = num - len(LETTERS) elif num < 0: num = num + len(LETTERS)
# add encrypted/decrypted number's symbol at the end of translated translated = translated + LETTERS[num]
else: # just add the symbol without encrypting/decrypting translated = translated + symbol
# save encrypted/decrypted file message.close() message = open('test.txt','w') message.write(translated) message.close()
|
|
« Última modificación: 29 Abril 2014, 04:36 am por PanzerLily »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
tenés que tener en cuenta que "w" crea archivos, o sea que sino existe lo crea y si tiene algo lo sobreescribe vacio, te conviene usar "r" para archivos que ya existen, claro que si lo usas en un archivo que no existe te dará error.
|
|
|
En línea
|
|
|
|
PanzerLily
Desconectado
Mensajes: 3
|
tenés que tener en cuenta que "w" crea archivos, o sea que sino existe lo crea y si tiene algo lo sobreescribe vacio, te conviene usar "r" para archivos que ya existen, claro que si lo usas en un archivo que no existe te dará error.
Entonces está bien como lo usé? primero 'r+' para leer el archivo y despues 'w' para crear un archivo con el mismo nombre pero con otro contenido? Lo que no entiendo es esto: en la documentación de python dice * 'r+' opens the file for both reading and writing pero si al final queria escribirlo con "message.write(translated)" me creaba un archivo vacío. Que estaba haciendo mal? Seguro es muy fácil la respuesta, pero no la sé T_T
|
|
« Última modificación: 19 Abril 2014, 06:39 am por PanzerLily »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
pues el código está bien, supongo que usas un archivo "test.txt" que no este vacio
ahhh y me olvide, si en:
Code:// message = open('test.txt','w')
usas message = open('test.txt','r+')
por supuesto que también funciona, por lo cual no sé donde está tu error.
|
|
« Última modificación: 21 Abril 2014, 01:36 am por tincopasan »
|
En línea
|
|
|
|
PanzerLily
Desconectado
Mensajes: 3
|
pues el código está bien, supongo que usas un archivo "test.txt" que no este vacio
ahhh y me olvide, si en:
Code:// message = open('test.txt','w')
usas message = open('test.txt','r+')
por supuesto que también funciona, por lo cual no sé donde está tu error.
Si, está bien. Estaba interpretando mal como se manejaban los archivos. Gracias!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Programación Python
Scripting
|
nacho11
|
2
|
2,679
|
2 Marzo 2007, 22:37 pm
por SirLanceCC
|
|
|
Como comenzar en el desarrollo de software o programacion consejos y dudas?
Programación General
|
lupitapro
|
1
|
2,682
|
24 Mayo 2010, 06:48 am
por Shell Root
|
|
|
Recomendaciones sobre Tor y consejos sobre el anonimato.
Seguridad
|
OmarHack
|
2
|
6,577
|
15 Julio 2013, 20:28 pm
por OmarHack
|
|
|
Python - opiniones de mi script/ consejos
Scripting
|
Biodude9456
|
2
|
2,286
|
8 Marzo 2016, 11:00 am
por BlackM4ster
|
|
|
Duda sobre programación (C, C++, Python, etc...)
Programación C/C++
|
shaddy4ever
|
1
|
1,851
|
5 Agosto 2016, 13:47 pm
por ivancea96
|
|