Python 文件的读取、写入

Python中文件的简单读取、写入方法

作者:爱吃肉的小花生
首先声明:写这些只是方便做着自己记忆和理解,如果能帮助到大家那当然更好不过

一、从文件中读取数据

(1)读取全部数据

我们先创建一个文本文件python_learning.txt,我们尝试着用python将其读取。我们先写一个正确的示范:

file_path = 'C:Users\Peanut Uncle\Desktop\python_learning.txt'
with open(file_path) as fap:
    contents = fap.read()
    print(contents)

In python you can 为所欲为
In python you can 大开杀戒
In python you can 纵享丝滑
In python you can 哈撒给i
In python you can 哈里克i同

输出结果如上所示,在这里有几个问题要讲一下,也是我自己一开始犯的错误:

1. C:\Users\Peanut Uncle\Desktop 文件的属性里文件位置是这样的,但是如果这样直接输入,我们运行时会报错,我们应该把Users前面的“\”删掉或者换成“/”都可以。
2. 我们用了with open()as 别名:但其实我们可以不用with的,使用with是因为我们只在这一块读取数据,如果我们忘记关掉,并不会影响我们的数据,否则可能会是数据损失
3. as 别名:是因为python中,file_path只是一个字符串,并没有储存数据,只是方便python去在文件中找到他,我们给他一个别名,方便我们去将文件中的数据储存到变量中。

下面我把错误的示例展现给大家:

 file_path = 'C:\Users\Peanut Uncle\Desktop\python_learning.txt'
with open(file_path) as fap:
    contents = fap.read()
    print(contents)

'''输出的结果是:
  File "D:/PycharmProjects/data/Ch10文件与异常/wordcloud.py", line 1
    file_path = 'C:\Users\Peanut Uncle\Desktop\python_learning.txt'
               ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape'''

显然python报错了,这就是我们多加了一个’'导致的,我们平时可以多加尝试,出现错误并不是什么坏事,反而会加深大家对其的理解,下面我们展示一下如果不给其别名会有什么结果:

file_path = 'C:Users\Peanut Uncle\Desktop\python_learning.txt'
with open(file_path) :
    contents = file_path.read()
    print(contents)
    结果也是给我们报错了:
''AttributeError: 'str' object has no attribute 'read''

(2)逐行读取

例如我们的文本,需要按行读取,一行一行地检查,这时我们就可以类似之前的遍历来做,我们读取pi.txt文件,里面是圆周率的几位数

file_path = 'C:Users\Peanut Uncle\Desktop\pi.txt'
with open(file_path) as pi :
    for line in pi:
        print(line)

我们发现这时我们并不需要什么read函数来帮忙,直接遍历文件就可以了。但注意我们打印时,每一行后都加了换行符,为了与原文件保持一致,我们做了一些改进。我们用之前说过的stirp来优化一下:

file_path = 'C:Users\Peanut Uncle\Desktop\pi.txt'
with open(file_path) as pi :
    for line in pi:
        print(line.strip())
##lstrip() 删前空格  
##rstrip()删后空格
##strip()删所有空格  我们根据特殊情况特殊对待

(3)将文件中的每一行内容存在一个列表中,我们用到readlines()

file_path = 'C:Users\Peanut Uncle\Desktop\pi.txt'
with open(file_path) as pi :
    contents = pi.readlines()
print(contents)
for line in contents:
    line = line.strip()
    '这里我们需要注意strip只能删字符元素的空格'
   ' 不能直接删列表中的\n''
    print(line)

上面我们先将pi文件中的每一行都放到列表中,然后我们遍历该列表,并将每一行打印,这里要注意,默认是有\n换行的,所以我们打印时用了strip()。

(4)使用文件的内容

很多时候我们需要使用文件中的数据或内容,比如我们需要将pi文件中的圆周率用作计算时,我们将文件打开,并将其的值调用

file_path = 'C:Users\Peanut Uncle\Desktop\pi.txt'
with open(file_path) as pi :
     pi1 = ''
     for line in pi :
         pi1 = pi1+line.strip()'因为默认有\n,所以想直接工厂函数会报错'
     contents = float(pi1)
square = contents**2
print(square)

二、写入文件

有时我们也需要将内容写到文件中,有去当然也有舍嘛,我们用write()

file_name = 'C:Users\Peanut Uncle\Desktop\写入文件.txt'
'''如果我们之前有这个文件,那我们写入时会清空文件再写入
所以我们在写入的时候,要慎重,小心不要把原本的内容清空了'''
with open(file_name,'w') as write_file:
    message = write_file.write('我喜欢你,那绝对是当然的!')
    '''如果我们之前没有这个文件,会自动创建该文件'''
    '''这是我们不会打印出来,而会把内容写到该文件中'''

我们看到open后面的参数:

1. 'w’代表写入
2. 'r’代表只读取,我们默认为只读
3. 'a’代表附加,我们在后面直接写入,并不会清空

那我们拿个例题试一下:我们询问用户为什么喜欢python?并把原因放到一个文件中。

file_name = 'C:Users\Peanut Uncle\Desktop\guests.txt'
with open(file_name,'w') as guests :
    while True:
        reason = input('Why are you like python :')
        if reason == '没了':
            break
        else:
            guests.write(reason+'\n')

我们要跳出循环才可以写到文件中,否则是空白的,要出现:Process finished with exit code 0即可。
这就是简单的文件读取与写入,更深层次的我们可以去查阅python自带Idle中help里的详情。


版权声明:本文为weixin_45784583原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。