Optimierung oder Beschleunigung des Lesens von .xy-Dateien in Excel

Ich habe ein paar .xy Dateien (2 Spalten mit x und y Werte). Ich habe versucht, alle von ihnen zu lesen und füge die "y" Werte in eine einzige Excel-Datei (Die "x" Werte sind die gleichen in all diesen Dateien). Der Code, den ich bis jetzt liest die Dateien eins nach dem anderen, aber seine extrem langsam (es dauert etwa 20 Sekunden auf jeder Datei). Ich habe ein paar .xy-Dateien und die Zeit summiert sich erheblich. Der Code, den ich bis jetzt habe, ist:

import os,fnmatch,linecache,csv from openpyxl import Workbook wb = Workbook() ws = wb.worksheets[0] ws.title = "Sheet1" def batch_processing(file_name): row_count = sum(1 for row in csv.reader(open(file_name))) try: for row in xrange(1,row_count): data = linecache.getline(file_name, row) print data.strip().split()[1] print data ws.cell("A"+str(row)).value = float(data.strip().split()[0]) ws.cell("B"+str(row)).value = float(data.strip().split()[1]) print file_name wb.save(filename = os.path.splitext(file_name)[0]+".xlsx") except IndexError: pass workingdir = "C:\Users\Mine\Desktop\P22_PC" os.chdir(workingdir) for root, dirnames, filenames in os.walk(workingdir): for file_name in fnmatch.filter(filenames, "*_Cs.xy"): batch_processing(file_name) 

Jede Hilfe wird geschätzt. Vielen Dank.

One Solution collect form web for “Optimierung oder Beschleunigung des Lesens von .xy-Dateien in Excel”

Ich denke, Ihr Hauptproblem ist, dass Sie schreiben, um Excel und speichern auf jeder einzelnen Zeile in der Datei, für jede einzelne Datei im Verzeichnis. Ich bin mir nicht sicher, wie lange es dauert, um tatsächlich den Wert an Excel zu schreiben, aber nur das save aus der Schleife zu bewegen und nur zu sparen, sobald alles hinzugefügt wurde, sollte ein wenig Zeit schneiden. Auch wie groß sind diese Dateien? Wenn sie massiv sind, dann kann linecache eine gute Idee sein, aber wenn sie davon ausgehen, dass sie nicht übermäßig groß sind, dann können Sie wahrscheinlich auf sie verzichten.

 def batch_processing(file_name): # Using 'with' is a better way to open files - it ensures they are # properly closed, etc. when you leave the code block with open(filename, 'rb') as f: reader = csv.reader(f) # row_count = sum(1 for row in csv.reader(open(file_name))) # ^^^You actually don't need to do this at all (though it is clever :) # You are using it now to govern the loop, but the more Pythonic way is # to do it as follows for line_no, line in enumerate(reader): # Split the line and create two variables that will hold val1 and val2 val1, val2 = line print val1, val2 # You can also remove this - printing takes time too ws.cell("A"+str(line_no+1)).value = float(val1) ws.cell("B"+str(line_no+1)).value = float(val2) # Doing this here will save the file after you process an entire file. # You could save a bit more time and move this to after your walk statement - # that way, you are only saving once after everything has completed wb.save(filename = os.path.splitext(file_name)[0]+".xlsx") 
  • Wie man dataframes aus einem Excel-Blatt mit vielen Tabellen (mit Python, möglicherweise Pandas)
  • Wie man den SQL-Code aus einer Excel 2007 PivotTable abruft
  • Wie generiere ich Excel-Tabellen mit eingebetteten Graphen?
  • Pandas: Speichern, um das Codierungsproblem zu übertreffen
  • Wie öffnet man eine Excel-Datei mit Python, um ihren Inhalt anzuzeigen? [abgeschlossen]
  • Python oder LibreOffice Save xlsx Datei mit Passwort verschlüsselt
  • AttributeError: 'module' Objekt hat kein Attribut 'open_openwork'
  • Kann ich Pandas DataFrame zu Excel Stripping tzinfo exportieren?
  • Hinzufügen von sheet2 zu vorhandenem excelfile aus Daten von sheet1 mit pandas python
  • Identifizieren von Excel Sheet Zellen-Farbcode mit XLRD-Paket
  • Hinzufügen von Benutzern zur Google-Gruppe automatisch aus Excel-Blatt
  • Python ist die beste Programmiersprache der Welt.