文件操作
一、 打开文件
在 python 中使用 open 函数可以打开一个已经存在的文件
格式:f = open(文件名, 访问模式)
二、 关闭文件
在 python 中使用 close 函数可以关闭一个打开的文件
格式:f.close()
三、 写数据(write)
使用 write() 可以完成向文件写入数据
注意:如果该文件不存在则创建一个新文件,若果存在就先清空然后在写入数据
四、 读数据
A、读数据(read)
使用 read(num) 可以从文件中读取数据,num 表示要从文件中读取的数据的长度(单位是字节),如果没有传入 num参数,那么就表示读取文件中所有的数据
注意:如果读了多次,那么后面读取的数据是从上次读完后的位置开始的
B、 读数据(readlines)
就像 read() 没有参数时一样, readlines 可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素
test.txt 中的内容:
test_readlines.py 中的内容:
执行结果:
C、 读数据(readline)
单行读取数据:
test_readline.py 中内容:
执行结果:
思考题:制作文件的备份(输入文件名,然后程序自动完成对文件进行备份)
五、 文件的随机读写
A、 获取当前读写的位置
在读写文件的过程中,如果想知道当前的位置,可以使用 tell() 来获取
格式:position = f.tell()
B、 定位到某个位置
如果在读写文件的过程中需要从另外一个位置进行操作的话,可以使用 seek() 函数
格式:seek(offset, from)
- offset:偏移量
- from : 方向(0: 表示文件的开头, 1: 表示当前位置, 2: 表示文件末尾)
例:读取一定数据后,把位置设置为从文件头,偏移5个字节
六、 文件的重命名、删除
A、 文件的重命名
os模块中的 rename() 可以完成对文件的重命名操作
格式:os.rename(原文件名, 新文件名)
B、 删除文件
os模块中的 remove() 可以完成对文件的删除操作
格式:os.remove(待删除文件名)
七、 文件夹的相关操作
实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建,删除等。就像对文件操作需要 os 模块一样
A、创建文件夹
格式:os.mkdir("文件夹名")
B、获取当前目录
格式:os.getcwd()
C、 改变默认目录
格式:os.chdir("../")
D、 获取当前路径的目录列表
格式:os.listdir("./")
E、 删除文件夹
格式:os.rmdir("待删除的文件夹")
思考题:如何批量修改文件名
008_many_modify_file.py 内容:
查看修改前目录下的所有文件:
执行添加标志结果:
查看修改后目录下的所有文件:
思考题:制作一个“密码薄”,其可以存储一个网址(例如:www.luosir.com), 和一个密码(例如:123456), 请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能
009_passwdbook.py 中内容:
#coding=utf-8
passwds = []
while True:
# 提示输入密码薄的功能
fun = int(input("请输入您要操作的功能(1: 增, 2: 删, 3: 改, 4:查, 5: 遍历, 0: 退出系统): "))
if fun == 1:
add = {}
add_web = input("请输入您要添加的网站: ")
add["web"] = add_web
add_pw = input("请输入您要添加的密码: ")
add["pw"] = add_pw
passwds.append(add)
elif fun == 2:
i=0
remove_flag = 0
list_num = len(passwds)
print(list_num)
if list_num == 0:
print("没有数据在给您删除啦!!!")
break
remove_name = input("请输入您要删除的网站: ")
for passwd in passwds:
for temp in passwd.values():
if temp == remove_name:
remove_flag = 1
break
if remove_flag == 1:
break
i += 1
if i==list_num:
print("找不到您要删除的内容哦!!!")
if i>=0:
del passwds[i]
elif fun == 3:
mod_num = int(input("请输入你要改动的密码薄序号: "))
mod_web = input("请输入你要修改的新网站: ")
mod_pw = input("请输入你要修改的新密码: ")
passwds[mod_num]["web"] = mod_web
passwds[mod_num]["pw"] = mod_pw
elif fun == 4:
find_num = int(input("请输入您要查找的密码薄序号: "))
print(passwds[find_num])
elif fun == 5:
for passwd in passwds:
print(passwd)
elif fun == 0:
f = open("passwdbook.txt", "w")
if f:
for onedic in passwds:
for key, value in onedic.items():
f.write(key+":")
f.write(value+" ")
f.write("
")
f.close
break
执行结果:
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">