open函数及参数点击打开链接
1, 打开文本文件的两种模式
filename = 'file.py'
# 对文本文件的读写rt/wt, 对二进制数据的读写rb/wb
# 离开with语句块后,文件自动关闭
with open(filename, 'rt') as fObj:
data = fObj.read()
print(data)
# open要和close配对使用
fObj = open(filename, 'rt')
data = fObj.read()
print(data)
fObj.close()
# 重定向到文件中
with open('new.txt', 'wt') as fObj:
print('Helloworld', file=fObj)
2, os.path
import os
path = './somefile.txt'
print(os.path.basename(path)) # 文件名
print(os.path.dirname(path)) # 目录名
print(os.path.join('tmp', 'test', os.path.basename(path)))
print(os.path.exists('./somefile.txt')) # 文件是否存在
print(os.path.isfile('./somefile.txt')) # 是否是文件
print(os.path.isdir('./somefile.txt')) # 是否是目录
out:
somefile.txt
.
tmp\test\somefile.txt
True
True
False
3, os.listdir
names = os.listdir('./')
print(names)
pyfiles = [name for name in os.listdir('./') if name.endswith('.py')]
print(pyfiles)
out:
['.idea', 'character.py', 'data.json', 'file.py', 'new.txt', 'somefile.txt', 'splitObj.py', 'tcp_serv.py']
['character.py', 'file.py', 'splitObj.py', 'tcp_serv.py']
4, 临时文件和目录
tempfile.TemporaryFile()
tempfile.TemporaryDirectory()
5, 序列化Python对象
import pickle
data = {'Leon':22, 'Mary':21}
with open('somefile.txt', 'wb') as fObj:
pickle.dump(data, fObj) # 转储到文件dump
with open('somefile.txt', 'rb') as fObj:
data = pickle.load(fObj) # 从文件中字节流创建对象
print(data)
data = {'Leon':212, 'Mary':121}
strData = pickle.dumps(data) # 转储到string
print(strData)
print(pickle.loads(strData)) # 从string中创建对象
out:
{'Leon': 22, 'Mary': 21}
b'\x80\x03}q\x00(X\x04\x00\x00\x00Leonq\x01K\xd4X\x04\x00\x00\x00Maryq\x02Kyu.'
{'Leon': 212, 'Mary': 121}