Python基础 P8 永久存储

这篇具有很好参考价值的文章主要介绍了Python基础 P8 永久存储。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python基础 P8 永久存储

Python基础 P8 永久存储

文件

Python基础 P8 永久存储

大多数的程序都遵循着输入->处理->输出的模型,首先接收输入数据,然后按照要求进行处理,最后输出数据

但你迫切想要关注到系统的方方面面,需要自己的代码可以自动分析系统的日志,需要分析的结果可以保存为一个新的日志,甚至需要与外面的世界进行交流。

在编写代码的时候,操作系统为了更快地做出响应,把所有当前的数据都放在内存中,因为内存和CPU数据传输的速度要比在硬盘和CPU之间传输的速度快很多倍,但内存有一个天生的不足,就是一旦断电就没了;所以将一些必要且重要的文件存储在文件中就显得很重要了

打开文件

open

在Python中,使用open()这个内置函数来打开文件并返回文件对象

open(file, mode='r', buffering=-1, encoding=None, errors=None, closefd=True, opener=None)

file:传入的文件名,如果只有文件名,不带路径的话,那么python会在当前文件夹中去找到文件并打开

mode:指定文件打开的模式,具体如下

打开模式 执行操作
r 以只读方式打开文件(默认)
w 以写入的方式打开文件,会覆盖已存在的文件
x 如果文件已经存在,使用此模式打开将引发异常
a 以写入模式打开文件,如果文件存在,则在末尾追加写入
b 以二进制模式打开文件
t 以文本模式打开(默认)
+ 可读写模式(可添加到其他模式中使用)
U 通用换行符支持

举个栗子

Python基础 P8 永久存储

f = open(r".\123.txt")
print(f)

Python基础 P8 永久存储

这样就说明以只读方式读取成功123.txt这个文件了

其他的参数都可以选填,使用open()成功打开一个文件之后,它会返回一个文件对象,获取这个文件对象之后,就可以对这个文件进行操作了

buffering:缓冲的意思,指在读取或写入文件时,数据被存储在内存中的一段缓冲区中,而不是直接访问磁盘;缓冲可以提高程序的性能,减少I/O操作的次数;在打开文件时,可以使用buffering参数来指定缓冲的大小或缓冲策略
该参数可选,如果不写,则默认值为-1,在默认情况下,python会根据文件的类型和操作系统的不同自动选择缓冲策略;如果写0表示不缓冲,每次进行I/O操作,数据会立即被写入或读取磁盘;写入1时表示使用行缓冲,每次读取或写入行结束符时,数据才会被写入或读取磁盘;大于1时的整数表示缓冲区的大小,当缓冲区被填满时数据会写入或读取磁盘,适用于需要大量读写文件的情况,可以提高程序的性能。

encoding:这个参数用于指定打开文件时所采用的编码格式,在读取和写入文件时,如果文件的编码格式与指定的编码格式不同,就会导致数据的乱码或其他异常
默认值为None,表示使用系统默认的编码格式;如果需要指定其他的编码格式,可以传递一个字符串作为参数,比如’utf-8’

errors:这个参数用于指定在文件读取或写入时遇到编码错误时的处理方式,当文件的编码与指定的编码格式不匹配的时候,可能会出现无法解码或编码的情况。
默认值为None,表示在遇到编码错误时抛出一个UnicodeError异常
ingore:忽略无法解码或编码的字符,直接跳过;适用于需要处理大量数据,但对数据完整性要求不高的情况
replace:用指定的字符(默认为?)代替无法解码或编码的字符;适用于需要保留完整数据,但对数据质量要求不高的情况
strict:在遇到无法解码或编码的字符时,抛出UniceodeError异常;适用于需要保留完整数据,并对数据质量有较高要求的情况

closefd:这个参数用于指定在关闭文件时是否同时关闭文件描述符;
当参数为True时,在文件被关闭时会同时关闭文件描述符;如果参数为False,文件被关闭时不会关闭文件描述符,这意味着在程序退出时,文件描述符会一直保持打开状态

