文件操作
读
<1>、打开文件:
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(文件名,访问模式) ; open里面有两个参数。
示例如下:
f = open(‘test.txt’, ‘w’) open有返回值 找个变量接收 。
访问模式 说明
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在会崩溃。文件必须存在
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
用编辑器编辑的文件是文本文件;图片、视频、MP3等是二进制文件
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘r’, encoding=‘utf-8’) as f:
用open,首先在windows下创建一个文件,然后把文件的路径复制过来,这里需要转义,加上"r",
# data = f.read(5) 读
# data1 = f.read()
# print(data1)
f=open(‘a.txt’,‘r’,encoding=‘utf-8’)
data = f.read()
print(data)
<2>关闭文件close
close( )
1、f = open(r"D:\a.txt",mode=‘r’,encoding=‘gbk’)
2、f = open(r"D:\a.txt",mode=‘rb’)
content = f.read()
print(content)
f.close()
#是否可读
# print(f.readable())
#按行读
# print(f.readline()) ¥一行一行的读
#以列表形式读取
# print(f.readlines()) ¥ 按照行的方式,把整个文件都读取了,返回的是一个列表,其中每一行的数据是一个元素。
写
写文件 ,没有则会创建文件, 有文件把源文件删除在写
f = open(“a1.txt”,mode=‘wb’,encoding=‘utf-8’) # 执行会报错
f = open(“a1.txt”,mode=‘wb’)#不用加这个,encoding=‘utf-8’,因为是二进制形式 不用编码了 是byte类型
f.write(“技术改变命运”.encode(‘utf-8’)) #wb 是bytes类型 把str 转换成bytes类型 用encode
f.close()
覆盖写
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘w’, encoding=‘utf-8’) as f:
# f.write(‘你好美女\n你好帅哥’)
# result = f.writable()
# print(result)
# f.writelines([‘a’,‘b’,‘c’])
追加写
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘a’, encoding=‘utf-8’) as f:
f.write(’\ndddd’)
#bytes读
在utf-8字符集当中,中文占3个字节,生僻字占的更多
在gbk字符集当中,中文占2个字节,生僻字更多
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘rb’) as f:
print(f.read())
bytes写
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘wb’) as f:
# f.write(b’abc’)
# f.write(‘abcd’.encode(‘utf-8’))
# f.write(‘你好’.encode(‘utf-8’))
光标的移动
with open(r’C:\Users\Administrator.USER-20190512NQ\Desktop\a.txt’, ‘rb’) as f:
# f.seek(2,0) #前面的数字代表移动几个位置,后面的数字:0代表开头,1代表相对位置,2代表末尾
# f.seek(2,1)
f.seek(-2,2)
print(f.read())
tail -f /var/log/message
导入模块
为什么要导入模块?
1、从文件级别组织程序,更方便管理随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用
2、拿来主义,提升开发效率同样的原理,我们也可以下载别人写好的模块然后导入到自己的项目中使用,这种拿来主义,可以极大地提升我们的开发效率。
模块就是文件,把文件写好函数,再写一个文件,可以调用这个文件的方法。
1.写一个 test.py文件
import test
test.test1()
2.from test import test1
test1()
还可以给这个起别名, from test import test1 as tt