Rumah > pembangunan bahagian belakang > Golang > Fungsi Golang tidak dapat membaca nama fail dengan betul

Fungsi Golang tidak dapat membaca nama fail dengan betul

PHPz
Lepaskan: 2024-02-06 11:18:03
ke hadapan
1284 orang telah melayarinya

Fungsi Golang tidak dapat membaca nama fail dengan betul

Kandungan soalan

Jadi, saya mempunyai repositori yang mengandungi berbilang fail .csv yang mengandungi skema jadual pangkalan data. Saya menulis sekeping kod Golang yang mendapat senarai nama fail daripada repositori, kemudian membuka fail tersebut, membaca kandungan dan mencipta pertanyaan MySQL CREATE.

Masalah yang saya hadapi ialah untuk sesetengah fail .csv, kod Golang akhirnya membaca pengepala dengan salah, yang menyebabkan masalah kemudian. Contohnya, terdapat fail bernama config_hr.csv, config_oe.csv, contribution_analysis.csv yang dibaca sebagai onfig_hr.csv, onfig_oe.csv, contribution_analysi.csv. Masalah ini nampaknya dapat diselesaikan jika saya menggunakan huruf besar nama itu, tetapi banyak masalah lain akan timbul pada peringkat akhir projek kami.

Adakah ini sejenis isu pengekodan? Saya telah menyemak kod pada Windows, Mac dan Linux dan versi Golang ialah v1.21 terbaharu, sebarang bantuan atau pandangan akan amat dihargai!

Coretan kod Golang untuk membaca nama fail CSV

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)
        }
Salin selepas log masuk


Jawapan betul


Tukarkan fungsi string.Trim dengan fungsi berikut.

// 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
}

Salin selepas log masuk

Kod contoh:

 Query_String := ("CREATE TABLE IF NOT EXISTS " + strings.ToLower(getFileNameWithoutExtension(strings.Replace(e.Name(), " ", "_", -1))) + " (\n")
Salin selepas log masuk

Atas ialah kandungan terperinci Fungsi Golang tidak dapat membaca nama fail dengan betul. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan