file, _ := os.Open("x.txt")
f := bufio.NewReader(file)
for {
read_line, _ := ReadString('\n')
fmt.Print(read_line)
// other code what work with parsed line...
}
fin, il ajoute\n sur chaque ligne, fin du programme pour fonctionner, ne fonctionne qu'avec la dernière ligne ...
Veuillez mettre un exemple, j'essaie n'importe quoi et toute solution ce que je trouve ici ne fonctionne pas pour moi.
Vous pouvez couper le dernier caractère:
read_line = read_line[:len(read_line)-1]
Une meilleure approche consiste peut-être à utiliser la bibliothèque de chaînes:
read_line = strings.TrimSuffix(read_line, "\n")
Si vous souhaitez lire un fichier ligne par ligne, utilisez bufio.Scanner
sera plus facile. Le scanner ne comprend pas endline
(\n
ou \r\n
) dans la ligne.
file, err := os.Open("yourfile.txt")
if err != nil {
//handle error
return
}
defer file.Close()
s := bufio.NewScanner(file)
for s.Scan() {
read_line := s.Text()
// other code what work with parsed line...
}
Si vous souhaitez supprimer endline
, je vous suggère d'utiliser TrimRightFunc
, c'est-à-dire.
read_line = strings.TrimRightFunc(read_line, func(c rune) bool {
//In windows newline is \r\n
return c == '\r' || c == '\n'
})
Mise à jour:
Comme l'a souligné @GwynethLlewelyn, l'utilisation de TrimRight
sera plus simple (plus propre), c'est-à-dire.
read_line = strings.TrimRight(read_line, "\r\n")
En interne, la fonction TrimRight
appelle TrimRightFunc
et supprimera le caractère s'il correspond à un caractère donné comme deuxième argument de TrimRight
.