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()方法

#使用with执行完文件操作后自动关闭文件,不用再调用close(),as为重命名
with open(r'F:\jupyter notebook files\text files.txt','r') as f:   
    contents=f.read()
    print(contents)

五、文件删除

如需删除文件,必须导入 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)

九、踩坑

1、每执行完一种增删改操作,需要重新open file

如下代码,当不重新打开文件f5,而直接在f4上truncate(0),没有实际效果

        with open(curdirpath + '/dest.txt', 'r') as f4:
            print('start')
            file4Content = f4.read()
            print(file4Content)
            print('end')
            self.textBrowser.setText(file4Content)
        with open(curdirpath + '/dest.txt', 'a+') as f5:
            f5.truncate(0)

2、程序执行后报错:

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()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值