[Python3] 040 文件 一般使用

目录

  • 文件

    • 1. open 函数
    • 2. with 语句
    • 3. 先写再读
      • 3.1 写
      • 3.2 读
    • 4. “位置”的查询与移动
      • 4.1 tell()
      • 4.2 seek(cookie, whence=0)

文件

  • 长久保存信息的一种数据信息集合
  • 常用操作
    • 打开关闭(文件一旦打开,需要关闭操作)
    • 读写内容
    • 查找

1. open 函数

  • 负责打开文件
  • open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
    • 第一个参数: 必须有,表示文件的路径和名称
    • mode:表明文件用什么方式打开
参数 释义
r 以只读方式打开(默认
w 写方式打开,会覆盖以前的内容
x 创建方式打开,如文件已经存在,报错
a a for append,以追加的方式对文件内容进行写入
b b for binary,二进制方式写入
t 文本方式打开(默认
+ 可读写
U universal newline mode (deprecated)
>>> f = open("text.txt", 'w')  # 使用了 w,若目录中没有所指定的文件,会先自动创建
>>> f.close()  # f 也称“文件句柄”
>>> 

2. with 语句

  • with 语句使用的技术是一种称为上下文管理协议的技术(ContextManagementProtocal)
  • 自动判断文件的作用域,自动关闭不再使用的已打开的文件句柄
>>> with open("text.txt") as f:
...   pass
...
>>> 

3. 先写再读

  • 上面新建了一个 text.txt,别浪费了

3.1 写

3.1.1 write(string)

  • 向文件写入一个字符串或字节流
  • 每次写入后,都会记录一个“写入指针”
  • 该方法可以反复调用,每次都在上回记录的“写入指针”后写入内容,直至文件被关闭
>>> with open("text.txt", 'a') as f:
...   f.write("风急天高猿啸哀\n")
...   f.write("渚清沙白鸟飞回\n")
...   f.write("无边落木萧萧下\n")
...   f.write("不尽长江滚滚来\n")
...
8
8
8
8
>>> 

3.1.2 writeline(lines)

  • lines 代表一个列表
  • 功能:直接将列表类型的各元素连接起来写入文件
>>> lines = ["万里悲秋常作客\n", "百年多病独登台\n", "艰难苦恨繁霜鬓\n", "潦倒新停浊酒杯\n"]
>>> with open("text.txt", 'a') as f:
...   f.writelines(lines)
...
>>> 

3.1.3 两种方法的区别

  • write 函数的参数只能是字符串
  • writerlines 的参数可以是字符串,也可以是字符序列

3.2 读

3.2.1 read()

  • f.read(size=-1)
  • 从文件中读入整个文件内容
  • 参数可选,如果给出,则读入前 size 长度的字符串或字节流
>>> with open("text.txt") as f:
...   f.read()
...
'风急天高猿啸哀\n渚清沙白鸟飞回\n无边落木萧萧下\n不尽长江滚滚来\n万里悲秋常作客\n百年多病独登台\n艰难苦恨繁霜鬓\n潦倒新停浊酒杯\n'
>>> 
>>> f = open("text.txt")
>>> f.read(8)
'风急天高猿啸哀\n'
>>> f.read(8)
'渚清沙白鸟飞回\n'
>>> f.close()
>>> 

3.2.2 readline()

  • f.readline(size = -1)
  • 从文件中读入一行内容
  • 参数可选,如果给出,则读入该行前 size 长度的字符串或字节流
>>> f = open("text.txt")
>>> f.readline()
'风急天高猿啸哀\n'
>>> f.readline()
'渚清沙白鸟飞回\n'
>>> f.close()
>>> 

3.2.3 readlines()

  • f.readlines(hint=-1)
  • 从文件中读入所有行,以每行为元素形成一个列表
  • 参数可选,如果给出,读入 hint
>>> with open("text.txt") as f:
...   for line in f.readlines():
...     print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>> 
  • 文件句柄可以强制转成 list
>>> with open("text.txt") as f:
...   for line in list(f):
...     print(line, end='')
...
风急天高猿啸哀
渚清沙白鸟飞回
无边落木萧萧下
不尽长江滚滚来
万里悲秋常作客
百年多病独登台
艰难苦恨繁霜鬓
潦倒新停浊酒杯
>>> 

4. “位置”的查询与移动

4.1 tell()

  • 显示文件“读写指针”的当前位置
>>> f = open("text.txt")
>>> f.tell()
0
>>> f.readline()
'风急天高猿啸哀\n'
>>> f.tell()
16
>>> f.read(4)
'渚清沙白'
>>> f.tell()
24
>>> 
  • read 与 tell 使用的不是一个单位

4.2 seek(cookie, whence=0)

  • 改变当前文件操作指针的位置
  • whence
    • 0:文件开头(默认
    • 1:从文件当前位置开始偏移
    • 2:文件结尾
  • 移动的单位是字节(byte)
  • 一个汉字由若干个字节构成,一般为 2,也有例外
  • 返回文件只针对当前位置
>>> f = open("text.txt")
>>> f.read(4)
'风急天高'
>>> f.tell()
8
>>>
>>> f.seek(0)
0
>>> f.readline()
'风急天高猿啸哀\n'
>>>
>>> f.seek(8, 0)
8
>>> f.readline()
'猿啸哀\n'
>>> 

原文地址:https://www.cnblogs.com/yorkyu/p/12088157.html

时间: 2024-11-05 04:35:13

[Python3] 040 文件 一般使用的相关文章

Python3整理文件

晚上打算把播放器下载下来的音乐拷贝到mp3里边,但是它是如下形式存放的,相当头痛-- 作为程序员,想到使用python来遍历这个目录,并将有大于限制的音乐文件拷贝到指定目录,相关实现代码如下: # author:liaoyu # date :2014-05-30 import os import re import shutil #音乐目录 dirPath = r'C:\CloudMusic' #音乐存放目录 distPath = r'D:\pyzone\红心音乐' if os.path.isd

Python2.X和Python3.X文件对话框、下拉列表的不同

Python2.X和Python3.X文件对话框.下拉列表的不同 今天初次使用Python Tkinter来做了个简单的记事本程序.发现Python2.x和Python3.x的Tkinter模块的好多内置函数都有所改变,这里简单整理一下以备日后查验. 一.导入方式: Python2.x: from Tkinter import * Python3.x: from tkinter import * 二.打开文件框: Python2.X: import tkFileDialog filename =

sublime text中用python3运行文件

Edit sublime text中用python3运行文件 在sublime text中可以使用快捷键cmd + b(windows是CTRL + b)快速运行一个python文件,sublime会直接调用系统默认python运行文件,并在下面的框里弹出结果. 如果我们想要使用自己的python版本,如python3或者其他第三方python包(如本人使用的anaconda)要怎么办呢? sublime使用cmd+b的操作叫做build,在Tools -> Build System中可以看到系

python3 写文件问题

0x92 即 10010010,UTF8 中编码一个字符的第一个字节(start byte)只可能是 0xxxxxxx.110xxxxx.1110xxx.11110xxx--而后面的字节只可能是 10xxxxxx.也就是说 0x92 只能作为后面的字节,却出现在了第一个字节的位置. 出现这种问题绝大部分情况是因为文件不是 UTF8 编码的(例如,可能是 GBK 编码的),而系统默认采用 UTF8 解码.解决方法是改为对应的解码方式. 极少数情况是因为文件损坏了或者和一部分非 UTF8 编码混在一

Python3 对文件操作

计算机文件 在计算机系统中,以硬盘为载体存储在计算机上的信息集合称为文件.文件可以是文本文档.图片.声音.程序等多种类型.在编程时经常要对文件进行读写等操作, 从程序员的视角可以把文件理解为是连续的字节序列,进行数据传输需要使用字节流, 字节流可以是由单个字节或大块数据组成.文件类型通常分为文本文件和二进制文件. 文件操作 在 Python中对文件进行操作分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件. 打开文件---open函数 你必须先用Python内置的open(

[Python3]INI文件读写

概述 ini是我们常见到的配置文件格式之一. ini是微软Windows操作系统中的文件扩展名(也常用在其他系统). ini“初始化(Initial)”的缩写.正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置. 其基本组成形式如下: [section_1] key1 = value1 key2 = value2 key3 = value3 key4 = value4 [section_2] key1 = value1 key2 = value2 key3 = valu

Python3 读写文件碰到的编码问题

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

python3 在文件确实存在的情况下,运行提示找不到文件

提示 [Errno 2] No such file or directory: 但是路径下确实存在此文件,在不改动的情况下,再次运行,执行成功. 百思不得其解,看到此链接下的回答 http://bbs.csdn.net/topics/391934998?page=1 尝试使用 os.path.normpath() 替换os.path.join(),先记录待测试.

Python3基础 文件write 与 open(w) 对一个不存在的txt进行创建与写入

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: #file 文件类型的对象 file=open(r'F:\PersonKeyKey.txt','w') #这是一个没有内容的文本,现在要往里面写内容 file.write('<道德经>原文 "我有三宝持而保之∶一曰慈,二曰俭,三曰不敢为天下先."') fi