Python基础学习11——文件

news/2024/7/19 12:37:36 标签: python, 学习, 爬虫

我们可以利用python对本电脑文件夹里的文件进行处理,python中提供了一系列相关的方法和函数供我们使用。

读取文件

我们现在在本python文件中有一个txt文件名为Lego,那么我们就可以利用python打开该文件

python">with open('Lego.txt') as file_text:
    contents = file_text.read()
print(contents)

解释与说明:

  • 代码第1行,open()函数的作用是打开某个文件。有open()函数自然也有close()函数。在python中每打开一个文件都有在使用结束后关闭一个文件。但是由于上面代码中使用了with关键字,则不需要访问文件后人为将其关闭,python会自动将其关闭。
  • 代码第2行,read()函数的作用是读取文本内容并将其赋给contents变量进行接收。
  • 代码第3行,将读取的内容打印出来。注意这样写最后打印的内容会增加空一行,这是因为会多读一个空字符串。想要删去这个空格的一行可以改成print(contents.rstrip()),这样可以删去多余的空隔行。

文件路径

**绝对路径:**文件的完整路径。比如:D:\datasets\coco128\images\train2017

**相对路径:**相对于某个文件夹下的路径。比如:现在我有一个文件所在的路径是D:\datasets\coco128,有另外一个路径是D:\datasets\coco128\images\train2017,那么相对路径就是images\train2017

注意:windows系统使用反斜杠( \ )而不是( / ),但是在python中依然可以使用( / )作为路径表示,也有的版本是( // )

上面的读取文件的代码中,使用的就是相对路径。其直接使用文件格式“Lego.txt”即默认在python运行文件所在目录下搜索另外一个文件。如果文件路径过长且需要重复使用,那么我们可以用一个变量来暂存它:

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file) as file_text:
    contents = file_text.read()
print(contents)

逐行读取

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file) as file_text:
    for lines in file_text:
        print(lines)

通过一个for循环我们就可以打印出每一行的内容。

我们再进一步,如果我们想打印出每个字符呢?

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file) as file_text:
    for lines in file_text:
        print(lines)
        for words in lines:
            print(words)

我们只需要再嵌套一层即可。通过这两个例子,我们可以理解文件的存取模式:即由字符组成一行行字符串,再由一行行字符串组成一篇文档。

理解了这一点之后,其实我们就可以文件分成各行存入一个列表中。

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file) as file_text:
    lines = file_text.readlines()
for line in lines:
    print(line.rstrip())

这样也可以打印出文档各行。

但是上述做法不能很好的帮我们分离文档中有多少个单词(英文),只能统计有多少个字符。我们可以使用split()函数将单词分离开来:

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file) as file_text:
    contents = file_text.read()
    words = contents.split()
    num = len(words)

使用len()就可以统计出文档中单词的个数了。

写入文件

python">file = 'D:\datasets\coco128\images\train2017\Lego.txt'
with open(file, 'w') as file_text:
    file_text.write("I don't know what to write.\n")
    file_text.write("I don't know what to write so I write again.\n")

解释与说明:

  • 注意这里的open()函数多加了一个参数’w’,‘w’的意思是“写”,表示对文件需要进行写操作。其实在之前的读取文件中也可以传入参数’r’,但是不传就默认是对文件只读不写。补充一些其它的参数:'r’读取模式'w’写入模式'a’附加模式'r+'读写模式

注意:python只能写入字符串,如果想要传入数值,必须先将其转换成字符串模式。

写入模式和附加模式的区别:

  • 写入模式是将文件中原来的内容全部清除,按指令重新写入内容。
  • 附加模式是将保留文件中原来的内容,在文件文档的后面继续写入内容。

存储数据

很多程序都要求用户输入某种信息,比如用户名等等。而这些信息即使在程序关掉后也需要保存下来,所以我们需要一个能永久存储数据的容器,这个容器就是json文件。

json,全称JavaScript Object Notation,从名字就可以看出,其最初是由JavaScript开发的,但随后成为了一种常见形式,被众多语言所采用。也就是说,用json存储数据不仅能在python中使用,而且还能够在其它语言中使用。

下面我们来看下如何使用json文件存储数据。

json.dump()

json.dump()用于存储数据。

python">import json
numbers = [1,2,3,4,5,6]
with open('Lego.json','w') as lego:
    json.dump(numbers,lego)

numbers是存储的数据内容,lego是存储的文件对象

json.load()

json.load()用于存储数据。

python">import json
with open('Lego.json') as lego:
    num = json.load(lego)
print(num)

http://www.niftyadmin.cn/n/118939.html

相关文章

笔试中对链表题的总结

前言:链表中环的分析 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iOeojOe-1677858146436)(…/…/data/images/circle.png)] 对于链表环的问题,潜在的一个结论是从快慢指针的相遇点到环的入口节点 B 的距离和头节点到环的入口节点 B 的距离是…

应急响应-ubuntu系统cpu飙高

这里写目录标题一、排查过程二、处置过程三、溯源总结一、排查过程 1、查看CPU使用情况 top -c2、查看异常进程的具体参数 ps -aux3、通过微步查询域名信息 4、查看异常进程的监听端口 netstat -anlpt5、查找服务器内的异常文件 ls cat run.sh cat mservice.sh6、查看脚本…

【数据结构初阶】手撕单链表

目录一.链表概念和结构二.单链表功能的实现1.打印单链表内容2.申请单链表节点3.头插和尾插4.头删和尾删5.单链表查找6.pos位置前后插入7.pos位置删除三.链表面试题剖析一.链表概念和结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素…

powershell-dns-txt远程加载

2022-10-30 参考原文: 远程下载的通用替代方案 | 红队攻防 https://mp.weixin.qq.com/s/9MAKZZfNB5YFT7jgln5lXQ实现过程 dns环境:kali bind9(docker版),ip:192.168.161.128 靶机&#xff…

每日十问9c++-内存模型和名称空间

每日十问9c内存模型和名称空间 1.对于下面的情况,应使用哪种存储方案? a.homer 是函数的形参。 b. secret变量由两个文件共享。 c.topsecret 变量由一个文件中的所有函数共享,但对于其他文件来说是隐藏的。 d. beencalled 记录包含它的函数被调用的次数…

用Python获取史瓦西时空中克氏符的分量

文章目录三维球面坐标史瓦西时空三维球面坐标 Einsteinpy中提供了克氏符模型,可通过ChristoffelSymbols获取。简单起见,先以最直观的三维球面为例,来用Einsteinpy查看其克氏符的表达形式。 三维球面的度规张量可表示为 g001g11r2g22r2sin⁡…

Java中String详解(从原理理解经典面试题)

本篇文章我先通过经典面试题,筛选需要观看本篇文章的朋友,然后咱们介绍String的基本特性,通过基本特性就可以找到面试题的答案。最后咱们再深入每个面试题,通过字节码、编译原理、基本特性深入剖析所有的面试题,让大家…

大白话+画图 从源码角度一步步搞懂ArrayList和LinkedList的使用

1.说说ArrayList 1.基本原理 ArrayList,原理就是底层基于数组来实现。 01.基本原理: 数组的长度是固定的,java里面数组都是定长数组,比如数组大小设置为100,此时你不停的往ArrayList里面塞入这个数据,此…