python读写文件——txt文件操作生成单词表

基础知识

一、打开文件

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

分析可知需要提取回车之后、‘/’之前的内容

具体流程:

  1. 读取txt文件
  2. 转化成可操作类型
  3. 按照规则提取
  4. 生成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’

 参考:

Python 字符串 | 菜鸟教程Python 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号('或')来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 = 'Hello World!' var2 = 'Python Runoob' Python 访问字符串中的值 Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 Pyt..https://www.runoob.com/python/python-strings.html

说明 此版本仅仅为测试版,是我一时兴起写了半个小时的产物。。。所以许多方面未能完善,希望大家多多提意见,也希望有人能继续编写。 此程序根据“杨鹏17天背词法”及“艾宾浩斯记忆曲线”编写,可以帮用户生成一个“*天背单词计划”,各个list都会在一定天数内重复1~5次,有助于用户牢固、快速背单词,是背四六级、托福、gre单词的居家旅行必备良品~ 编写缘由 最近在拿新东方的托福红宝书背词,>_<有些单词背完了忘、忘完了背,最后是背下来了,但是花费的时间实在不少,十分纠结。况且我还是最近闲的,如果是处在艰难备考期的同志们遇到背单词的问题肯定更是急得跳脚了吧……于是胡乱背的我开始在网上搜“单词记忆法”这种东西,然后就搜到了“杨鹏17 天gre的表格”,顿时觉得如获至宝,该表格根据大众记忆曲线挑出了最好的复习时间,能让人用尽量少的时间记牢单词,解放了许多在词海中苦苦遨游数个月的考生。可是,gre对我来说级别太高,我还是先背背大学四级、托福比较实际,于是我又开始搜……结果只搜到根据“toefl词汇 词根+联想-俞敏洪 35list版本”的表格,= =十分懊恼,只好自己拿excel根据最基本的记忆法开始列计划表。结果,列了两行就发疯乱套了= =这样,才想到写个小程序,自定义“每日背list数”、“单词书list总数”(网上搜到的表格基本都是按35个list写的,但是我买的书是45个 list= =……)方便自己日后列表、方便大众背单词
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值