Python—文件操作

一、文件操作

-python内置了读写文件的函数,用法和c是兼容的

  • 操作系统不允许普通的程序直接操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(又称文件描述符),然后通过操作系统提供的接口从这个文件对象操作

1、文件读写()

文件的读写过程为:

  1. 打开文件
  2. 向文件中写入内容
  3. 关闭文件
    ##2、open文件函数的读写模式 ##

r 以读的方式打开,定位到文件开头 , 默认的 mode
r+ 以读写的方式打开,定位文件开头 , 可以写入内容到文件
w 以写的方式打开,打开文件的时候会清空文件的内容,并且不能读
w+ 以读写的方式打开,定位到文件头,并且打开文件的时候也会清空文件的内容
a 以写的方式打开,定位到文件的末尾,是一个追加的操作 , 但并不允许读
a+ 以读写的方式打开,定位到文件的末尾,追加的方式。

在使用以上 mode 打开文件的时候,如果增加了b 模式,表示以二进制方式打开

3、文件操作_read

1、打开文件

f = open('/tmp/westos89')    以读的方式打开文件,返回一个文件操作
print(f,type(f))

2、操作文件

content = f.read()       ##读写所有文件
print(content)

3、每次读写文件的一行内容(读写了全部内容后再执行这个无返回值)

print(f.readline())    
print(f.readline())
print(f.readline())

4、返回文件的所有内容,类型为列表

print(f.readlines())

5、批量去掉’\n’

print([line.strip() for line in f.readlines()])

6、关闭文件

f.close()

4、文件操作_write

f = open('/tmp/westos89','w')
f.write('westos')     ##写入内容
li = ['java','c','python','php']
lis = [i+'\n' for i in li]
f.writelines(lis)    ##写入列表
print(f.writable())   ##判断文件是否可写
f.close()    ##关闭文件

5、读取图片

f = open('123.png','rb')    #将图片用二进制读的方式打开
res = f.read()
print(res)
f.close()
f1 = open('321.jpg','wb')  ##打开一个图片文件,以二进制写的方式,写入321的文件内容,类似于cp
f1.write(res)
f1.close()

6、文件指针移动

f = open('/tmp/passwd')   
print(f.readline())
f.seek(offset,whence)
##offset:偏移量
##whence:0:移动指针到文件最开始;1:不移动指针;2:移动指针到文件最后
f.seek(4,0) 
# f.seek(0,1)
# f.seek(0,2)  
print(f.tell())  ##查看当前指针位置
print(f.readline())
f.close()

二、with语句与文件对象的遍历

1、with语句

pythin2.5以后加入了安全上下文管理器with语句;
当执行完with语句之后会自动清理和关闭文件对象;

with open('/tmp/passwd') as f:
    print("with语句中:", f.closed)    ##with语句中,文件为打开状态
    f.read()
print("with之外:",f.closed)     ##with语句外,文件为关闭状态

2、遍历

from collections import Iterable
f = open('/tmp/passwd')
print("文件对象是否可迭代:",isinstance(f,Iterable))    ##判断是否可迭代

for line in f:    ##文件对象是可迭代的,默认遍历文件的每一行;读取打文件,使用for循环遍历文件内容即可
    print(line)

三、模块对于文件的操作

1、glob模块

import glob



print(glob.glob('/etc/*.conf', recursive=True))     ##查找/etc/下的.conf结尾的文件以列表的方式打开
f = glob.iglob('/etc/*.conf')
print(f)    ##以字典的方式打开


print(glob.glob('./*.txt'))
print(glob.glob('**/*.txt', recursive=True))
print(glob.glob('/etc/**/*.conf', recursive=True))
####*表示几级目录,一个*表示一级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值