一、文件操作

前言:

什么是计算机的流?

"流"指的是在不同的输入/输出等设备(键盘、内存、显示器、音响等)之间进行传递数据。

例如:在Python中使用input()函数,就会产生数据经过键盘流输入到存储器。

print() 就会有数据从存储器中流出到屏幕。所以流实际上就是一个字节序列。

就如同管道中的水 “流来流去”;

1、文件的基本操作

Python中可以通过内置函数open()打开文件 函数定义格式如下:
open(file,mode,buffering)

参数说明:

  • file : 表示文件的路径
  • mode : 文件打开的模式
  • buffering : 设置访问文件的缓冲方式,若设置
  • 0 : 表示非缓冲方式
  • 1 : 每次缓冲衣阿华那个世俗据
  • 大于1 : 表示使用给定值作为缓冲区的大小

文件打开模式

打开模式 含义 说明
r/rb 只读模式 以只读的方式打开文本文件/二进制文件,如果文件不存在或找不到,open()调用失败
w/wb 只写模式 以只写的方式打开文本文件/二进制文件,若文件不存在,则创建文件;文件已存在 ,清空文件。
a/ab 追加模式 以只写的方式打开文本文件/二进制文件,只允许在文件末尾追加数据,若文件不存在创建文件
r /rb 读取模式 以读/写的方式打开文本文件/二进制文件,如果文件不存在,open()调用失败
w /wb 写入模式 以读/写的方式打开文本文件/二进制文件**,如果文件存在,则清空文件**
a /ab 追加模式 以读/写的方式打开文本文件/二进制文件,只允许在文件末尾添加数据,若文件不存在,则创建文件。

😊 到了写代码环节,兄弟们操练起来。耍 ! 耍 ! 整起 !

'''
 演示 : Python中内置函数open() 打开文件
 文件的操作属于IO操作 记得释放资源
'''
file1 = open('a.txt') #只读模式打开文件a.txt 若文件不存在,则报异常FileNotFoundError
file2 = open('b.txt','w') #只写模式打开文件b.txt 文件不存在则创建 文件存在则覆盖
file3 = open('c.txt','w ') #读写方式打开 文件不存在则创建 文件存在则覆盖

#释放资源
file3.close()
file2.close()
file1.close()

😡 每次使用文件都得调用open()和close(),很是麻烦,若打开和关闭的操作次数较多,容易忘记close()次操作,就会造成资源的浪费。为此Python引入了 with语句实现close()方法的自动调用。

定义格式如下:

with open('a.txt') as file:
	代码段

2、读文件

常用的方法

方法 描述
read() 从指定文件中读取指定字节的数据
readline() 从指定文件中读取一行数据
readlines() 从指定文件中的数据一次读出,并将每一行视为一个元素,存储到列表中。

😊 到了写代码环节,兄弟们操练起来。耍 ! 耍 ! 整起 !

file = open('a.txt','r')

#读文件
#str_ = file.read(5) # 读取五个字符
#print(str_)

#readline
# str2 = file.readline()
# print(str2) # 第1次读取 读取第一行
# str3 = file.readline()
# print(str3) # 第二次读取 读取第二行

#readliness
str4 = file.readlines()
print(str4) # 返回的是一个列表

file.close()

3、写文件

常用的方法

方法 描述
write() 方法中的参数str表示要写入文件的字符串
#1.打开文件
file = open('b.txt','w ') #以读写方式打开文件

#2.写入数据
file.write("Hello \nWorld")

#3.释放资源
file.close()

"""
问题:
    有的开发环境可能搭配在缓冲设备当中 所以调用write()方法可能出现数据未写入
解决:
    这里介绍三种方式:
            1.修改open函数中的buffering参数
            2.刷新缓冲区
            3.释放资源
"""
#1.修改open函数中的buffering参数
# file2 = open('demo.txt','w ',1)  # 设置为1 表示每次缓冲一行数据
# file2.write("Hello \nWorld")

#2.刷新缓冲区
# file3 = open('demo.txt','w ',encoding="utf-8")
# file3.write("你好 \n世界") #写入中文会乱码 这个时候指定编码
# file3.flush() #默认情况下,缓冲区堆积满了才会自动刷新,手动调用缓冲区将会被立即清空,将数据写入到文件

#3.关闭文件
with open('demo.txt','w ',encoding="utf-8") as file4: #with open的方式将自动关闭文件
    file4.write("嗨嗨")
