try:
f = open('C:/Users/34810/Desktop/test.txt', 'r')
print(f.read())
finally:
if f:
f.close()
# 简略写法
with open('C:/Users/34810/Desktop/test.txt', encoding='utf-8') as f:
# readline()只读取一行
print(f.readline())
# 一次性读取全部,返回一个list,按行存为一个元素
print(f.readlines(), 9999)
# read()读取全部,如果文件太多会爆内存
print(f.read())
# 限制读取大小
print(f.read(10))
# 二进制文件
f = open('C:/Users/34810/Downloads/qin.jpg', 'rb')
print(f.read())
# 字符编码
with open('C:/Users/34810/Desktop/test.txt', encoding='utf-8') as f:
print(f.readline())
# 忽略编码错误
with open('C:/Users/34810/Desktop/test.txt', encoding='utf-8', errors='ignore') as f:
print(f.readline())
# 写文件
# 'w'无文件则创建文件,有文件则覆盖原内容。 ‘a’无文件则创建文件,有文件则在原文件内容后追加新内容
with open('C:/Users/34810/Desktop/test.txt', 'a', encoding='utf-8',) as f:
f.write('asdsadasd')
# 内存读写str StringIO
from io import StringIO
f = StringIO()
f.write('hello')
f.write('+')
f.write('world!')
# getvalue()获取
print(f.getvalue())
# 内存读写二进制 BytesIO
from io import BytesIO
f = BytesIO()
f.write('中文'.encode('utf-8'))
print(f.getvalue())
# 操作文件和目录
import os
print(os.name)
# posix为linux或macOS , nt为windows
# 环境变量
# print(os.environ)
# 当前目录的绝对路径
print(os.path.abspath('.'))
# os.path.join('D:/myData', 'testdir')
# 文件夹创建
os.mkdir('D:/myData/testdir')
# 文件夹删除
os.rmdir(r'D:/myData/testdir')
# 获取文件
a = os.path.split('D:/myData/testdir/file.txt')
# ('D:/myData/testdir', 'file.txt')
# 获取文件扩展名
b = os.path.splitext('D:/myData/testdir/file.txt')
# ('D:/myData/testdir/file', '.txt')
# 重命名 + 删除文件
os.rename('D:/myData/testdir/file.txt', 'D:/myData/testdir/test.py')
os.remove(os.path.join('D:/myData/testdir/test.py'))
# 列出所有目录
c = [x for x in os.listdir('.') if os.path.isdir(x)]
print(c)
# 列出所有的 .py 文件
d = [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
print(d)