脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python文件操作和数据格式详解(简单简洁)

Python文件操作和数据格式详解(简单简洁)

2022-11-07 11:17Philosophy7 Python

文本处理是脚本语言的强项,下面这篇文章主要给大家介绍了关于Python文件操作和数据格式的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、文件操作

前言:

什么是计算机的流?

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

例如:在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+ 追加模式 以读/写的方式打开文本文件/二进制文件,只允许在文件末尾添加数据,若文件不存在,则创建文件。

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

?
1
2
3
4
5
6
7
8
9
10
11
12
'''
 演示 : 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()方法的自动调用。

定义格式如下:

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

2、读文件

常用的方法

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#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("嗨嗨")
文件读写位置操作
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
文件读写位置:
    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模块
?
1
2
3
4
5
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.文件的迭代

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

运行效果
Python文件操作和数据格式详解(简单简洁)

二、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
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""
什么是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文件操作和数据格式内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/ChengXuTeng/article/details/124504884

延伸 · 阅读

精彩推荐
  • Pythonpytorch 实现张量tensor,图片,CPU,GPU,数组等的转换

    pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换

    今天小编就为大家分享一篇pytorch 实现张量tensor,图片,CPU,GPU,数组等的转换,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    小星星*11352020-04-27
  • PythonPython中的Unittest基本使用

    Python中的Unittest基本使用

    这篇文章主要介绍了Python中的Unittest基本使用,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下...

    哲思天下8202022-08-26
  • PythonPython httplib模块使用实例

    Python httplib模块使用实例

    这篇文章主要介绍了Python httplib模块使用实例,httplib模块是一个底层基础模块,本文讲解了httplib模块的常用方法及使用实例,需要的朋友可以参考下 ...

    脚本之家5262020-06-03
  • Python批量获取及验证HTTP代理的Python脚本

    批量获取及验证HTTP代理的Python脚本

    这篇文章主要介绍了批量获取及验证HTTP代理的Python脚本,需要的朋友可以参考下 ...

    脚本之家5582020-09-30
  • Pythonpython实现对文件中图片生成带标签的txt文件方法

    python实现对文件中图片生成带标签的txt文件方法

    下面小编就为大家分享一篇python实现对文件中图片生成带标签的txt文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    Xiaoli_Coding11582021-02-06
  • PythonPython 列表排序详解

    Python 列表排序详解

    这篇文章主要介绍了Python中对列表排序实例,本文给出了9个List的排序实例,需要的朋友可以参考下,希望能够给你带来帮助...

    莫导4962022-01-21
  • Python解决Python2.7读写文件中的中文乱码问题

    解决Python2.7读写文件中的中文乱码问题

    下面小编就为大家分享一篇解决Python2.7读写文件中的中文乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    haha_point18642021-01-31
  • Pythonpython 实现交换两个列表元素的位置示例

    python 实现交换两个列表元素的位置示例

    今天小编就为大家分享一篇python 实现交换两个列表元素的位置示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    知悔不愿悔9392021-07-21