基础知识
一、打开文件
open("D:\桌面\word_my.txt", 'r')#只读模式
open("D:\桌面\word_my.txt", 'w')#只写模式
open("D:\桌面\word_my.txt", 'a')#追加模式
在python中操作文件,首先要使用内置的(open函数打开该文件,返回一个文件对象。才能够对该文件进行操作。使用open函数打开文件可以设置三种常用模式,分别是只读模式(默认,使用字母r表示)、只写模式(使用字母w的表示)、追加模式(使用字母a表示)。只读模式只用于读取文件内容,不能向文件中写入数据;只写模式用于将数据覆盖写入到文件中;追加模式用于将数据追加写入到文件的末尾。
注意:在操作文件时,如果读取的文件内容包含中文或者写入到文件的数据包含中文为了避免出现中文乱码和其他报错,可以在open函数中设置打开文件的编码格式为encoding='utf-8',因为'utf-8'是一种兼容性更好的编码。具体可以参考网上关于编码和码位的知识。
open("D:\桌面\word_my.txt", 'r',encoding='utf-8')
二、写文件
2.1 write()方法
Python内置的write()方法可以将字符串数据写入到文件中。注意,使用write()方法写入到文件中的内容不会自动换行。(使用write()方法写入文件的数据,如果想实现换行写, 可以在写入的数据中需要换行的地方加入换行符“\n”。)
f=open("D:\桌面\word_my.txt", 'w')
f.write('abnormal\n')
f.write('abolish')
结果:
如果使用只写模式'w'打开文件,那么write()方法会采用覆盖写的方式将字符串数据写入文件。也就是说如果写入的文件不是一个空文件,那么会将原文件内容清空,然后写入新的内容。
如果需要在原文件末尾追加数据而不是覆盖原有的内容,那么我们可以使用追加模式“a”打开文件。
2.2 writelines()方法
f.writelines(['abnormal\n','abolish'])
调用一次write()方法只能将一个字符串写入到文件中, 如果想一-次写入多 个字符串就需要多次调用write()方法。那么有没有一种简洁的方法,可以一次向文件中写入多个字符串呢?答案是肯定的,Python还提供了另外-个向文件中写入数据的writelines()方法,writelines()方法可以将一个序列【list】中的多个字符串一次性写入到文件中。
2.3 close( )方法——f.close();
在日常的开发过程中,如果有操作数据库的需求,在通常情况下, 操作完数据库要将数据的连接关闭或者将连接返回给连接池,这样做的好处是避免资源浪费,减少程序出错的风险。那么使用文件对象操作完文件,同样需要使用close()方法关闭文件。如果不显示调用close( )方法关闭文件,在程序执行完也会自动关闭文件,操作系统会把待写入入文件的数据缓存起来,如果此时由于某些原因操作系统崩溃,就会造成缓存的数据丢失,无法将缓存的数据写入到文件。所以在写代码时,当使用完一些资源, 要对其释放或关闭,避免资源浪费,减少程序出错的风险。
三、读文件
3.1 read()方法.
从文件中读取数据,可以调用Python 内置的read( )方法。read( )方法可以一次性从文件中读取出所有文件内容。
with open("D:\桌面\word_my.txt", 'r',encoding='utf-8') as f:
file = f.read();#以str类型读取
print(file)
3.2 readlines()方法
Python内置的readlines()方法可以按照行的方式把整个文件中的内容一次全部读取出来,返回结果的是一一个列表)文件中的- -行数据就是列表中的一个元素,由于文件中每行末尾包含一个不可见的换行符“\n”,所以列表中每一个元素的最后也包含一个换行符 “\n”。
with open("D:\桌面\word_my.txt", 'r',encoding='utf-8') as f:
file_line = f.readlines();#以str类型读取
print(file_line[0])
print(file_line[1])
=======================我====是====分====割====线==========================
最近心血来潮要背单词,但是因为是寒假回家忘记带单词本,自己在网上找了一个单词word,但是苦于没有单词朗读。一顿操作发现手机上的软件“不背单词”可以自定义词库,还有跟读功能。但字库的输入体验不好,格式要求txt,每个单词还要回车换行,1000多单词确实操作起来确实麻烦。
现有文件的格式:txt
分析可知需要提取回车之后、‘/’之前的内容
具体流程:
- 读取txt文件
- 转化成可操作类型
- 按照规则提取
- 生成txt
import numpy as np
import os
file_path = ("D:\桌面\word_my.txt")##file_path为路径
with open(file_path, 'r',encoding='utf-8') as f:#用UTF_8编码打路径文件,否则出现错误UnicodeDecodeErrorbyte 0xad in position
file = f.read();#以str类型读取
print(type(file))#打印file的类型
find_flag=0;
ans=''
sum_of_str=file.count('');#统计字符个数,‘’为空字符,即任意字符都计数
print('字符个数总计:',sum_of_str);
for i in range(0,sum_of_str-1,1):
if find_flag==0:
if file[i] == '\n':
start = i;
find_flag = 1;
else:
if file[i] == '/':
end=i
while file[end-1]==' ':
end=end-1;
#print (file[start:end])
ans=ans+file[start:end]
find_flag = 0;
##生成方法一:直接复制
# print(ans)
##生成方法二:生成新的txt文件
fname=input('fname>')#输入文件名字
print('file\' name is:',fname)
fobj=open(fname,'w',encoding='utf-8')
fobj.write(ans)
fobj.close()
# print(file)
输入文件名字 ‘w4’
参考: