一、文件操作
前言:
什么是计算机的流?
"流"指的是在不同的输入/输出等设备(键盘、内存、显示器、音响等)之间进行传递数据。
例如:在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()方法的自动调用。
定义格式如下:
12with
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() |
运行效果
二、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