por mail enviar correo con archivo adjunto adjuntar python file append

python - mail - ¿Cómo se adjunta a un archivo?



python enviar correo con adjunto (7)

¿Cómo se agrega al archivo en lugar de sobrescribirlo? ¿Hay alguna función especial que se agregue al archivo?


Aquí está mi script, que básicamente cuenta el número de líneas, luego las agrega y luego las cuenta nuevamente para que tenga evidencia de que funcionó.

shortPath = "../file_to_be_appended" short = open(shortPath, ''r'') ## this counts how many line are originally in the file: long_path = "../file_to_be_appended_to" long = open(long_path, ''r'') for i,l in enumerate(long): pass print "%s has %i lines initially" %(long_path,i) long.close() long = open(long_path, ''a'') ## now open long file to append l = True ## will be a line c = 0 ## count the number of lines you write while l: try: l = short.next() ## when you run out of lines, this breaks and the except statement is run c += 1 long.write(l) except: l = None long.close() print "Done!, wrote %s lines" %c ## finally, count how many lines are left. long = open(long_path, ''r'') for i,l in enumerate(long): pass print "%s has %i lines after appending new lines" %(long_path, i) long.close()


Debe abrir el archivo en modo de adición, configurando "a" o "ab" como modo. Ver open() .

Cuando abre con el modo "a", la posición de escritura siempre estará al final del archivo (un anexo). Puede abrir con "a +" para permitir la lectura, buscar hacia atrás y leer (¡pero todas las escrituras aún estarán al final del archivo!).

Ejemplo:

>>> with open(''test1'',''wb'') as f: f.write(''test'') >>> with open(''test1'',''ab'') as f: f.write(''koko'') >>> with open(''test1'',''rb'') as f: f.read() ''testkoko''

Nota : Usar ''a'' no es lo mismo que abrir con ''w'' y buscar hasta el final del archivo. Considere lo que podría pasar si otro programa abriera el archivo y comenzara a escribir entre la búsqueda y la escritura. En algunos sistemas operativos, abrir el archivo con ''a'' garantiza que todas sus siguientes escrituras se adjuntarán atómicamente al final del archivo (incluso a medida que el archivo crece por otras escrituras).

Algunos detalles más sobre cómo funciona el modo "a" ( probado en Linux solamente ). Incluso si busca volver, cada escritura se agregará al final del archivo:

>>> f = open(''test'',''a+'') # Not using ''with'' just to simplify the example REPL session >>> f.write(''hi'') >>> f.seek(0) >>> f.read() ''hi'' >>> f.seek(0) >>> f.write(''bye'') # Will still append despite the seek(0)! >>> f.seek(0) >>> f.read() ''hibye''

De hecho, la página de manpage fopen dice:

Al abrir un archivo en modo de adición (como el primer carácter del modo), todas las operaciones de escritura subsiguientes en esta secuencia se producen al final del archivo, como si precediera la llamada:

fseek(stream, 0, SEEK_END);

Antigua respuesta simplificada (sin usar with ):

Ejemplo: ( en un programa real, use with para cerrar el archivo - vea la documentación )

>>> open("test","wb").write("test") >>> open("test","a+b").write("koko") >>> open("test","rb").read() ''testkoko''


Probablemente quieras pasar "a" como argumento de modo. Ver los documentos para open() .

with open("foo", "a") as f: f.write("cool beans...")

Hay otras permutaciones del argumento de modo para actualizar (+), truncar (w) y binario (b), pero comenzar con solo "a" es su mejor apuesta.


Python tiene muchas variaciones de los tres modos principales, estos tres modos son:

''w'' write text ''r'' read text ''a'' append text

Entonces, para adjuntar a un archivo es tan fácil como:

f = open(''filename.txt'', ''a'') f.write(''whatever you want to write here (in append mode) here.'')

Luego están los modos que solo hacen que su código tenga menos líneas:

''r+'' read + write text ''w+'' read + write text ''a+'' append + read text

Finalmente, están los modos de lectura / escritura en formato binario:

''rb'' read binary ''wb'' write binary ''ab'' append binary ''rb+'' read + write binary ''wb+'' read + write binary ''ab+'' append + read binary


Siempre hago esto

f = open(''filename.txt'', ''a'') f.write("stuff") f.close()

Es simple, pero muy útil.


cuando usamos esta línea open(filename, "a") , que indica el archivo adjunto, eso significa que permite insertar datos adicionales en el archivo existente.

Puede usar las siguientes líneas para agregar el texto a su archivo

def FileSave(filename,content): with open(filename, "a") as myfile: myfile.write(content) FileSave("test.txt","test1 /n") FileSave("test.txt","test2 /n")


with open("test.txt", "a") as myfile: myfile.write("appended text")