Dateibearbeitung Beispiel 1
Aufgabe
- Öffne alle Dateien eines Ordners mit der Endung .kk
- lies jeweils die ersten 5 Zeilen
- Ersetze jeweils "ABC" durch "XYZ"
Lösung
1
2
3
4
5
6
7
8
|
Dir['*.kk'].each do |d|
next unless File.file?(d)
data = File.readlines(d)
for i in 0..4
data[i] = data[i].gsub('ABC', 'XYZ') if data[i]
end
File.open(d, 'w') { |f| f.write data.join }
end |
Anmerkungen
Dir['*.kk'] liefert ein Array mit allen Dateien und Verzeichnissen des aktuellen Verzeichnisses zurück, die auf ".kk" enden. Verzeichnisse können aber nicht wie Dateien geöffnet werden. Deshalb werden mit der File.file? Abfrage nur Dateien bearbeitet.
Weblinks
Dateibearbeitung Beispiel 2
Aufgabe
- zeilenweise Bearbeitung einer Datei
Lösung
Einlesen der Datei in ein Array, durch das man dann iterieren kann, um die einzelnen Zeilen einer Eingabedatei zu verarbeiten.
1
2
3
4
5
6
7
8
|
infile = File.new("eingabedatei.txt", "r")
linearray = infile.readlines
infile.close
for i in 0...linearray.length # obs! drei Punkte! ansonsten: 0..linearray.length - 1
print linearray[i]
end
# oder natürlich:
linearray.each{|i| print i} |