Quiero escribir un programa para esto: En una carpeta tengo n número de archivos; primero lea un archivo y realice alguna operación, luego guarde el resultado en un archivo separado. Luego lea el segundo archivo, vuelva a realizar la operación y guarde el resultado en el segundo archivo nuevo. Haga el mismo procedimiento para n cantidad de archivos. El programa lee todos los archivos uno por uno y almacena los resultados de cada archivo por separado. Da ejemplos de cómo puedo hacerlo.¿Cómo leer y escribir varios archivos?
Respuesta
import sys
# argv is your commandline arguments, argv[0] is your program name, so skip it
for n in sys.argv[1:]:
print(n) #print out the filename we are currently processing
input = open(n, "r")
output = open(n + ".out", "w")
# do some processing
input.close()
output.close()
Entonces llamar así:
./foo.py bar.txt baz.txt
imprima (n) para que sea compatible con python 3. Todavía funciona con 2.4 al menos, también. – Bernard
Estoy ejecutando 2.3 de memoria, pero gracias por el aviso. –
puede ser exagerado para un único argumento, pero recomendaría el módulo optparse para el análisis de línea de comandos. Se ocupa de tareas desagradables como manejar citas, etc. – monkut
Usted puede encontrar el módulo fileinput
útil. Está diseñado para exactamente este problema.
Creo que lo que echa de menos es cómo recuperar todos los archivos en ese directorio. Para hacerlo, use el módulo glob. Este es un ejemplo que duplicar todos los archivos con extensión * .txt a archivos con extensión * .out
import glob
list_of_files = glob.glob('./*.txt') # create the list of file
for file_name in list_of_files:
FI = open(file_name, 'r')
FO = open(file_name.replace('txt', 'out'), 'w')
for line in FI:
FO.write(line)
FI.close()
FO.close()
Un pequeño problema con este ejemplo. ¿Qué sucede si tengo un archivo llamado 'mytxtfile.txt'? –
respuesta Combinado directorio de la incorporación o la lista específica de nombres de archivos argumentos:
import sys
import os.path
import glob
def processFile(filename):
fileHandle = open(filename, "r")
for line in fileHandle:
# do some processing
pass
fileHandle.close()
def outputResults(filename):
output_filemask = "out"
fileHandle = open("%s.%s" % (filename, output_filemask), "w")
# do some processing
fileHandle.write('processed\n')
fileHandle.close()
def processFiles(args):
input_filemask = "log"
directory = args[1]
if os.path.isdir(directory):
print "processing a directory"
list_of_files = glob.glob('%s/*.%s' % (directory, input_filemask))
else:
print "processing a list of files"
list_of_files = sys.argv[1:]
for file_name in list_of_files:
print file_name
processFile(file_name)
outputResults(file_name)
if __name__ == '__main__':
if (len(sys.argv) > 1):
processFiles(sys.argv)
else:
print 'usage message'
I' Acabo de enterarme del comando os.walk() recientemente, y puede ayudarte aquí. Le permite recorrer una estructura de árbol de directorios.
import os
OUTPUT_DIR = 'C:\\RESULTS'
for path, dirs, files in os.walk('.'):
for file in files:
read_f = open(os.join(path,file),'r')
write_f = open(os.path.join(OUTPUT_DIR,file))
# Do stuff
from pylab import *
import csv
import os
import glob
import re
x=[]
y=[]
f=open("one.txt",'w')
for infile in glob.glob(('*.csv')):
# print "" +infile
csv23=csv2rec(""+infile,'rb',delimiter=',')
for line in csv23:
x.append(line[1])
# print len(x)
for i in range(3000,8000):
y.append(x[i])
print ""+infile,"\t",mean(y)
print >>f,""+infile,"\t\t",mean(y)
del y[:len(y)]
del x[:len(x)]
- 1. ¿Cómo leer y escribir archivos xml?
- 2. PHP leer y escribir archivos de JSON
- 3. Leer y escribir archivos binarios en VBScript
- 4. Java - leer, manipular y escribir archivos WAV
- 5. Leer/escribir archivos en Python
- 6. ¿Cómo puedo leer, reemplazar y escribir archivos de gran tamaño?
- 7. Lote de lotes FlatFileItemReader leer varios archivos
- 8. ¿Cómo puedo ver varios archivos/socket para poder leer/escribir en Haskell?
- 9. Configurar Log4net para escribir en varios archivos
- 10. C++ ¿Puedo reutilizar fstream para abrir y escribir varios archivos?
- 11. Leer (y escribir) archivos RTF con C++/Qt
- 12. Forma recomendada para leer y escribir archivos .ini en VBA
- 13. ¿Alguna buena biblioteca para leer y escribir archivos csv?
- 14. Escribir y leer archivos de texto en el iPhone
- 15. Biblioteca para leer/escribir archivos pbxproj/xcodeproj?
- 16. ¿Cómo leer y escribir etiquetas Android NFC?
- 17. Socket leer y escribir simultáneamente
- 18. ¿Cómo se usa System.IO.Compression para leer/escribir archivos ZIP?
- 19. J2ME/Blackberry: ¿cómo leer/escribir archivos de texto?
- 20. phonegap leer y escribir el archivo json
- 21. ¿archivo abierto para leer y escribir?
- 22. ¿Cómo usar las funciones fread y fwrite para leer y escribir archivos binarios?
- 23. cómo leer y escribir números flotantes desde y hacia archivos binarios?
- 24. Java FileLock para leer y escribir
- 25. ¿Cómo puedo leer y escribir un archivo en Malbolge?
- 26. ¿Cómo leer y escribir rápidamente en listview en delphi?
- 27. Bloquear tabla para leer y escribir
- 28. Cómo abrir y dividir varios archivos
- 29. Leer y escribir cookies en Symfony2
- 30. JAVA: leer y escribir un archivo juntos
tarea ?? revise la historia del cartel –
Probablemente. Pero al mismo tiempo, solo estoy aprendiendo Python, parece un buen ejercicio recordarme a mí mismo que no estoy golpeando mi cabeza contra la pared. Si a él no le importa lo suficiente como para aprender cosas de este nivel, ¿quién soy yo para discutir? Al final del día, si no pasas el examen, aún fallaste. –
Lo etiqueté como tarea; Preguntar y responder a las preguntas de la tarea están en la lista del sitio, sin embargo, para el beneficio del asesino, me gustaría que les solicitemos primero que proporcionen un código que no funciona hasta el momento. – tzot