" 何顾远方,我心自有云白风清 "
不简单的输入输出:IO 操作
- 1、文件读写
-
- 1.1、打开文件
- 1.2、写入文件
- 1.3、读取文件
- 1.4、关闭文件
- 2、文件系统操作
-
- 2.1、创建目录
- 2.2、判断路径是否是一个目录
- 2.3、列举目录下的内容
- 2.4、删除目录
- 2.5、创建文件
- 2.6、判断路径是否是一个文件
- 2.7、删除文件
- 2.8、重命名文件
- 3、序列化和反序列化
- 4、pickle
- 5、JSON
1、文件读写
1.1、打开文件
打开文件使用内置函数 open()
f = open(r'文件路径', 读写模式)
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'w')
1.2、写入文件
length = f.write('内容')
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'a+')
length = f.write('i love you')
print(length)
f.close()
1.3、读取文件
content = f.read()
%1
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'r')
content = f.read()
print(content)
f.close()
%2
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'r')
content = f.read(10)
print(content)
print(f.read(10))
f.close()
%3
line = f.readline()
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'r')
content = f.readline()
print(content)
print(f.readline())
print(f.readline())
f.close()
%4
lines = f.readlines()
f = open(r'C:\Users\hp\OneDrive\桌面\xiaohan', 'r')
content = f.readlines()
print(content)
f.close()
1.4、关闭文件
- 每次打开文件后,无论进行了多少读写操作,最终都一定要将文件关闭
- 因为打开文件会消耗相关系统资源(文件描述符),不使用时应及时释放
f.close()
还有一种方式能自动关闭打开的文件、那就是使用 with 语句
with open(r'C:\Users\hp\OneDrive\桌面\xiaohanhan', 'w') as f:
f.write('i love xiaohanhan')
2、文件系统操作
2.1、创建目录
import os
os.mkdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
2.2、判断路径是否是一个目录
os.path.isdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
import os
a = os.path.isdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
b = os.path.isdir(r'C:\Users\hp\OneDrive\桌面\xianhanahan')
print(a)
print(b)
2.3、列举目录下的内容
os.listdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
import os
a = os.listdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
print(a)
2.4、删除目录
%1
os.rmdir(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
%2
import shutil
shutil.rmtree(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu')
2.5、创建文件
f = open(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu\xiaohanahan', 'w')
f.close()
2.6、判断路径是否是一个文件
os.path.isfile(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu\xiaohanahan')
2.7、删除文件
os.remove(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu\xiaohanahan')
2.8、重命名文件
os.rename(r'C:\Users\hp\OneDrive\桌面\xianzhuzhu\xiaohanahan', 'xiaozizi')
3、序列化和反序列化
%1
class Pair:
def __init__(self, first, second):
self.first = first
self.second = second
pair = Pair(10, 20)
4、pickle
import pickle
some_bytes = pickle.dumps(对象)
import pickle
对象 = pickle.loads(some_bytes)
%1
import pickle
class Pair:
def __init__(self, first, second):
self.first = first
self.second = second
pair = Pair(10, 20)
some_bytes = pickle.dumps(pair)
print(some_bytes)
%2
import pickle
class Pair:
def __init__(self, first, second):
self.first = first
self.second = second
pair = Pair(10, 20)
some_bytes = pickle.dumps(pair)
print(some_bytes)
pair = pickle.loads(some_bytes)
print(pair.first)
%3
with open(r'C:\Users\hp\OneDrive\桌面\xiaohanhan', 'wb') as f:
pickle.dump(pair, f)
%4
with open(r'C:\Users\hp\OneDrive\桌面\xiaohanhan', 'rb') as f:
pair = pickle.load(f)
5、JSON
import json
json_string = json.dumps(pair.__dict__)
%1
json_string'{''firs'': 10,''secon'': 20}'
%2
def pair_to_dict(pair):
return {
'first': pair.first,
'second': pair.second,
}
json_string = json.dumps(pair, default=pair_to_dict)
%3
def dict_to_pair(d):
return Pair(d['first'], d['second'])
pair = json.loads(json_string, object_hook = dict_to_pair)
%4
with open(r'C:\Users\hp\OneDrive\桌面\xiaohanhan', 'w') as f:
json.dump(pair, f, default=pair_to_dict)
%5
with open(r'C:\Users\hp\OneDrive\桌面\xiaohanhan', 'r') as f:
pair = json.load(f, object_hook=dict_to_pair)