Die Golang-Funktion kann den Dateinamen nicht richtig lesen
Feb 06, 2024 am 11:18 AMIch habe also ein Repository mit mehreren CSV-Dateien, die das Tabellenschema der Datenbank enthalten. Ich habe einen Golang-Code geschrieben, der eine Liste von Dateinamen aus einem Repository abruft, diese Dateien dann öffnet, den Inhalt liest und eine MySQL CREATE-Abfrage erstellt.
Das Problem, mit dem ich konfrontiert bin, besteht darin, dass der Golang-Code bei einigen CSV-Dateien die Header letztendlich falsch liest, was später zu Problemen führt. Beispielsweise gibt es Dateien mit den Namen config_hr.csv, config_oe.csv, contribution_analysis.csv, die als onfig_hr.csv, onfig_oe.csv, contribution_analysi.csv gelesen werden. Dieses Problem schien gelöst zu sein, wenn ich den Namen großgeschrieben hätte, aber in den späteren Phasen unseres Projekts würden viele andere Probleme auftauchen.
Ist das ein Codierungsproblem? Ich habe den Code unter Windows, Mac und Linux überprüft und die Golang-Version ist die neueste Version 1.21. Für jede Hilfe oder Einsicht wäre ich sehr dankbar!
Golang-Code-Snippet zum Lesen des CSV-Dateinamens
entries, err := FileEntry.Readdir(0) if err != nil { log.Fatal(err) } // Now, open all the files one by one, and extract the content of the files. // Then modify the resultant string to be of MySQL compatibility. for _, e := range entries { // Mimicking the SQL Query of Table Creation query. Query_String := ("CREATE TABLE IF NOT EXISTS " + strings.ToLower(strings.Trim(strings.Replace(e.Name(), " ", "_", -1), ".csv")) + " (\n") fmt.Println("Opening -- " + file_folder + "/" + e.Name()) file, err := os.Open(file_folder + "/" + e.Name()) if err != nil { log.Fatal(err) } defer file.Close() // Reading the CSV file from path. reader := csv.NewReader(file) records, err := reader.ReadAll() if err != nil { log.Fatal(err) }
Richtige Antwort
Ersetzen Sie die Funktion string.Trim
durch die folgende Funktion.
// getFileNameWithoutExtension takes a file path as input and returns // the file name without its extension. It utilizes the filepath package // to extract the base name and then removes the extension. func getFileNameWithoutExtension(filePath string) string { // Get the base name of the file path (including extension) baseName := filepath.Base(filePath) // Calculate the length to remove the extension from the base name // and obtain the file name without extension fileNameWithoutExtension := baseName[:len(baseName)-len(filepath.Ext(baseName))] // Return the file name without extension return fileNameWithoutExtension }
Beispielcode:
Query_String := ("CREATE TABLE IF NOT EXISTS " + strings.ToLower(getFileNameWithoutExtension(strings.Replace(e.Name(), " ", "_", -1))) + " (\n")
Das obige ist der detaillierte Inhalt vonDie Golang-Funktion kann den Dateinamen nicht richtig lesen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

GO Language Pack Import: Was ist der Unterschied zwischen Unterstrich und ohne Unterstrich?

Wie kann ich kurzfristige Informationsübertragung zwischen Seiten im BeEGO-Framework implementieren?

Wie konvertieren Sie die Liste der MySQL -Abfrageergebnisse in eine benutzerdefinierte Struktur -Slice in Go -Sprache?

Wie schreibe ich Scheinobjekte und Stubs zum Testen in Go?

Wie kann ich benutzerdefinierte Typ -Einschränkungen für Generika in Go definieren?

Wie schreibe ich Dateien in Go Language bequem?

Wie kann ich Tracing -Tools verwenden, um den Ausführungsfluss meiner GO -Anwendungen zu verstehen?
