Python学习笔记 —— 文件操作

 今天来介绍一下Python的文件操作,后面的五六七我只是比较浅显的介绍了一下,前面四节的内容才是我们主要掌握的

目录

一、输入一行数据,并保存到文件word中(.doc)

二、在文件中输入多条内容,并保存到txt中(.txt)

三、用with open 的方法打开文件,并写入数据

四、读取文本和二进制文件

接下来我们就讲讲文件内容的读取

一次打印多行文本

五、处理结构化数据

六、查找文件中我们需要的元素

七、Python中数据的处理 

八、Python文件操作中的相对路径与绝对路径

 总结:


一、输入一行数据,并保存到文件word中(.doc)

将数据保存到文件,前面讲过内建函数,但是没有说过“Open” 函数,这是Python中用于访问文件的函数,我们需要做的就是指定一个文件名以及打开文件的方式,先看下面这段代码

myfile =open("Hello.doc","w")  #将数据写入保存文件,这里我们定义将数据保存到word中
#当然也可以将文件保存到文本txt中,我们只需把文件名后缀改成txt即可

myfile.write("hello world!")    #将指定的数据保存到文件

myfile.close()#保存并关闭文件夹

 写完这段代码后点击运行,然后系统就生成了一个word文档,我们打开也可以看到里面的内容

 

 这里我的命令是打开一个名为hello.doc的word文档,如果没有这个文件,系统就会创建一个名为 hello.doc的word并把内容存入里面,我们将其保存在 myfile 中,myfile 的名称可以是任意的,我们可以将myfile 看为引用已打开文件的一种特殊方法

我们用wirite 来写入我们需要保存的数据存在括号和引号当中 

然后到了最重要的yi一步,也就是close 关闭并保存文件

 PS:还有一点,这个程序运行完毕后会并不会输出任何数据到屏幕

 

还有一点,在第一行代码中,它有三种形式,分别是 “r” 表示读取数据,“w”表示写入数据(如果文件已存在,则覆盖原文件),“a” 和前面的元组,列表一样(代表append),在现有文件的末尾加入附属数据

 