文件读写位置操作
"""
文件读写位置:
    Python中提供了获取文件读写位置以及修改读写位置的方法,以实现位置随机读写
    介绍一系列的方法:
        tell() 获取文件当前的读写位置
        seek(offset,from) 控制文件的读写位置
            参数解释:
                offset : 偏移量 即读写位置需要移动的字节数
                from : 指定读写位置   该参数的赋值分别为 0 1 2
                    0 : 从文件开头
                    1 : 表示使用当前读写位置
                    2 : 文件末尾
"""
#演示上述
# with open('demo.txt','r ',encoding='utf-8') as file:
#     location = file.tell()
#     print(location)
#     str1 = file.read(5)
#     print(str1)

file2 = open('a.txt',encoding='utf-8')
file2.seek(5,0) #文件开头进行偏移

#若打开的是文本文件 seek方法只允许相对于文件开头移动位置 form参数为1 2时将报错
# file2.seek(4,1) #io.UnsupportedOperation: can't do nonzero cur-relative seeks

#若要进行读写位置或文件末尾进行位移操作 要以二进制的形式打开文件
file3 = open("a.txt",'rb')
num3 = file3.seek(3,2) #16
print(num3)
file3.close()

4.os模块的使用

除了Python内置函数外,os模块中定义了文件操作相关的函数,包括了删除、创建、重命名等文件。使用之前先导入

import os

os模块
import os #1.文件重命名 remove(oldName,newName) # os.rename('a.txt',
        'new.txt') #2.创建/删除文件夹 # os.mkdir('create_dir')# 默认路径下创建目录 注意:
    目录不能重名!! 否则将创建失败!!!# os.rmdir('create_dir') #3.删除文件 # os.remove(
        'b.txt') #4.获取当前目录 str = os.getcwd() print(str) #5.获取目录列表 list = os
    .listdir("./")#. / 表示当前目录下 print(list)

5.文件的迭代

"""
什么是迭代?
    迭代就是一个过程的多次重复,Python中实现了__iter__()方法意味着对象都是可迭代对象(字典 序列、文件等等)
"""
file_name = input("请输入文件名")
file = open(file_name,encoding="utf-8")
for f in file:
    print(f,end=" ")
file.close()

运行效果

二、JSON

什么是JSON
JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),
基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式
Python中提供对Json的支持
dumps() 将Python对象 --> JSON字符串
loads() JSON --> 对象

Python对象 JSON对象
dict object
list, tuple array
str, unicode string
int, long, float number
True true
False false
None null
"""
什么是JSON
    JSON简介:JSON的全称为JavaScript Object Nation(JavaScript 对象表示语法),
    基于 ECMAScript,存放的是的类似于键值对,本质上来说是javascript的数据类型,是一种轻量级的数据交互格式
    Python中提供对Json的支持
        dumps() 将Python对象 --> JSON字符串
        loads() JSON --> 对象

"""
#导入json模块
import json
#json格式数据
strList="[1,2,3,4]" #json数组
strDict='{"price":38.6,"author":"佚名"}'
print(type(strList)) #<class 'str'>
#json数组-->python列表
p_list=json.loads(strList)
print(p_list) #<class 'str'>
print(type(p_list),len(p_list)) #<class 'list'> 4

#json对象-->python字典
p_dict = json.loads(strDict)
print(p_dict,type(p_dict)) #<class 'dict'>
print('-'*60)
#json格式数据
listStr=[1,2,3,4] #python列表
tupleStr=(1,2,3,4)#元组
dictStr={"price":38.6,"author":"佚名"}

#python列表-->json字符串(数组)
list1 = json.dumps(listStr)
print(list1,type(list1)) #<class 'str'>

#python元组-->json数组
tuple1 = json.dumps(tupleStr)
print(tuple1,type(tuple1)) #<class 'str'>

#python字典-->json对象
dict1 = json.dumps(dictStr)
print(dict1) #{"price": 38.6, "author": "\u4f5a\u540d"} 默认使用acsii码
print(type(dict1)) #<class 'str'>

dict2 = json.dumps(dictStr,ensure_ascii=False)
print(dict2)

总结

