06 文件的基本操作
1 文件的基本操作
功能 | 方法 | 备注 | |
---|---|---|---|
打开 | 读取 | 变量 = open(‘路径’,‘r’) | |
写 | 变量 = open(‘路径’,‘w’) | 若文件不存在,则船舰文件 | |
追加 | 变量 = open(‘路径’,‘a’) | ||
bytes数据 | 变量 = open(‘路径’,‘ab+’) | ab+ | wb+ ;f.write(b’nihaoxiada’);适合用于图片、音乐等 | |
可读可写 | + | ||
操作 | 读取 | f.read() | 默认情况下是全部;想读取一部分可以使用 f.read(10*) |
读取首行 | f.readline(字数——索引) | f.readline(3) = 读取首行的前三个字符串 | |
读取多行 | f.readlines() | 返回值为列表 | |
写入 | f.write(‘内容’) | ||
f.writelines([’\nthis’,’\nis’,’\npython’]) | |||
鼠标针 | .seek(0) | 0 是文件开始的位置 | |
保存 | 保存 | 变量.flush() | |
保存+关闭 | 变量.close() | ||
打开+保存+关闭 | with open(‘文件路径’,方式) as 变量 |
相对路径 | ./ | 同级目录 |
.// | 上同级目录 | |
绝对路径 | 从所在磁盘开始 |
# ================= ================= ================= =================# 写入多文件
f= open('./j.txt','w+')
f.writelines(['this','\nis','\nlife'])
f.seek(0)
print(f.read())
f.close()
# 结果:
this
is
life
# ================= ================= ================= =================
# 读取以上第一和第二行的代数据
f = open('./j.txt','r+')
f.seek(0)
print(f.readlines())
f.close()
# 结果:
['this\n', 'is\n', 'life']
1.1 文件流
变量 = io.StringIO() 或 = io.BytesIO 。需要先导入 io 模块, import io
import io
# 在电脑内存创建临时空间
f = io.StringIO()
# 写入数据
f.write('nihao')
# 读取数据
print(f.getvalue()) # getvalue():获取文件内容,并且不需要重新定义光标(指针)的位置
# 保存数据
f.close()
import io
# 生成二进制临时假文件
b_io = io.BytesIO()
b_io.write(b'hello world')
print(b_io.getvalue())
b_io.close()
2 文件目录操作
需要先导入 os 模块
Os 功能 | Os 方法 | ||
---|---|---|---|
文件路径 | 获取 | os.getcwd() | cwd = Current Working Directory |
切换路径 | os.chdir() | ||
文件下一级目录 | os.listdir(r’path’) | ||
文件夹及文件 | 创建 | os.mkdir(‘文件夹名’) | |
删除 - 文件夹 | os.rmdir() | 只能删除空文件夹 | |
创建多层目录 | os.makedirs() | ||
删除多层目录 | os.removedirs() | 只能删除空文件夹 | |
遍历文件夹 | os.walk(‘文件夹’) | ||
移除 - 文件 | os.remove() | ||
命名 - 文件夹及文件 | os.rename(原, 新) | ||
把目录和文件名合成一个路径 | os.path.join(路径1,路径2) | ||
CMD | 启动 cmd | os.system(‘cmd’) | |
启动 cmd中的pyhon | os.system(‘python’) | ||
文件路径
>>> import os
# os.getcwd
>>> os.getcwd()
'C:\\Users\\William\\Desktop'
# os.chdir
>>> os.chdir('C:\\Users\\William\\')
>>> os.getcwd()
'C:\\Users\\William'
>>> os.chdir('D:')
>>> os.getcwd()
'D:\\'
# os.listdir()
>>> os.listdir(r"D:\001 蔡汶桦\网课\000 Python\01 趣码学院\03 Python 基础提升")
['03-01 函数基本概念、函数参数、作用域', '03-02文件基本操作 & 模块和包']
文件夹
>>> os.mkdir('abc')
>>> os.rmdir('abc')
>>> os.rmdir(r'C:\Users\William\Desktop\axt')
>>> os.makedirs(r'C:\Users\William\Desktop\aaa\bb') # 在Dekstop创建aaa文件夹,并在其里头创建bb文件夹
>>> os.removedirs(r"C:\Users\William\Desktop\aaa\bb") #先删除 bb 然后删除 aaa
>>> os.remove(r"C:\Users\William\Desktop\a.txt")
>>> os.rename(r'C:\Users\William\Desktop\a.py', 'b.py')
>>> os.rename(r'C:\Users\William\Desktop\a', 'b')
>>> os.path.join(r"C:\Users\William\Desktop", "d.py")
'C:\\Users\\William\\Desktop\\d.py'
CMD
>>> os.system('cmd') # > 打开CMD
-1073741510
>>> os.system('python') # > 打开CMD + PYTHON
-1073741510
3 模块和包
3.1 模块
导入的时候,python 会将 .py 文件运行一遍
定义 | .py 文件 | |
表现形式 | import a | |
查看导入路径 | os.sys.path | 先导入模块,import sys |
添加路径 | os.sys.path.append() |
>>> os.sys.path
['C:\\Users\\William\\Desktop', 'D:\\000 Software_1\\Python3\\python37.zip', 'D:\\000 Software_1\\Python3\\DLLs', 'D:\\000 Software_1\\Python3\\lib', 'D:\\000 Software_1\\Python3', 'C:\\Users\\William\\AppData\\Roaming\\Python\\Python37\\site-packages', 'D:\\000 Software_1\\Python3\\lib\\site-packages', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\win32', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\win32\\lib', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\Pythonwin']
>>> os.sys.path.append(r'D:\Python_William\Python_Pack_William')
>>> os.sys.path
['C:\\Users\\William\\Desktop', 'D:\\000 Software_1\\Python3\\python37.zip', 'D:\\000 Software_1\\Python3\\DLLs', 'D:\\000 Software_1\\Python3\\lib', 'D:\\000 Software_1\\Python3', 'C:\\Users\\William\\AppData\\Roaming\\Python\\Python37\\site-packages', 'D:\\000 Software_1\\Python3\\lib\\site-packages', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\win32', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\win32\\lib', 'D:\\000 Software_1\\Python3\\lib\\site-packages\\Pythonwin', 'D:\\Python_William\\Python_Pack_William']
引用模块。 PS: 确定索要使用的 .py 文件已经存在“合法”的文件夹里
值 | 条件 | |
---|---|---|
name | main | 当前文件运行 |
name | 文件名 | 当文件作为模块被导入时 |
>>> import a
我已经将代码运行一遍
a
>>> a.func()
打印Function
# ================= ================= ================= ============
# a.py 文件的代码
def func():
print('打印Function')
print('我已经将代码运行一遍')
print(__name__)
3.2 包
定义 | 存放多模块的文件夹 |
4 问题
读取不了数据
原因:鼠标针在文件位置是在最后面,所以读不了数据
解决方案:将鼠标针跳到前面 —— f.seek(0)
f = open('./d.py','w+')
f.write('nihaoshijie')0)
print(f.read())
f.close()
#结果
>>>
# 原因 = 鼠标针处于文件后面,
# 解决方案 = 用f.seek(0),将鼠标放在前面
# ================= ================= ================= =================
f = open('./d.py','w+')
f.write('nihaoshijie')
f.seek(0)
print(f.read())
f.close()
#结果
>>> nihaoshijie
现象:无法删除文件夹
原因:你所在的磁盘不在要删除文件的位置。查看你所在位置 —— os.getcwd()
解决方案:换你的位置 —— os.chdir()
>>> os.remove(r'C:\Users\William\Desktop\a') # a 是文件夹,而不是文件
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
os.remove(r'C:\Users\William\Desktop\a')
PermissionError: [WinError 5] 拒绝访问。: 'C:\\Users\\William\\Desktop\\a'
>>> a = os.walk(r'D:\001 蔡汶桦\网课\000 Python\01 趣码学院\03 Python 基础提升')
>>> list(a)
[('D:\\001 蔡汶桦\\网课\\000 Python\\01 趣码学院\\03 Python 基础提升', ['03-01 函数基本概念、函数参数、作用域', '03-02文件基本操作 & 模块和包'], []), ('D:\\001 蔡汶桦\\网课\\000 Python\\01 趣码学院\\03 Python 基础提升\\03-01 函数基本概念、函数参数、作用域', [], ['03-01 函数基本概念、函数参数、作用域——作业.py', '06文件.pptx', '1.png', '2.png', 'class5.py', '作业讲解.png', '作业,第二题.png']), ('D:\\001 蔡汶桦\\网课\\000 Python\\01 趣码学院\\03 Python 基础提升\\03-02文件基本操作 & 模块和包', [], ['07面向对象初级.pptx', '1.png', '2.png', 'class6.py'])]
5 Bonus
import datetime
功能 | 方法 |
---|---|
将格式化日期 --> str 对象 | datetime对象.strftime(’%Y-%m-%d’) |
练习
https://www.jianguoyun.com/p/DSQp7FsQnei5CBjwqO4D