一、python 中打开文件,
python中读写txt文件,首先得打开文件,即使用open()函数,
lastpath1 = r'D:\apache-jmeter-4.0\bin\srcWaveId.txt'
file1 = open(lastpath,'r'')
可以使用不同的模式打开文件,如:r,r+,w,w+,a,a+,它们的区别如下:
注意:write()会创建文件
二、文件读取
python常用的读取文件函数有三种read()、readline()、readlines()*
(1)、read() 一次性读全部内容 一次性读取文本中全部的内容,以字符串的形式返回结果
path1=r'D:\Document\test.txt'
file1=open(path1,'r')
content1=file1.read()
print(content1)
file1.close() #使用完毕后关闭文件
(2)、readline() 一行一行读取文件内容,调用几次读取几行,以字符串的形式返回结果
path2=r'D:\Document\test.txt'
file2=open(path1,'r')
content2=file2.readline() #读取第1行文件的内容
content2=file3.readline() #读取第2行文件的内容
print(content2)
print(content2)
file2.close() #文件打开,使用完毕后需要关闭
(3)、readlines()读取文本所有内容,并且以数列的格式返回结果,
path3=r'D:\Document\test.txt'
file3=open(path3,'r')
content3=file3.readlines()
print(content3)
file3.close() #文件打开,使用完毕后需要关闭
返回结果:
['one\n', 'two\n', 'three\n', 'four\n', 'five']
因readlines()会读到换行符,所以一般配合for in使用去除换行符,循环遍历文件中所有行并输出
f = open("test.txt", "r")
for line in f.readlines():
line = line.strip('\n') #去掉列表中每一个元素的换行符
print(line)
f.close()
三、文件写入
常用函数:write()
1、文件中写入内容,首先需要打开文件
2.wirte()写入后默认不换行,如果想换行则需要加入换行符\n
即可
path2 = r'D:\Document\test2.txt'
file2 = open(path2,'w+')
file2.write('aaa') #wirte()写入后默认不换行
file2.write('bbb\n') #加入换行符进行换行
b = 'ccc'
file2.write(b)
四、文件关闭
文件打开最后需要关闭,常用函数为close()。
还可以使用with open不需要写close()方法
五、文件删除
如需删除文件,必须导入 OS 模块,并运行其 os.remove() 函数;
为避免出现错误,可以在删除文件之前检查该文件是否存在:
import os
if os.path.exists(r'D:\HK 711.txt'): #判断文件是否存在
os.remove(r'D:\HK 711.txt') #删除文件
else:
print("The file does not exist")
若删除文件目录,则使用os.rmdir()
方法,但是只能删除空文件夹
mport os
os.rmdir(r'D:\a')
六、清空文件内容
使用file.truncate()方法清空文件内容
file1 = open(r'D:\1.txt','a+')
file1.truncate(0) #参数0表示从文件开头位置截断内容,也即清空,如果为2,表示文件清除后保留2个字符
file1.close()
七、读取文件行数
函数:len()
file6 = open(r'D:\Document\Workspace\SQLEdit\result.txt', 'r')
j = file6.readlines()
print(j)
print(len(j))
八、文件读写机制
如下代码,当执行完成后会发现,打印内容为空,也没有报错
file01 = open(r'D:\Document\Workspace\result.txt', 'w+')
file01.write('aaa')
content = file01.readlines()
print(content)
这是为什么呢?
文件读写机制:当一个文件被读或者写一次后,文件中类指针的东西指向的是整个文件的末尾,再次读时从末尾开始读的话肯定
是什么都读不到了。如何写完了接着读呢?加上f.seek(0)使得类指针的东西回到文件的开头然后从头开始读即可。
如下代码,加上seek()函数让光标回到首位,可以打印出内容。
file01 = open(r'D:\Document\Workspace\result.txt', 'w+')
file01.write('aaa')
file01.seek(0) #文件1光标移到首位
content = file01.readlines()
print(content)
九、踩坑
执行后报:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 217: illegal multibyte sequence
解决方案:加上编码方式encoding=‘UTF-8’
file1 = open(r'D:\HK 711.txt','r',encoding='utf-8')
line1 = file1.readline()
line2 = file1.readline()
print(line1)
print(line2)
file1.close()