到此这篇关于Python文件操作和数据格式的文章就介绍到这了,更多相关Python文件操作和数据格式内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Python文件操作和数据格式详解(简单简洁)的更多相关文章

  1. XCode 3.2 Ruby和Python模板

    在xcode3.2下,我的ObjectiveCPython/Ruby项目仍然可以打开更新和编译,但是你无法创建新项目.鉴于xcode3.2中缺少ruby和python的所有痕迹(即创建项目并添加新的ruby/python文件),是否有一种简单的方法可以再次安装模板?我发现了一些关于将它们复制到某个文件夹的信息,但我似乎无法让它工作,我怀疑文件夹的位置已经改变为3.2.解决方法3.2中的应用程序模板

  2. Swift基本使用-函数和闭包(三)

    声明函数和其他脚本语言有相似的地方,比较明显的地方是声明函数的关键字swift也出现了Python中的组元,可以通过一个组元返回多个值。传递可变参数,函数以数组的形式获取参数swift中函数可以嵌套,被嵌套的函数可以访问外部函数的变量。可以通过函数的潜逃来重构过长或者太复杂的函数。

  3. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  4. Swift、Go、Julia与R能否挑战 Python 的王者地位

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 红薯因 Swift 重写开源中国失败,貌似欲改用 Python

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. 你没看错:Swift可以直接调用Python函数库

    上周Perfect又推出了新一轮服务器端Swift增强函数库:Perfect-Python。对,你没看错,在服务器端Swift其实可以轻松从其他语种的函数库中直接拿来调用,不需要修改任何内容。以如下python脚本为例:Perfect-Python可以用下列方法封装并调用以上函数,您所需要注意的仅仅是其函数名称以及参数。

  7. Swift中的列表解析

    在Swift中完成这个的最简单的方法是什么?我在寻找类似的东西:从Swift2.x开始,有一些与你的Python样式列表解析相当的东西。(在这个意义上,它更像是Python的xrange。如果你想保持集合懒惰一路通过,只是这样说:与Python中的列表解析语法不同,Swift中的这些操作遵循与其他操作相同的语法。

  8. swift抛出终端的python错误

    每当我尝试启动与python相关的swift时,我都会收到错误.我该如何解决?

  9. 在Android上用Java嵌入Python

    解决方法看看this,它适用于J2SE,你可以尝试在Android上运行.

  10. 在android studio中使用python代码构建android应用程序

    我有一些python代码和它的机器人,我正在寻找一种方法来使用android项目中的那些python代码.有没有办法做到这一点!?解决方法有两种主要工具可供使用,它们彼此不同:>QPython>Kivy使用Kivy,大致相同的代码也可以部署到IOS.

随机推荐

  1. 10 个Python中Pip的使用技巧分享

    众所周知,pip 可以安装、更新、卸载 Python 的第三方库,非常方便。本文小编为大家总结了Python中Pip的使用技巧,需要的可以参考一下

  2. python数学建模之三大模型与十大常用算法详情

    这篇文章主要介绍了python数学建模之三大模型与十大常用算法详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感想取得小伙伴可以参考一下

  3. Python爬取奶茶店数据分析哪家最好喝以及性价比

    这篇文章主要介绍了用Python告诉你奶茶哪家最好喝性价比最高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

  4. 使用pyinstaller打包.exe文件的详细教程

    PyInstaller是一个跨平台的Python应用打包工具,能够把 Python 脚本及其所在的 Python 解释器打包成可执行文件,下面这篇文章主要给大家介绍了关于使用pyinstaller打包.exe文件的相关资料,需要的朋友可以参考下

  5. 基于Python实现射击小游戏的制作

    这篇文章主要介绍了如何利用Python制作一个自己专属的第一人称射击小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起动手试一试

  6. Python list append方法之给列表追加元素

    这篇文章主要介绍了Python list append方法如何给列表追加元素,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  7. Pytest+Request+Allure+Jenkins实现接口自动化

    这篇文章介绍了Pytest+Request+Allure+Jenkins实现接口自动化的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  8. 利用python实现简单的情感分析实例教程

    商品评论挖掘、电影推荐、股市预测……情感分析大有用武之地,下面这篇文章主要给大家介绍了关于利用python实现简单的情感分析的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下

  9. 利用Python上传日志并监控告警的方法详解

    这篇文章将详细为大家介绍如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务,感兴趣的小伙伴可以了解一下

  10. Pycharm中运行程序在Python console中执行,不是直接Run问题

    这篇文章主要介绍了Pycharm中运行程序在Python console中执行,不是直接Run问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

返回
顶部