Python处理文件的几个常用小知识

Python 这门语言有个很大的用途就是使用它来进行文件处理,学会处理文件和保存数据可以让你的程序使用起来更加容易和方便,因此小编为大家准备了几个处理文件常用的几个小知识,快来一起学习吧!

— 01 —

读取文件数据

文本文件可存储的数据量非常丰富,像天气数据、交通数据、文学作品等。每当我们需要分析或修改储存在文件中的信息时,读取文件就显得尤为重要。想读取一个文件的信息,我们可以一次性读取全部内容,也可以每次一行逐步读取。

读取整个文件

我们先来创建一个包含几行文本的文件,在编辑器中输入以下数据行,保存为 txt 格式:

pi.txt:3.1415926535  8979323846  2643383279

打开并读取该文件:

with open('pi.txt') as file:    contents = file.read()    print(contents)

在这行程序中,出现了两个函数open( )和read( )。

函数open( )用于打开一个文件,它接受的参数是要打开文件的名称,Python 会在当前执行的文件目录中查找指定的文件,然后返回一个表示文件的对象。

方法read( ) 用于读取这个文件的全部内容,并将其作为一个长长的字符串储存在变量contents中。但这段程序的运行结果大家可以尝试一下,它会把这个文本的内容全部输出并在最后多出一行空行,这是因为read( )到达文件末尾时会返回一个空字符串,显示在结果就是一个空行。如果想要删除末尾的空行,可以在print中使用rstrip( ):

print(contents.rstrip())

关于文件路径,我们需要注意的是,Linux 系统和 windows 有一点不同:

在Linux和OS X中(使用斜杠/):

with open('files/filename.txt') as file_object:

在Windows中(使用反斜杠\):

with open('files\filename.txt') as file_object:

逐行读取

如果想每次一行的读取文件,可对文件对象使用for循环:

filename='pi.txt'with open(filename) as file:   for line in file:        print(line)   

同样,为了删除每一行多余出来的空行,我们可以使用rstrip( ):

filename='pi.txt'with open(filename) as file:   for line in file:        print(line.rstrip())   

创建一个包含文件各行内容的列表

当使用with时,open( )返回的文件对象只能在with代码块内使用。如果想要在代码块外访问文件内容时,我们可以在with代码块内将文件的各行储存在一个列表中,并在with代码块外使用该列表访问。

filename='pi.txt'with open(filename) as file:  lines = file.readlines()for line in lines:    print(line.rstrip())

方法readlines( )表示从文件中读取每一行,并将其储存在一个列表中。

使用文件内容

filename='pi.txt'with open(filename) as file:   lines = file.readlines()ss=''for line in lines:    ss += line.strip()print(ss)

该程序运行结果为:3.141592653589793238462643383279

— 02 —

写入文件

写入空文件
将文本写入文件,可以在调用open( )时提供另一个实参。即打开文件时,可以指定需要的模式:'r'读取模式,'w'写入模式,'a'附加模式,'r+'读取和写入模式。python 默认只读模式。

with open(filename,'w') as file:    file.write("abcdefg")

注意:python 只能将字符串写入文本文件,如果想把数值数据储存到文本文件,必须先使用函数str( )将其转为字符串格式。

写入多行

with open(filename,'w') as file:    file.write("abcdefg\n")    file.write("hijklmn\n")

存储数据

python中常使用json来存储数据。json可以将简单的python数据结构转存到文件中,并在程序再次运行时加载该文件中的数据。

JSON数据格式并非python专用,它是一种常用的数据格式,很有用,也易于学习。

json.dump( ) 和 json.load( )

这两个函数分别用于储存数据和加载数据。json.dump() 接受两个实参:要储存的数据和用于储存数据的文件对象。json.load() 用于加载存储在json文件中的信息。

import jsonnum = [1,2,3,4,5]filename = 'a.json'with open(filename,'w') as f:    json.dump(num,f)
with open(filename) as f:    num = json.load(f)print(num)

这是一种在程序之间共享数据的简单方式。

实现一个小功能

下面这个程序可以实现我们常常在游戏开头时遇到的一个小功能,一起来试试吧!

import json# 如果以前储存了用户名就加载它,否则,就提示用户输入名字并存储filename = 'name.json'try:    with open(filename) as f:        username=json.load(f)except FileNotFoundError:    name = input("你叫什么名字?") with open(filename,'w') as f:     json.dump(name,f)     print("我们会记住你的,"+name+"!")else:    print("欢迎回来,"+name+"!")

------- End -------

点右下角「在看」与转发
是对我们最大的支持

特别推荐下公众号「柠檬数据」,会不定期分享数据故事,欢迎来串门。

回复「600」获取《Python知识手册》
回复「time」获取《Python时间使用指南》

柠檬数据
发现数据价值,分享数据故事

扫码关注,查看更多内容

©著作权归作者所有:来自51CTO博客作者mb5fe18e7c44408的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 一文搞定pandas的数据合并
  2. centos 用户权限管理与文件权限设定 详解
  3. 数据结构之哈希表
  4. 1.5 万 Star!界面酷炫、简单易用的数据库开源客户端
  5. 数据结构与算法: 三十张图弄懂「图的两种遍历方式」
  6. 干货 | 滴滴 数据分析原来是这样做的!
  7. 有效解决U盘文件变成exe格式的方法
  8. 几道和「黑洞照片」那种海量数据有关的算法问题
  9. 数据结构与算法——最小生成树

随机推荐

  1. Android FrameLayout
  2. Android获取RecyclerView滑动距离
  3. Android Handler消息处理机制面试5连问
  4. Android拨打电话权限总结
  5. Android中am命令用法
  6. Android(安卓)AlertDialog 无法弹出输入
  7. Android之自定义ProgressBar
  8. Android编译系统(三):官方文档Android Bu
  9. Android中短信拦截解决方案
  10. listview圆角实现