Python_day08--文件的操作--open

一、文件的读写

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

1、读文件

f = open("/tmp/passwd")    #注意我们这里尽量不要用系统的原文件进行操作,可以复制到/tmp目录下,这是一个临时存放目录;
print(f)

我们看的的结果如下:

难道是我们没有复制成功吗;我们打开/tmp/passwd看看

那么请你再看看下面的打开方式;

f = open("/tmp/passwd")
print(f.read())

当我们对这个文件产生read动作时,则可以读取到文件内容;我们代对这个文件进行操作时会有很多选项:

这里需要强调的是当我们在pycharm中打开文件进行操作时,系统会把文件内容把开并保存在内存中,所以一般我们打开文件后都要有关闭的动作;把文件内容从内存中释放掉,以便节约空间;

f.close()

注意:如果文件不存在, open() 函数就会抛出一个 IOError 的错误,并且给出错误码和详细的信息告诉你文件不存在;

2、对文件进行操作

read()会一次性读取文件的全部内容,如果文件有 10G,内存就爆了;那么我们应该怎么办?

我们用下面的一条公式来解决我们文件操作:

 print("after-文件打开状态:",f.closed)
r 以读的方式打开,定位到文件开头 , 默认的 mode
r+ 以读写的方式打开,定位文件开头 , 可以写入内容到文件
w 以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
w+ 以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
a 以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
a+ 以读写的方式打开,定位到文件的末尾,追加的方式,若文件不存在则会创建这个文件。


(1)r

1. 文件不存在, 则报错;

2. 'r'模式打开文件, 不会清空文件的所有内容

3. read?(yes)   write?(no)

不可写;

可读;


(2)r+

1.文件不存在, 则报错;

2.'r+'模式打开文件, 不会清空文件的所有内容

3.read?(yes)   write?(yes)


(3) w:

1. 文件不存在, 则创建文件;

2. 'w'模式打开文件, 先清空文件的所有内容

3. read?(no)   write?(yes)

(4)w+:

1.文件不存在, 则创建文件;

2.'w+'模式打开文件, 先清空文件的所有内容

3.read?(no)   write?(yes)

'w+'模式打开文件, 先清空文件的所有内容


(5)a:

1.文件不存在, 则创建文件;

2.定位到文件的末尾,是一个追加的操作

3.read(no);write(yes)



(6)a+

1. file not exist, create(若文件不存在则会创建这个文件);

2. write(yes), read(yes)

3. 追加写入的内容到最后;

二、对文件读取的集中操作

1、查看文件内容的一行

f = open("/tmp/passwd")
print(f.readline(),end=' ')
f.close()

2、查看文件的所有内容

f = open("/tmp/passwd")
file = f.readlines()
for i in file:
    print(i,end=' ')
f.close()

 

3、查看文件的路径

f = open("/tmp/passwd")
print(f.name)

f.close()

4、查看文件的关闭状态

print(f.closed)

5、查看字符编码

f = open("/tmp/passwd")
print(f.encoding)

f.close()

6、seek方法,

移动指针 seek第一个参数是偏移量: >0, 代表向右移动, <0,代表向左移动 ,=0,代表不动;

seek第2个参数是: 0:移动指针到文件开头 1: 不移动指针; 2:移动指针到文件末尾

f = open("/tmp/passwd")
print(f.seek(0,2))

f.close()

7、f.tell()函数,返回当前文件指针的偏移量

f = open("/tmp/passwd")
print(f.tell())

8、f.flush()函数,将缓冲区的内容写入到硬盘中

9、f.fileno() 函数,返回当前的文件描述符,一个数字

10、f.isatty() 函数,当前打开的文件是否是一个终端设备

三、对文件快速清空

'w'模式打开文件, 先清空文件的所有内

f = open("/tmp/passwd", 'w')
f.close()

四、文件的写操作

1、给文件内写入操作

f = open("/tmp/passwd",'a+')
# 文件写入时,也会移动指针,
f.write("hello")

f.close()

2、写入一行内容

f = open("/tmp/passwd",'a+')
# 文件写入时,也会移动指针,
f.writelines(['\ngcc\n', 'c++\n'])

f.close()

3、将列表内容加入到文将当中

f = open("/tmp/passwd",'w')
li = ['user1', 'user2', 'user3']
# 文件写入时,也会移动指针,
f.writelines([line+"\n" for line in  li])
f.close()












阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页