1. 文件处理流程

  • 打开文件,得到文件句柄并赋值给一个变量;
  • 通过句柄对文件进行操作;
  • 关闭文件
 with open("filename","r",encoding="utf-8") as f:
data = f.read()
print(data)
f.close()

2. 文件操作权限(文件操作内容的数据类型必须为字符串型)

  • "r":只读

f.read():读取文件所有内容;

f.readline():逐行读取文件内容;

f.readable():判断文件是否可读;

f.readlines():按行读取文件所有内容,以列表形式返回。

  • "w":只写(若文件不存在,则在打开操作路径下重新创建空白文件)

f.write("alex\n"):将指定内容写入文件;

f.writelines(["alex\n","bob\n"]):将列表中元素依次写入文件

  • "a":追加(追加式写入文件内容)

f.write("alex\n"):将指定内容追加式写入文件末尾

  • "r+":读写(既能读取文件内容,又能追加式写入文件内容)
  • "rb":字节方式读取文件内容
  • "wb":字节方式写入指定文件内容
  • "ab":字节方式追加式写入文件内容

3. 其他文件操作方法

  • 同时打开多个文件:
 with open("XXX","r",encoding="gbk") as src_f,\
open("XXX_new","w",encoding="gbk") as dst_f:
  • 对文件进行字节操作时,open()函数不能指定编码方式,即open("文件路径","字节操作权限")。
  • Windows中文件换行符为"\r\n",Python会自动将所有换行符转换为"\n",使用语句open("文件路径","操作权限",encoding="编码方式",newling="")禁止该默认转换操作。
  • 对字节型变量进行解码:data.decode("utf-8")
  • 对字符串变量进行字节编码:bytes(data,encoding="utf-8")或data.encoding("utf-8")。
  • 按行循环文件:
 """
#人口信息.txt内容:
{"name":"北京","population":2100000}
{"name":"南京","population":1600000}
{"name":"山东","population":2888888}
{"name":"山西","population":1800000}
""" #bin.py中内容
with open("人口信息.txt","r+",encoding="utf-8") as f:
for item in f:
print(item.strip()) """
运行结果:
{"name":"北京","population":2100000}
{"name":"南京","population":1600000}
{"name":"山东","population":2888888}
{"name":"山西","population":1800000}
"""
  • 读取文件最后一行内容:
 """
#人口信息.txt内容:
{"name":"北京","population":2100000}
{"name":"南京","population":1600000}
{"name":"山东","population":2888888}
{"name":"山西","population":1800000}
""" #bin.py中内容
with open("人口信息.txt","r",encoding="utf-8") as f:
data=f.readlines()
print(data[-1].strip())
f.close() """
运行结果:
{"name":"山西","population":1800000}
"""
  • 当不知道源文件的具体编码方式时,使用"latin-1"可兼容多种编码方式。

4. 其他文件操作内置函数

  • f.closed():查看文件是否关闭;
  • f.encoding():查看文件操作的编码方式;
  • f.flush():刷新文件内容到硬盘中;
  • f.name():查看操作文件的文件名;
  • f.tell():光标在文件中所在的位置;
  • f.seek(3):将光标移动到指定位置后的第3个字节位置处

模式0:以文件首字节为起点,移动光标,f.seek(3);

模式1:以光标当前位置为起点,移动光标,f.seek(3,1);

模式2:以文件尾字节为起点,移动光标,f.seek(-3,2)。

  • f.truncate(10):截取文件中光标位置位于1-10的字节内容。

其中,只有函数f.read(3)表示在光标位置处向后读取3个字符,其余的文件内光标移动操作都是以字节为单位的,包括f.seek()和f.tell。

