首页 > 其他分享 >1-2 文件操作、文件处理

1-2 文件操作、文件处理

时间:2022-11-11 20:56:37浏览次数:55  
标签:文件 utf 读取 encoding 处理 data 操作 open

相对路径 :文件存在于当前目录 绝对路径

open解码当前系统编码  当前系统编码:gbk  如果打开utf-8,需要使用encoding=utf-8

文件处理流程:

1.打开文件,得到文件句柄并赋值给一个变量

2.通过句柄对文件进行操作

3.关闭文件

 1 # r读
 2 f=open('课程',encoding=utf-8)  #文件句柄
 3 data=f.read()
 4 print(data)
 5 f.close()   # 不关闭就一直不释放 处理器一直传输
 6 
 7 f.readable() #是否可读
 8 f.readline() # 每执行一次读取一行  read之后再readline无结果  结果为空光标位置移动到结尾处
 9 f.readlines() 
10 
11 # w写
12 f=open('课程','w',encoding='utf-8')  #w新建空文档覆盖'课程'这个文档
13 \n 换行
14 f.write() #写入内容  writable 可写
15 writelines()
16 write() 写的类型必须是字符串类型。''  读也是
17 
18 # a添加  可追加
19 f=open('课程','a',encoding='utf-8') 
文件处理 r,w,add

with open('a.txt','w') as f:
       f.write('1111\n')
#  不用再设置close关闭文件 此上可全部执行

with open('xx','r',encoding='gbk') as scr_f,\
           open('xxx_new','w',encoding='gbk') as dst_f:
# 同时读取两个文件  \ 转折

data=scr_f.read()
dst_f.write(data)

linux 处理文件默认二进制

 

文件处理模式b模式

硬盘存储以二进制形式   二进制处理文件原因:文件类型不同、操作系统不同(硬盘上存储文件相同)、linux默认以二进制形式

1 f=open('test.py','rb',encoding='utf-8')
2 # 以二进制方式读取,又以utf-8编码文件  两者冲突

 ValueError:binary mode doesn't take an encoding argument

b的方式不能执行编码

'\r\n'  Win 回车换行  \x 十六进制    newline 读取文件中真正的换行符号  utf-8 一个中文三个字符

f=open('b.txt.'r',encoding='utf-8',newline='')
 1 f=open('test.py','rb') # 以二进制方式读取  结果呈现为字节形式
 2 # 二进制形式转换为字符串形式
 3 data=f.read()
 4 # '字符串‘———encode----> bytes
 5 # 'bytes'———decode-----> '字符串'
 6 print(data)
 7 print(data.decode('utf-8')
 8 
 9 f=open('test1.py','wb')  # b的方式不能指定编码
10 f.write('111\n')
11 # TypeError: a bites-like object is required,not 'str'
12 # 转换为二进制 byte(x,encoding='utf-8')  字符串转化为字节(编码)
13 有下面两种方式
14 f=write(bytes('111\n',encoding='utf-8'))  # 1
15 
16 x='hello'  
17 x.encode('utf-8')    # 2
18 # 直接b转换是错误的
19 
20 f=open('test.py','ab')   # 最后一行

 

文件操作的其他方法

文件内光标移动:read(3) 代表读取3个字符,其余文件内光标移动都是以字节为单位,如seek、tell、truncate。

tell 告诉光标当前位置

seek 控制光标移动   默认从0开始即文件开头开始 因此seek有两个参数,必须以b方式打开  seek(10,1) # 1表示从上一个位置开始  seek(-10,2) # 2表示从结尾开始  倒序10个字节(注意负号!!)

truncate 文件截断 从开头一直到()位置       silice  不同:truncate文件以写的方式打开,但不能是 w、w+, w存在则清空

# 读取文件中所有内容组成一个大列表  缺点:效率低且工作量大
for i in f.readlines:
      print(i)

# 循环文件的推荐方式 文件句柄
for i in f:
    print(i)

# 读取文件最后一行
for i in f:
   offs=-10   # 偏移量
   while True:
            f.seek(offs,2)
            data=f.readlines() # 读取从当前位置到最后一行 表现为行
            if len(data) >1;
              print('最后一行是%s' %(data[-1].decade('utf-8')))
              break  

 

标签:文件,utf,读取,encoding,处理,data,操作,open
From: https://www.cnblogs.com/yt862569307/p/16881835.html

相关文章

  • MapReduce之WordCount实例操作
    WordCount实例操作本地执行wordcount操作1、启动IDEA,在idea搭建maven项目配置hadoop基本依赖,导入hadoop需要的一些包pom.xml的文件配置<?xmlversion="1.0"encoding......
  • 数据降噪处理--python实现
    原文链接:https://blog.csdn.net/qq_38342510/article/details/121227880一、均值滤波1)算法思想 给定均值滤波窗口长度,对窗口内数据求均值,作为窗口中心点的数据的值,之后......
  • Windows查看文件哈希值
    命令方法http://t.zoukankan.com/Eleven-Liu-p-12423235.html软件方法https://cloud.tencent.com/developer/article/1454309......
  • Mysql8创建用户以及赋权操作
    1.使用root进入mysqlmysql>mysql-uroot-p 2.使用命令创建用户tmc设置密码123456mysql>createuser'tmc'@'%'identifiedby'123456';QueryOK,0rows......
  • 构建samba共享文件服务器
    拓扑图:推荐步骤:Ø 创建组名字benet,创建bob、tom、alice、marry将用户添加到benet组,安装samba服务器,bob、tom、alice为普通账户marry为管理员对所有目录有读取和写入权限Ø......
  • WinHex 可发现一些图片或文件的隐含信息
    文章内容简介:用WinHex发现图片的隐含信息一、取一张特殊的图片  我们正常打开,发现没有什么特殊的信息 二、用winhex打开  打开后,我们发现存在信息:tomisth......
  • 三环PE文件自行加载,并运行,解析PE结构,修复IAT,修复重定位表
    1//PELoad.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。2//34#include<iostream>5#include<windows.h>6#include<tchar.h>......
  • 前端展示下载进度条;取消下载操作;
    展示下载进度条,替换url即可;原文请点击<template><el-progress:percentage="percentage"></el-progress><h1>{title}</h1><el-button:disabled="isDisab......
  • 百度富文本添加导入word文件
    如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra......
  • 【数据结构-树】并查集的基本操作(待整理)
    目录1数据结构定义2初始化3查找操作4并操作1数据结构定义#defineMAX50intUFSets[MAX];//并查集2初始化//参数:并查集SvoidInit(intS[]){inti;......