Go语言文件操作

Python016

Go语言文件操作,第1张

本文主要介绍了Go语言中文件读写的相关操作。

文件是什么?

计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。

os.Open() 函数能够打开一个文件,返回一个 *File 和一个 err 。对得到的文件实例调用 close() 方法能够关闭文件。

为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。

Read方法定义如下:

它接收一个字节切片,返回读取的字节数和可能的具体错误,读到文件末尾时会返回 0 和 io.EOF 。 举个例子:

使用for循环读取文件中的所有数据。

bufio是在file的基础上封装了一层API,支持更多的功能。

io/ioutil 包的 ReadFile 方法能够读取完整的文件,只需要将文件名作为参数传入。

os.OpenFile() 函数能够以指定模式打开文件,从而实现文件写入相关功能。

其中:

name :要打开的文件名 flag :打开文件的模式。 模式有以下几种:

perm :文件权限,一个八进制数。r(读)04,w(写)02,x(执行)01。

第一个问题,打开文件应添加"|os.O_WRONLY"

file, err := os.OpenFile("data.dat",os.O_CREATE|os.O_APPEND|os.O_WRONLY,0777)

第二个问题,将Count方法中的 "ch<-i"放到方法的最后一行就可以了。

因为一旦“ch<-i"执行了,main方法中的 "<-ch"就会执行通过当所有的"<-ch"执行完后程序就结束了。但这时Count的线程方法还来不及执行完(打开文件的速度相对较慢),所以仅仅执行一次文件操作就结束了

格式:open('文件的路径','权限')

例如:open('E:/aa.txt','r')

1、只读模式r

平时可能会出现使用open读取不到文件内容的情况,请注意下图中移动光标的操作

o=open('E:/aa.txt','r')#打开一个文件,将这个操作赋予给一个变量

a=o.read() #读取文件的所有内容并返回字符串

o.seek(0,0)#将光标移动到开头,如果不将光标移动到开头可能会读取不出东西,

因为上一步“a=o.read()”将鼠标的指针移动到了文段的末尾

b=o.readline() #读取文件第一行内容

o.seek(0,0)#将光标移动到开头,因为上一步“b=o.readline()”将指针移动到了

文段第一行的末尾

c=o.readlines()#读取文件所有内容并返回字符串

d=o.readable() #判断文件是否可读,返回布尔值,返回True或者False

2、写入覆盖模式w

注意,如果在文件路径中没有对应的文件存在,python在执行写入操作时会自动创建一个文件,

例如我下面的文件路径,如果没aa.txt这个文件的话,那么我在执行这段程序时就会自动创建一个

o=open('E:/aa.txt','w')

o.write('hello ')#将文件中的内容覆盖掉,并写入括号中的内容,write传入的是一个字符串

o=open('E:/aa.txt','w')

o.writelines('HELLO') #将文件中的内容覆盖掉并写入括号中的内容

在txt文件中看起来感觉跟write没啥区别,其实writelines传入的是一个数组,而write传入的是字符串

3、写入追加模式a和a+

可能会出现出现“io.UnsupportedOperation: not readable”这种错误,请注意下图的文件权限

o=open('E:/aa.txt','a')

o.write('lol好玩')#写入追加在内容后

o.writelines('\n\n999') #写入追加在内容后,\n是换行,两个\n意思换两行

a=o.writable()#判断文件是否可写入追加,并将判断出来的布尔值赋值给变量a

o.seek(0,0) #将光标移动到最开头

print(a) #输出变量a,查看文件是否可以追加

print(o.read()) #读取文件内容返回列表,前提权限给的是a+,如果是a的话无法查看

并且会报错,如下图所示

这里是a+的用法以及示例

o=open('E:/aa.txt','a+')

o.write('nb') #写入追加在文件的内容后面

o.writelines('\n999') #写入追加在内容后面,\n是换行

a=o.writable()#判断文件是否可写入追加,并将判断出来的布尔值赋值给变量a

o.seek(0,0) #将光标移动到最开头

print(a) #输出变量a,查看文件是否可以追加

print(o.read()) #读取文件内容返回列表,前提权限给的是a+,如果是a的话无法查看

当文件中为空时,执行以上代码结果应该如下