day05.1-文件处理的更多相关文章

  1. 复制D:\\day05目录下的所有文件到D:\\copy,并将.txt文件改为.java文件。

    **解题思路: 1.首先定义一个静态的refile方法,参数传入两个文件路径 2.要复制目录下的所有文件,首先查询File类的方法,可以使用listFiles方法得到目录下的文件 3.想到这问题基本就 ...

  2. day05文件编辑命令

    day05文件编辑命令 mv命令:移动文件 mv命令:mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中. 格式:mv [原来的文件路径] [现在的文件路径] mv命令后面既可以跟 ...

  3. Day05 (黑客成长日记) 文件操作系列

    文件操作: 1.以什么编码方式输出,就以什么编码方式打开 f = open('d:\文件操作.txt',mode='r',encoding='GB2312') G = f.read() print(G ...

  4. day05.2-一个文件的增删改查实例

    一. 测试程序   #INFO.txt源文件内容 global log 127.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defa ...

  5. 标C编程笔记day05 函数声明、文件读写、联合类型、枚举类型

    函数声明:     1.隐式声明:在没有声明的情况下,系统可依据參数类型推断去调用函数(有可能出错)     2.显式声明:声明在被调用之前.如:double add(double,double);  ...

  6. Day05:集合操作——线性表(二) / 查找表 / 文件操作——File(一)

    文件操作:https://www.cnblogs.com/wsnb8/p/11403626.html

  7. Python学习【day05】- Python文件处理

    一.打开文件 对文件的操作主要为三步:1.打开文件,得到文件句柄.2.通过句柄对文件进行操作.3.关闭文件 # 默认打开模式为r,encoding默认为系统文件编码 f=open('F:/Go.txt ...

  8. day05 创建用户过程、文件夹,文件等权限修改等

    linux创建用户时修改到的文件 /etc/passwd //存放用户信息 /etc/shadow //存放用户密码信息 /etc/group //存放用户组信息 /etc/gshadow //存放组 ...

  9. day05 Servlet 开发和 ServletConfig 与 ServletContext 对象

    day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...

  10. 老男孩python学习自修【第一天】文件IO用法

    第一天   文件IO处理 1.读文件实例 file_split.python f = file('myFile.txt', 'r') for line in f.readlines(): line = ...

随机推荐

  1. tomcat的中的Apache的apr是个啥东东???

    这东西的作用说白了就是让我们的项目在其他系统中也可以正常运行!!!!

  2. KVM下raw和qcow2格式磁盘文件IO测试

    1. Host OS 环境 CPU: Intel Xeon E5620 2.40GHz MEM: 16GB DISK: 500GB SATA OS: CentOS5.7 64bit 2. Guest ...

  3. [C++] * Basic and Class

    C++ 目  录 1 开始学习C++ 4 1.1 C++的头文件 4 1.2 命名空间 4 1.3 更严格的类型转化 4 1.4 new和delete 4 1.5 内联函数 4 1.6 引用 5 1. ...

  4. Windows Server 2012 R2 Standard x64 deploy Visual Studio 2015 Application

    When I run the Server application on Windows Server 2012 R2 operation system. I meet the error:MSVCP ...

  5. 并查集 - 1611 The Suspects

    题目地址: http://poj.org/problem?id=1611 分析: - 数据结构 - parent[x] 表示 x 元素的父节点位置. - rank[x] 记录x的子链的长度, 以便在合 ...

  6. .NET开源MSSQL、Redis监控产品Opserver之Exception配置

    异常日志的记录和监控主要依赖于StackExchange.Exceptional组件,默认已经被引进来了. 先看下config文件夹下的ExceptionsSettings.json.example文 ...

  7. gitlab 升级到 5.3 之后不能pull

    升级gitlab到5.3之后pull出现下面的错误: /usr/local/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill': T ...

  8. java Random类和Math.Rondom

      Java中存在着两种Random函数: 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取 ...

  9. 《深入理解Elasticsearch》README

    书目 <深入理解ElasticSearch>拉斐尔·酷奇,马雷克·罗戈任斯基[著]张世武,余洪森,商旦[译] 机械工业出版社,2016.1 本系列包括以下8篇笔记 第01章 Elastic ...

  10. 设计模式17:Iterator 迭代器模式(行为型模式)

    Iterator 迭代器模式(行为型模式) 动机(Motivation) 在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码可以透 ...