用python将内容写入文件,写入数据出现重复多次,怎么办?

Python013

用python将内容写入文件,写入数据出现重复多次,怎么办?,第1张

代码file.open("file","a/r/w"),修改第二参数

a是添加内容到以前的文件最后面

r是只读无法写

w是重新写,把之前的内容全部覆盖的.

一、什么是Python

Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。

常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。

需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

7月20日,IEEE发布2017年编程语言排行榜:Python高居首位 。

二、Python的设计风格

Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。

设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的Python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言(另一种功能类似的高级动态语言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。

Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。其中很重要的一项就是Python的缩进规则。

一个和其他大多数语言(如C)的区别就是,一个模块的界限,完全是由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。这一点曾经引起过争议。

因为自从C这类的语言诞生后,语言的语法含义与字符的排列方式分离开来,曾经被认为是一种程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

在磁盘上读写文件之前,必须先打开这个文件。打开文件就需要提供文件的路径。

在与Python程序同一个目录下,我们有一个名为 pi.txt 的文件,它的内容如下:

现在使用Python来打开和关闭它:

执行此程序不会有任何输出,这表示着打开和关闭文件都得到了正确执行。

可以看到,使用 open() 函数打开文件,参数为文件名(或文件路径);该函数会返回一个文件句柄,文件句柄并不会实际保存文件的内容,而是代表着一种操作,在上面的例子中,文件句柄被赋值给变量 fhand 。

打开文件后,程序具有读(默认)该文件的权限。

最后,使用文件句柄的 close() 方法关闭文件。这非常重要,因为使用完而没有关闭的文件会占用内存或造成安全问题。

如果Python找不到该文件,则会返回错误,比如下面这样:

Python提示我们没有相应的文件或者目录: 'pii.txt'。

打开文件后就可以对文件进行操作:

fhand.read() 方法将文件内容作为一个字符串返回。

文件中的每一行末尾使用换行符 \n 表示换行,例子中方法 rstrip() 去掉文本中的换行符,然后输出。

程序的运行效果如下:

如果在文件关闭之前程序发生BUG意外退出,则文件不会关闭,为了避免此类事件的发生,可以使用 with 语句:

with 语句的特点是即便在操作文件时发生错误,文件也会自动被清理。

fhand.read() 虽然可以读取文本内容,但是当我们想要逐行处理文件内容,或者文件很大而无法一次性加载进内存的时候,就不适用了。

可以使用 for 语句逐行处理文件内容:

本程序中将文件名保存在变量 filename 中。

打开文件后,使用 for 语句按行读取文件内容。例子中,每次循环依次取一行文本以字符串的格式保存在变量 line 中,每次循环中变量 count 自增1。

这个程序的作用是,打开程序所在目录的 when_old.txt 文件,然后统计行数,并输出结果。

when_old.txt 文件的内容是:

可以使用其他方法操作字符串 line :

程序将以 'And' 开头的行打印出来。

打开文件后,默认的权限是读(r),如果要写文件,则需要使用写(w)或者追加(a)权限。

w权限,打开一个文件用于写入。如果该文件存在,则覆盖该文件;如果该文件不存在,则创建该文件。

a权限,打开一个文件用于追加。如果该文件存在,在文件末尾追加;如果该文件不存在,则创建该文件。

下面是一个使用w权限打开文件的例子:

例子中使用w权限打开该文件,并写入两行。(如果该文件存在,则内容会被覆盖)

fhand.write() 不会自动添加换行符,所以如果需要换行,需在末尾添加 \n 。

下面我们写一个统计文件中词频的程序。

它会统计文件中各个词的出现的次数,然后由高到低显示出前5个词。

首先我们完成打开和关闭文件的程序内容:

在例子中,由用户输入文件名,并且使用异常捕获以处理文件打开时的错误。

下面对内容进行统计:

这个程序:

如此,我们就在字典中存放了 单词:次数 的键值对。

由于字典不能保存顺序,所以不能对其进行排序。为此,将每个键值对都添加到一个列表中:

在列表 word_list 中,每一项都是一个元组,每个元组第一个值是单词出现的次数,第二个值是单词内容。

对其进行逆向(由大到小)排序:

打印最终结果:

整个程序如下:

下面是程序运行结果的示例:

1、打开编辑器,新建一个PY文档。

2、import os引入os模块。

3、创建一个变量,这样可以创建一个文件。

4、写入内容,记得要加上utf-8。

5、记得在结尾加上关闭文件。

6、运行一下,就可以发现中文被写入了。