zoukankan      html  css  js  c++  java
  • os

    1. 传入参数
    argvs := os.Args
    t := argvs[1]
    w := argvs[2]
    s := argvs[3]
    
    传入的参数需要做判断,go中没有像py一样的三元运算,所以需要一一判断
    if t == "" {
    	t = "10"
    }
    if w == "" {
    	w = "200"
    }
    if s == "" {
    	s = "32"
    }
    然后参数就可以使用了
    

    import "os"







    关闭标准输出后,fmt打印无法生效,


    正常使用fmt.scan,会使用用户数据的数据,当os.Stdin.Close()后,用户输入scan失效,默认空值为0.

    • 写入

    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    func WriteFile(path string) {
    	//打开文件,新建文件
    	f, err := os.Create(path)
    	if err != nil {
    		//等于空。说明出错
    		fmt.Println("err", err)
    		return
    	}
    	defer f.Close()
    	var buf string
    	for i := 0; i < 10; i++ {
    		buf = fmt.Sprintf("i = %d
    ", i)
    		fmt.Println("buf", buf)
    		n, err := f.WriteString(buf)
    		if err != nil {
    			fmt.Println("err", err)
    		}
    
    		fmt.Println("n = ", n)
    
    	}
    
    }
    
    func main() {
    	path := "./first_fo_file.tx"
    	WriteFile(path)
    
    }
    

    buf = fmt.Sprintf("i = %d ", i) Sprintf函数将格式化的字符串存到缓存中,并返回,f就可以使用WriteString函数将返回的缓存数据写入到文件中。



    缓存区buf是一个切片,可以定义接受的大小,使用f.Read(buf)得到的是读到的内容长度,和一个错误返回值,
    io.EOF意味着文件读到了结尾,已经读完了
    string(buf[:n]) 从0开始读到文件结尾,string将切片转换成字符串

    按照行来读

    import bufio


    可以看到在读取到的内容中,也把文件每行的换行符 读取到了,使得printf中没有设置换行也执行了换行。

    拷贝文件实例

    package main
    
    import (
    	"io"
    	"os"
    	"fmt"
    )
    
    func main()  {
    	list := os.Args
    	// 获取命令行参数
    	if len(list) != 3{
    		fmt.Println("useage: xxx srcfile dstfile")
    		return
    	}
    
    	srcfilename := list[1]
    	dstfilename := list[2]
    	if srcfilename == dstfilename{
    		fmt.Println("源文件不能与目标文件重名")
    	}
    	sf,err1 := os.Open(srcfilename)
    	if err1 != nil{
    		fmt.Println("err1:" ,err1)
    		return
    	}
    
    	//新建目的文件
    	df,err2 := os.Create(dstfilename)
    	if err2 != nil{
    		fmt.Println("err2: ",err2)
    		return
    	}
    
    
    	//操作完毕关闭文件
    	defer sf.Close()
    	defer df.Close()
    
    	//从源文件读,写入目标文件,读多少写多少
    	buf := make([]byte, 4*1024)
    	for{
    		n,err := sf.Read(buf)
    		if err != nil{
    			if err == io.EOF{
    				break; //跳出循环的条件,读到文件结尾
    			}
    			fmt.Println("err",err)
    
    		}
    		//写入目的文件,读多少写多少
    		df.Write(buf[:n])
    		
    	}
    } 
    

    os.Chmod(sting,filemod)
    更改文件权限,

    os.Stat(filaname)
    文件状态
    os.IsNotExist()

    判断文件是否存在

    /**
     * 判断文件是否存在  存在返回 true 不存在返回false
     */
    func checkFileIsExist(filename string) bool {
    	var exist = true
    	if _, err := os.Stat(filename); os.IsNotExist(err) {
    		exist = false
    	}
    	return exist
    }
    

    os.Hostname()

    返回的是主机名跟一个错误接口

    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    func main() {
    	host, err := os.Hostname()
    	if err != nil {
    		fmt.Printf("%s", err)
    	} else {
    		fmt.Printf("%s", host)
    	}
    }
    
  • 相关阅读:
    ansible register 之用法
    vim 多行注释和取消注释
    开启 ssh 的 root 登录
    HAproxy 添加多个配置文件
    1002. A+B for Polynomials (25)
    Java中浮点数能连续精确表示整数的范围
    1001. A+B Format (20)
    1003. 我要通过!(20)
    1009. 说反话 (20)
    1006. 换个格式输出整数 (15)
  • 原文地址:https://www.cnblogs.com/cizao/p/11484454.html
Copyright © 2011-2022 走看看