python txt文件处理

一、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()

你可能感兴趣的:(Python,python,python文件读写删)