خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه تعامل با فایل ها و دایرکتوری ها در Go

با این توابع مفید، در استفاده از سیستم فایل تسلط پیدا کنید.

کار با فایل ها و دایرکتوری ها یک کار ضروری برای برنامه هایی است که نیاز به ذخیره و بازیابی داده ها دارند. Go بسته filepath را برای عملیات مسیر فایل مستقل از پلت فرم فراهم می کند. این بسته شامل توابعی برای دستکاری مسیرهای فایل است و با ویندوز، لینوکس و macOS سازگار است.

توابعی که filepath شامل می شود می تواند مسیرهای فایل را بپیوندد، تقسیم کند و پاک کند تا از معتبر بودن آنها اطمینان حاصل شود. این بسته همچنین دارای عملکردهایی برای راه رفتن دایرکتوری ها و جستجوی فایل ها است.

درختان فهرست راه رفتن

تابع Walk بسته filepath عملکردی را برای راه رفتن در درخت دایرکتوری و پیمایش در میان فایل‌ها و دایرکتوری‌ها به صورت پیش‌سفارش فراهم می‌کند. به صورت بازگشتی از همه دایرکتوری های زیر ریشه داده شده بازدید می کند. تابع Walk یک دایرکتوری ریشه و تابعی را می گیرد که مسیر، نمونه اطلاعات فایل و نمونه خطا را می گیرد.

package main

import (
    "fmt"
    "path/filepath"
    "os"
)

func main() {
    // Defines the root directory to start the walk
    root := "."

    // Uses the Walk function to walk the directory tree
    err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
        if err != nil {
            return err
        }

        // Prints the name of each file or directory
        fmt.Println(path)
        return nil
    })

    // Checks for errors
    if err != nil {
        fmt.Printf("Error walking directory tree: %v\n", err)
    }
}

این برنامه دایرکتوری ریشه را به عنوان دایرکتوری فعلی تعریف می کند. تابع اصلی از میان دایرکتوری های دایرکتوری ریشه عبور می کند و نام فایل ها را چاپ می کند.

مطلب مرتبط:   بازی FLAMES را با استفاده از پایتون بازی کنید

حاصل از Walking Directory Trees

تطبیق فایل ها با تطبیق الگو

می توانید از تابع Match برای تطبیق نام فایل ها با یک الگو استفاده کنید. نحو الگو بر اساس نحو رایج فایل عام است که از متاکاراکترهایی استفاده می کند که در محیط های یونیکس به عنوان الگوهای glob شناخته می شوند.

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines the pattern to match
    pattern := "*.txt"

    // Uses the Match function to match the pattern on files
    match, err := filepath.Match(pattern, "file.txt")

    if err != nil {
        fmt.Printf("Error matching pattern: %v\n", err)
        return
    }

    // Prints the result of the match
    if match {
        fmt.Println("File matches pattern.")
    } else {
        fmt.Println("File does not match pattern.")
    }
}

تابع اصلی یک نام فایل را با الگوی *.txt مطابقت می دهد و بسته به نتیجه عبارت شرطی یک رشته چاپ می کند.

تمیز کردن مسیرها با عملکرد تمیز

تابع Clean یک مسیر فایل را می گیرد و با حذف جداکننده های غیر ضروری و تغییرات دایرکتوری، مانند . بخش های (دایرکتوری فعلی) و .. (دایرکتوری والد).

تمیز کردن مسیرهای فایل مفید است زیرا اگر مسیری حاوی جداکننده‌های اضافی یا بخش‌های نامعتبر باشد یا مسیرهایی مستقل از دایرکتوری فعلی ایجاد کند، از بروز خطا جلوگیری می‌کند.

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Creates a path with redundant separators and invalid segments
    path := "/foo/bar//baz/.././qux/"

    // Cleans the path
    cleanPath := filepath.Clean(path)

    // Prints the original and cleaned file paths
    fmt.Println("Original path:", path)
    fmt.Println("Cleaned path:", cleanPath)
}

متغیر path مسیر فایل اولیه است و تابع Clean متغیر path را پاک می کند و مسیر فایل پاک شده را برمی گرداند. تابع main مسیرهای فایل اولیه و تمیز را چاپ می کند.

مطلب مرتبط:   10 منبع کاملا رایگان برای کمک به یادگیری توسعه اندروید

حاصل از تمیز کردن مسیرها با عملکرد تمیز

پیوستن و تقسیم مسیرهای فایل در Go

توابع Join و Split عملکردی را برای اتصال و تقسیم مسیرهای فایل ارائه می دهند.

تابع Join هر تعداد عنصر مسیر را می گیرد. یک رشته مسیر فایل منفرد را برمی گرداند که از الحاق آن عناصر با استفاده از جداکننده مسیر مناسب برای سیستم عامل حاصل می شود. تابع Join برای ساخت مسیرهای فایل مستقل از سیستم فایل زیربنایی مفید است.

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Defines four file paths for the join operation
    path1 := "folder1"
    path2 := "folder2"
    path3 := "subfolder1"
    path4 := "example.txt"

    // Joins the four file paths together into a single path
    joinedPath := filepath.Join(path1, path2, path3, path4)

    // Print the unified file path
    fmt.Println("Joined Path:", joinedPath)
}

متغیرهای path1، path2 و path3 نام پوشه هستند و متغیر path4 نام فایل است. تابع Join نام متغیرهای مسیر را می گیرد و مسیر فایل پیوست شده را برمی گرداند. تابع main مسیر فایل الحاق شده به کنسول را با بسته fmt چاپ می کند.

تابع Split یک رشته مسیر را می گیرد و دایرکتوری مسیر و اجزای نام فایل را برمی گرداند. تابع Split برای استخراج نام فایل ها یا تعیین دایرکتوری والد یک فایل مفید است.

package main

import (
    "fmt"
    "path/filepath"
)

func main() {
    // Sets the file path for the split operation
    filePath := "/home/user/documents/example.txt"
    
    // Use the Split function to split the file path
    // into its directory and file components
    dir, file := filepath.Split(filePath)
    
    // Print the directory and file components
    fmt.Println("Directory:", dir)
    fmt.Println("File:", file)
}

متغیر filePath مسیر اصلی فایل است و تابع Split متغیر filePath را می گیرد و فهرست و نام فایل را به صورت رشته برمی گرداند. تابع اصلی نام دایرکتوری و فایل را در کنسول چاپ می کند.

مطلب مرتبط:   چگونه یک ربات Slack خوشامدگویی در پایتون بسازیم

شما می توانید فایل های متنی را با Go دستکاری کنید

در کنار عملکرد سیستم فایل، Go بسته هایی را برای کمک به شما در کار با انواع فایل های مختلف از جمله فایل های متنی ارائه می دهد.

می‌توانید از بسته bufio برای عملیات ورودی و خروجی بافر در فایل‌های متنی و بسته os برای ایجاد فایل‌ها، در میان سایر عملیات‌ها استفاده کنید.