opener:这个参数用于指定一个自定义的文件打开器,用于在打开文件时对文件进行预处理或后处理,如果未指定opener参数,则使用默认的文件打开器


文件对象的方法

在取得文件之后,我们可以对文件对象进行读取修改等操作

文件对象的方法 执行操作
close() 关闭文件
read(size=-1) 从文件读取size个字符,当未给定负值得时候,读取剩余的所有字符,然后作为字符串返回
readline() 从文件读取一整行字符串
write(str) 将字符串str写入文件
writelines(seq) 向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
seek(offset,from) 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字符
tell() 返回当前文件中的位置

文件的关闭close

close方法用于关闭文件,关闭文件是非常重要的,但是python拥有垃圾收集机制,会在文件对象的引用计数降至零的时候自动关闭文件,所以在python编程,如果忘记关闭文件并不会造成内存泄漏那么危险的结果。但是养成不使用该文件的时候关闭文件这个习惯是必要的。

举个栗子

Python基础 P8 永久存储

f = open(r".\123.txt")
print(f.read())
f.close()
print(f.read())

Python基础 P8 永久存储

在关闭文件之后再去读文件报错,说明已经成功关闭了这个文件

文件的读取read/readline

文件读取的方法有很多,可以使用文件队形的read()和readline()方法,也可以直接使用list(f)来读取

read

read是以字节为单位读取,如果不设置参数,那么会全部进行读取,文件指针指向文件末尾

readline

readline()方法用于在文件中读取一整行,就是从文件指针的位置向后读取,直到遇到换行符(\n)结束,文件指针指向结束位置

list
文件还可以使用list直接来获取文件内容并转换为列表

举个栗子

Python基础 P8 永久存储

这里的seek是定位函数,这里是将位置重新定位到开头

f = open(r".\123.txt")

print(f.read(2), end='\n\n')
print(f.readline(), end='\n\n')

print(f.read(), end='\n\n')
f.seek(0, 0)
print(list(f))

Python基础 P8 永久存储

文件的定位tell/seek

tell

tell能够获取当前的位置值

seek

而seek则是将位置定位进行修改到指定位置

举个栗子

Python基础 P8 永久存储

f = open(r".\123.txt")

print(f.tell())
f.readline()
print(f.tell())

f.seek(0, 2)
print(f.tell())

Python基础 P8 永久存储

文件的写入write/writeline

如果需要写入文件,需要在打开文件的模式为‘w’或‘a’,否则会出错

举个栗子

Python基础 P8 永久存储

Python基础 P8 永久存储

f = open(r".\123.txt", '+a')

f.seek(0, 0)
print(f.read(), end='\n\n')

f.write('这是写入的内容')
f.seek(0, 0)
print(f.read(), end='\n\n')

list1 = ['sdsf', 'fdsfd', 'dsfgeger']
f.writelines(list1)
f.seek(0, 0)
print(f.read())

Python基础 P8 永久存储

Python基础 P8 永久存储

文件系统

Python基础 P8 永久存储

简介

接下来会介绍与python文件相关的一些十分有用的模块,其实我们写的每一个源文件.py都是一个模块。python自带有非常多实用的模块,在日常编程中如果能够熟练地掌握他们,必将事半功倍。

OS模块

Python基础 P8 永久存储

首先要介绍的是高大上的OS模块,OS模块就是Operating System:及操作系统。对于文件系统的访问,python一般是通过OS模块来实现的。
我们知道的常用的操作系统有很多,如windows、MacOS、Linux等,但是这些操作系统底层对文件系统访问的工作原理是不一样的,这样调用文件系统就会很麻烦;但是python是跨平台的语言,也就是说,同样的源代码在不同的操作系统中不需要修改就可以同样实现
有了OS模块,不需要关心什么操作系统下使用什么模块,OS模块会帮你选择正确的模块并调用。

OS常用函数

