python文件操作方法(文件读写,随机读写,文件编码)
def main():try:# w代表输出 文件不存在时,自动创建,创建成功之后写入数据file = open("E:\\test.txt", "w");file.write("奥特曼打小怪兽");except BaseException:pass;finally:file.close();if __name__ == '__main__':main();使用with.
·
def main():
try:
# 这里加不加r其实都一样,默认的就是r xxxx自己替换成你的文件名字
file = open("E:\\xxxx", "r");
print("文件名称:{}".format(file.name));
print("文件是否已关闭:{}".format(file.closed));
print("文件访问模式:{}".format(file.mode));
except BaseException:
pass;
finally:
file.close();
print("调用close()关闭文件对象");
if __name__ == '__main__':
main();
def main():
try:
# w代表输出 文件不存在时,自动创建,创建成功之后写入数据
file = open("E:\\test.txt", "w");
file.write("奥特曼打小怪兽");
except BaseException:
pass;
finally:
file.close();
if __name__ == '__main__':
main();
使用with来进行文件的操作
def main():
with open("E:\\test.txt","w") as file:
file.write("黑猫警长抓小老鼠");
if __name__ == '__main__':
main();
测试文件操作的a,代表往文件中追加数据
def main():
with open("E:\\test.txt","a") as file:
for item in range(10):
file.write("黑猫警长抓小老鼠\n");
if __name__ == '__main__':
main();
使用r读取文件内容
def main():
# 使用r来读取数据
with open("E:\\test.txt","r") as file:
# 读取一行
var = file.readline();
# 当一行数据存在时
while var:
print(var,end="");
# 继续读取下一行
var = file.readline();
if __name__ == '__main__':
main();
使用r读取文件内容优化版
def main():
# 使用r来读取数据
with open("E:\\test.txt","r") as file:
# 迭代文件对象
for line in file:
# 输出每行内容
print(line);
if __name__ == '__main__':
main();
随机读取
将文件按照格式输出
#将文件按照既定格式进行输出
NAMES = ("zhangSan","liSi","wangWu");
AGES = (1,2,3);
def main():
with open("E:\\test.txt","a") as file:
for item in range(len(NAMES)):
content = "{name:<10}{age:>4}\n".format(name = NAMES[item],age = AGES[item]);
file.write(content);
if __name__ == '__main__':
main();
将数据从文件指定位置中读取出来
def main():
with open("E:\\test.txt",mode = "r") as file:
# 忽略前15位的数据
file.seek(15);
print("【第二行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
print("【第三行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
if __name__ == '__main__':
main();
使用seek将文件从新定位
def main():
with open("E:\\test.txt",mode = "r") as file:
# 忽略前15位的数据
file.seek(15);
print("【第二行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
file.seek(0);
print("【第一行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
file.seek(30);
print("【第三行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
if __name__ == '__main__':
main();
直接定位你要读取的数据,避免无效的性能开支,弊端就是你需要指定的文件格式才可以进行解析
# 姓名的内容长度为10
NAME_LENGTH = 10;
# 年龄的内容长度为10
READ_LENGTH = 5;
# 保存数据读取的行数
line_count = 0;
def get_age():
# 当前的偏移量
seek_offset = 0;
with open("E:\\test.txt", mode="r") as file:
# 持续进行内容的读取;
while True:
# 读取年龄的位置
file.seek(seek_offset + NAME_LENGTH);
# 读取数据长度
data = file.read(READ_LENGTH);
# 可以获取到data数据
if data:
# 引用全局变量
global line_count;
# 统计的行数追加1
line_count +=1;
# 修改读取偏移量
seek_offset = file.tell();
# 局部返回
yield int(data);
else:
# 结束函数调用
return;
def main():
sum = 0;
for age in get_age():
sum +=age;
print("一共读取了:{}条信息,用户平均年龄为:{}".format(line_count,sum/line_count));
if __name__ == '__main__':
main();
文件编码
def main():
message = "奥特曼-打小怪兽".encode("GBK");
print("编码后的数据类型为:{}".format(type(message)));
# 输出为二进制数组
print(message);
if __name__ == '__main__':
main();
def main():
message = "奥特曼-打小怪兽".encode("GBK");
print("编码后的数据类型为:{}".format(type(message)));
# 输出为二进制数组
print(message);
# 进行解码
print(message.decode("GBK"));
if __name__ == '__main__':
main();
查看当前的编码格式
# 这个组件需要下载,pip install chardet
import chardet
def main():
message = "奥特曼-打小怪兽".encode();
print(chardet.detect(message));
if __name__ == '__main__':
main();
输出指定格式的文件
def main():
# w代表输出 文件不存在时,自动创建,创建成功之后写入数据
with open("E:\\test2.txt", mode="w",encoding="UTF-8") as file:
file.write("奥特曼打小怪兽");
if __name__ == '__main__':
main();
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)