二、在文件中输入多条内容,并保存到txt中(.txt

myfile = open("my_txt.txt","w")

myfile.write("大家好,我叫Gorit\n")
myfile.write("今天是晴天\n")
myfile.write("起个大早背背单词其实挺好的")

myfile.close()

 

三、用with open 的方法打开文件,并写入数据

with open("hello.txt","w") as myfile:#我们只使用myfile这个文件
    myfile.write("Hello world!\n")
    myfile.write("I love coding!\n")

print("Programing ending!")

这个程序多了 with as myfile 这两个代码块,后面写入数据用缩进来表示,缩进结束后,文件写入完毕,所以在执行print函数之前就完成了写入的工作,然后我们就不能访问  myfile 中的内容

这里我们用了 一种特殊方法打开文件,所以不需要手动关闭它

如果我们要在一个文件后面添加内容,只需把第一行代码 中的 “w”  改为 “a”

 

四、读取文本和二进制文件

前面介绍到三种文件的操作,我们现在要读取文件,需要用到 “r” 表示只读,我们先看这段代码

try:
    myfile = open("hello.docx","r")
    print("file opended")

except OSError as err:
    print("file couldn't find")
    print(err)

 

 信息量有点大,是不是,这个代码我故意写错了一点点地方,我们先看运行结果

 

 这里的  try 和  except  可以类似的理解为 if  else的一种 操作,这个程序返回的结果告诉我,我没有 创建过 “hello.docx”应用 try,except 可以让我们优雅的处理文件操作的异常,下面我将文件名改成正确的试试看

 

 

 有了try  except就可以处理文件异常(比如文件丢失),但是讲了这么多,我还是没有讲文本的读取

接下来我们就讲讲文件内容的读取

文件内容具体是什么无关紧要,我们在前面的程序稍加改进一下

myfile = open("hello.doc","w")
myfile.write("counting stars@!\nsofia!")
myfile.close()
try:
    myfile = open("hello.doc","r")
    for my_line in myfile:
        print(my_line,end=" ")#end = " " 代表不添加换行符

    myfile.close()
except OSError as err:
    print("file couldn't find")
    print(err)

 

为了程序显示的更加直观,我把原来写的hello world 覆盖了,重新添加了两句话,我们用for 循环读取了word中的 每一行内容,并将其打印在屏幕上,但是如果文本的内容比较多,我们想要一次打印所有内容又该怎么做呢?

 

一次打印多行文本

file = open("more_line text.txt","w")
file.write("How to study programing\n")
file.write("First,execise more\n")
file.write("Then,ask more questions to yourself!\n")
file.write("Coding online")

try:
    print("File found")
    text_data = open("more_line text.txt").read()#readlines 读取整行数据,可以用for来遍历,打印数据的时候去除换行符记得用end = " "
    print(text_data)


except OSError as err:
    print("File couldn't find")
    print(err)


 

五、处理结构化数据

前面所讲到的文件的操作基本可以处理简单的纯文本。 但是我们生活中的数据仅以纯文本的形式存储时远远不够的。

以备受推崇的逗号分隔值(CSV)格式为例,这种格式常用在不同的电子表格程序之间交换数据。在CSV文件中,每行就像 电子表格那样,每列由逗号分隔开

 

下面我们就用Python创建一个简单文本文件,命名为 text.txt

text = open("text.txt","w")

text.write("Mike, 1234\n")
text.write("Bob, 4567\n")
text.write("Gorit, 2538")

text.close()

这是一个简单的CSV文件,我们希望程序能够处理它,游览每一行,然后把名字和号码分开存储,这个 时候我们就可以从逗号位置进行分割, 这将得到一个 列表,然后我们在用列表填充字典,具体程序看下面的代码(前提你的编码是utf - 8 形式)

employees = {} #创建一个空白字典

try:
    myfile = open("text.txt","r")

    for text_line in myfile:

        mylist =text_line.split(",") #从该行的逗号分隔项目中创建列表
        employees[mylist[0]] = int(mylist[1].rstrip()) #添加项目(名字和号码)到项目中
#rstrip 删除多余的换行
    myfile.close()
    print(employees)

except OSError as err:
    print("File not found:")
    print(err)

 

六、查找文件中我们需要的元素

比如,给你一篇文章,我让你去计算某一个特定词语出现的次数的时候,你可以用下面这个方法

这是一个我之前创建好的一个 txt 文件

 

我的任务是查找 “exercise” 这个单词的位置,我们可以用循环遍历这个文件中每一行的内容,我们对文件进行只读操作

#将数据读入一个行列表
text_list = open("more_line text.txt","r").readlines()

#读取每一行 counter 的值加一,line记录读取得数据
for counter,line in enumerate(text_list):

#在该行中搜索“exercise”,返回它所在行的位置,没有则返回-1
   loc = line.find("exercise")

#如果不为-1,则表明已经找到字符串
if loc != -1:
    print("Found on line",counter+1,"postion",loc)

 

 七、Python中数据的处理 

从上面的程序,我们得知Python  的CSV 格式存储, 当你需要处理文本和数字的时候,可将这段代码用于程序中,但是分解数据并组成我们 希望的格式的时候却有些小麻烦

Python中可以 导入 import pickle 的方式来处理数据,但是这处理的 数据只能是二进制的,是我们 肉眼看不懂的,计算机理解的一种进制,这个就不做介绍了

还可以尝试用JSON—— JavaScript 对象标记JSON是一种可读的纯文本形式,下面我就以下面的一个简单的实例简要介绍一下JSON

关于JSON的 介绍——维基百科

JSON的介绍

 

import json

employess = {'Mike':1234,'Joe':5678,'Gorit':2458}

with open("employees.json","w")as myfile:
    json.dump(employess,myfile)

我们在里打开这个生成的文件夹,是不是很神奇的东西

 

八、Python文件操作中的相对路径绝对路径

路径问题

 

 总结:

文件的的读写操作 有三种形式  “w”只写。“r” 只读 “a” 添加  “b” 表示 二进制读入,“wb” 二进制写入,最后的文本处理用到JOSN,虽然这个名词看起来挺眼熟的,现在我是才知道它的作用是用在Python中的数据处理中,它能把处理完成的数据 展现出我们的人类语言

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值