函数名 使用方法
getcwd() 返回当前工作目录
chdir(path) 改变工作目录
listdir(path=‘’) 列举指定目录中的文件名(‘.’表示当前目录’…'表示上一级目录)
mkdir(path) 创建单层目录,如果该目录已存在抛出异常
makedirs(path) 递归创建多层目录,如该目录已存在抛出异常
remove(path) 删除文件
rmdir(path) 删除单层目录,如该目录非空则抛出异常
remove(path) 递归删除目录,从子目录逐层尝试删除,遇到目录非空则抛出异常
rename(old,new) 将文件old重命名为new
system(command) 运行系统的shell命令

支持路径操作中常用到的一些定义,支持所有平台

函数名 使用方法
os.curdir 指代当前目录’.’
os.pardir 指代上一级目录’…’
os.sep 输出操作系统特定的路径分隔符’\’
os.linesep 当前平台使用的行终止符’\r\n’
os.name 指代当前使用的操作系统
getcwd()

在有些情况下需要获得应用程序当前的工作目录,那么可以使用gwtcwd() 函数获得

举个栗子

Python基础 P8 永久存储

import os

print(os.getcwd())

Python基础 P8 永久存储

chdir(path)

chdir() 函数可以改变当前工作目录

举个栗子

Python基础 P8 永久存储

import os

os.chdir("D:\\")
print(os.getcwd())

Python基础 P8 永久存储

listdir(path=‘.’)

有时候可能需要知道当前目录下有哪些文件和子目录,那么listdir() 函数可以帮助列举出来

Python基础 P8 永久存储

import os

print(os.listdir())

Python基础 P8 永久存储

mkdir/makedirs

mkdir()函数用于创建文件夹,如果该文件夹存在,则抛出FileExistsError异常

import os

print(os.listdir())
os.mkdir("test1")
print(os.listdir())
os.makedirs(r".\a\b\c")
print(os.listdir())

os.mkdir("test1")
print(os.listdir())
os.makedirs(r".\a\b\c")
print(os.listdir())

Python基础 P8 永久存储

Python基础 P8 永久存储

remove/rmdir/removedirs

remove函数用于删除指定的文件,注意是删除文件,不是删除目录。
rmdir函数用来删除指定目录,注意是删除目录,不是删除多层目录
removedirs函数用于删除多层目录

Python基础 P8 永久存储

import os

print(os.listdir())
os.remove("test.txt")
print(os.listdir())
os.rmdir("test1")
print(os.listdir())
os.removedirs(r".\a\b\c")
print(os.listdir())

Python基础 P8 永久存储

rename

rename函数用于重命名文件或文件夹

Python基础 P8 永久存储

import os

print(os.listdir())
os.rename("123.txt", "456.txt")
print(os.listdir())

Python基础 P8 永久存储

sytem

几乎每个操作系统都会提供一些小工具,system函数用于使用这些小工具
比如想要弹出计算机,可以填入calc

Python基础 P8 永久存储

import os

os.system("calc")

Python基础 P8 永久存储

walk

walk函数,这个函数在有些时候确实非常有用,可以省去很多麻烦,该函数的作用是遍历top参数指定路径下的所有子目录,并将结果返回一个三元组(路径,包含目录,包含文件)

Python基础 P8 永久存储

OS.path模块

Python基础 P8 永久存储

常用os.path模块

函数名 使用方法
basename(path) 去掉目录路径,单独返回文件名
dirname(path) 去掉文件名,单独返回目录路径
join(path1[,path2[,…]]) 将path1、path2各部分组合成一个路径名
split(path) 分割文件名与路径,返回(f_path,f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
splitext(path) 分离文件名与扩展名,返回(f_name,f_extension)元组
getsize(file) 返回指定文件的尺寸,单位是字节
getatime(file) 返回指定文件最近的访问时间(浮点型秒速,可用time模块的gmtime()或localtime()函数换算)
getctime(file) 返回指定文件的创建时间(浮点型秒速,可用time模块的gmtime()或localtime()函数换算)
getmtine(file) 返回指定文件的最新修改时间(浮点型秒速,可用time模块的gmtime()或localtime()函数换算)
exists(path) 判断指定路径(目录或文件)是否存在
isabs(path) 判断指定路径是否为绝对路径
isdir(path) 判断指定路径是否存在且是一个目录
isfile(path) 判断指定路径是否存在且是一个文件
islink(path) 判断指定路径是否存在且是一个符号链接
ismount(path) 判断指定路径是否存在且是一个挂载点
samefile(path1,path2) 判断path1和path2两个路径是否指向同一个文件
basename/dirname

basename获取文件的文件名,dirname获取文件的路径名

Python基础 P8 永久存储

import os

print(os.path.dirname(r"..\P7\P7_T1.py"))
print(os.path.basename(r"..\P7\P7_T1.py"))

Python基础 P8 永久存储

join

join函数与BIF的那个join函数不同,用于将路径名文件名组合成一个完整的路径

Python基础 P8 永久存储

import os

print(os.path.join(r"D:\\python test\P8", "P8_1.py"))

Python基础 P8 永久存储

split/splitext

split函数分割路径和文件名
splitext函数则用于分割文件名和扩展名

Python基础 P8 永久存储

import os

print(os.path.split(r"D:\\python test\P8\P8_1.py"))
print(os.path.splitext(r"D:\\python test\P8\P8_1.py"))

Python基础 P8 永久存储

getsize

getsize函数用于获取文件的尺寸,返回值以字节为单位

Python基础 P8 永久存储

import os

print(os.path.getsize(r"D:\\python test\P8\P8_1.py"))

Python基础 P8 永久存储

getatime/getctime/getmtime

这三个函数分别用于获取文件的最近访问时间创建时间修改时间,不过返回值是浮点型秒速,可用time模块gmtime进行转换

getatime:最近访问时间
getctime:创建时间
getmtime:修改时间

Python基础 P8 永久存储#pic_cente
Python基础 P8 永久存储

import os
import time

t1 = time.localtime(os.path.getatime("456.txt"))
t2 = time.localtime(os.path.getctime("456.txt"))
t3 = time.localtime(os.path.getmtime("456.txt"))

print(time.strftime("%Y-%m-%d %H:%M:%S", t1))
print(time.strftime("%Y-%m-%d %H:%M:%S", t2))
print(time.strftime("%Y-%m-%d %H:%M:%S", t3))

Python基础 P8 永久存储

pickle模块

Python基础 P8 永久存储

此前一直在讲保存文件,然而当要保存的数据像列表、字典甚至是类的实例这些更复杂的数据类型时,普通的文件操作就会变得不知所措。也许你会把这些都转换为字符串,再写入到一个文本文件中保存起来,但是很快就会发现要把这个过程反过来,从文本文件恢复数据对象,就变得异常麻烦了。不过python提供了pickle模块,使用这个模块就可以非常容易地将列表、字典这类复杂数据类型存储为文件。

dump

使用dump可以将数据保存进文件

Python基础 P8 永久存储

import pickle

list1 = ['ok', 678, '你好', 12.67]
pick_file = open("456.pkl", "wb")
pickle.dump(list1, pick_file)
load

使用load可以从文件中提取数据

Python基础 P8 永久存储

import pickle

pick_file = open("123.pkl", "rb")
print(pickle.load(pick_file))

Python基础 P8 永久存储文章来源地址https://www.toymoban.com/news/detail-515145.html

到了这里,关于Python基础 P8 永久存储的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并

    目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 视频图像处理基础操作 之 视频捕获/存储/提取/合成/合并 一、简单介绍 二、视频处理流程和原理 三、视频的捕获和存储 四、提取视频中的某些帧 五、将图片合成为视频 六、多个视频合并 Python是一种跨平台的计算机程序设计

    2024年04月10日
    浏览(52)
  • Python入门教程48:Pycharm永久镜像源的pip配置方法

    国内几个好用的Python镜像服务器地址: 清华大学镜像站:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云镜像站:https://mirrors.aliyun.com/pypi/simple/ 中科大镜像站:https://pypi.mirrors.ustc.edu.cn/simple/ 中国科技大学镜像站:https://pypi.mirrors.ustc.edu.cn/simple/ 中国科学技术大学镜像站:https://pypi

    2024年02月03日
    浏览(16)
  • 【postgresql 基础入门】数据表的创建,永久数据放普通表,中间结果放临时表,附带信用卡业务案例SQL设计

    ​ 专栏内容 : postgresql内核源码分析 手写数据库toadb 并发编程 ​ 开源贡献 : toadb开源库 个人主页 :我的主页 管理社区 :开源数据库 座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物. 入门准备 postgrersql基础架构 快速使用 初始化集群 数据库服务管理 psql客户

    2024年02月07日
    浏览(21)
  • 已解决Python.selenium爬虫必备设置永久禁止谷歌浏览器自动升级(亲测有效)

    问题描述:selenium框架自动化操作浏览器的时候,需要安装浏览器驱动 WebDriver ,而 WebDriver 驱动需要对应浏览器的版本才运行。但是我们常用的谷歌浏览器是有自动更新的,就会经常导致 WebDriver 版本和谷歌浏览器版本对应不上,运行代码就会出现如下报错信息。 每次去下载

    2024年02月10日
    浏览(23)
  • P8 pair vector

    pair是一个模板类,用于表示一对值的组合,用utility中 pair模板有两个模板参数,t1 t2,分别表示第一个值和第二个值类型 pair类有两个成员变量,frist和  cond,分别表示第一个值与第二个值 还有一些成员函数和特征,例如默认构造函数、带参数的构造函数、比较运算符重载等

    2024年02月19日
    浏览(8)
  • Linux p8 找回root密码

    【学习课程】:【【小白入门 通俗易懂】2021韩顺平 一周学会Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14share_source=copy_webvd_source=2c07d62293f5003c919b2df9b2e0549e 首先,启动系统,进入开机界面,在界面中按 \\\"e\\\" 进入编辑界面,如图 这个界面读秒5秒后,就会进入登录界面,使用↑

    2024年02月08日
    浏览(15)
  • Servlet p8 文件的上传和下载

    在上网的时候我们常常遇到文件上传的情况,例如上传头像、上传资料等:当然除了上传,遇见下载的情况 也很多,接下来看看我们servlet中怎么实现文件的上传和下载。 文件上传涉及到前台页面的编写和后台服务器端代码的编写,前台发送文件,后台接收并保存文件,这才

    2024年02月15日
    浏览(29)
  • 阿里测试8年,肝到P8只剩他了····

    在阿里工作了8年,工作压力大,节奏快,但是从技术上确实得到了成长,尤其是当你维护与大促相关的系统的时候,熬到P7也费了不少心思,小编也是个爱学习的人,把这几年的工作经验整理成了一份完整的笔记 。此笔记已助朋友拿到腾讯,阿里,美团等10个offer ! 由于细节

    2024年02月01日
    浏览(23)
  • rce临时文件上传[RCE1]P8

    /[A-Za-z0-9!~^|]+/i 匹配了我能想到的所有绕过方法,想到临时文件上传,是否可以执行 /tmp/????????? 这个文件呢 /tmp/????????? 此文件是php的一个默认临时文件,文件名是随机的,如果php.ini没有设置upload_tmp_dir的时候,默认会读写系统的临时文件目录,(Windows 默认为 C:/windows/temp,L

    2024年03月12日
    浏览(34)
  • 曾经的阿里P8,如今失业找不到工作要老婆养

    在一个女人眼中,作为一个男人最让她看不起的是什么? 吃软饭!至少我媳妇是这么认为的。 这不,一位女网友发帖称:“老公曾经是阿里P8,年龄大了实在找不到工作,问我是否愿意养他”。她末尾处那句,“中国几千年男尊女卑,男强女弱,男人养女人天经地义,女人养

    2023年04月12日
    浏览(17)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包