Python文件IO(普通文件读写)

## 打开一个文件
  - fileobj = open(filename, mode)
  其中:
    fileobj是open()返回的文件对象
    filename是该文件的字符串名
    mode是指明文件类型和操作的子字符串
  
  - mode的第一个字母表示对其的操作
    - r表示读取
    - w表示写入,如果文件不存在就创建,如果存在则重新写入新内容
    - x表示在文件不存在的情况下新创建并写文件
    - a表示如果文件存在,在文件末尾追加内容

  - mode的第二个字母是文件类型
    - t(或者省略)代表文本类型
    - b代表二进制文件

## 使用write()写入文件,使用close()关闭文件

1 poem = """
2     离离原上草,一岁一枯荣。
3     野火烧不尽,春风吹又生。
4     远芳侵古道,晴翠接荒城。
5     又送王孙去,萋萋满别情。
6 """
7 file_obj = open("诗", ‘wt‘)   # 打开名为‘诗’的文本文件,若‘诗’不存在则创建
8 file_obj.write(poem)         # 写入文件
9 file_obj.close()             # 关闭文件

  - 也可以使用print()写入文件

1 poem = """
2     离离原上草,一岁一枯荣。
3     野火烧不尽,春风吹又生。
4     远芳侵古道,晴翠接荒城。
5     又送王孙去,萋萋满别情。
6 """
7 file_obj = open("诗", ‘wt‘)   # 打开名为‘诗’的文本文件,若‘诗’不存在则创建
8 print(poem, file=file_obj)   # 写入文件
9 file_obj.close()             # 关闭文件

  - 如果需要写入的内容非常多,可以将数据分块写入

 1 poem = """
 2     离离原上草,一岁一枯荣。
 3     野火烧不尽,春风吹又生。
 4     远芳侵古道,晴翠接荒城。
 5     又送王孙去,萋萋满别情。
 6 """
 7 file_obj = open("诗", ‘wt‘)   # 打开名为‘诗’的文本文件,若‘诗’不存在则创建
 8
 9 start = 0
10 chunk = 20    # 每次写入20个字符
11 while True:
12     if start > len(poem):
13         break
14     file_obj.write(poem[start:start+chunk])
15     start += chunk
16
17 file_obj.close()             # 关闭文件

## 文件读取
  - read():不带参数的read()函数一次读取文件的所有内容

 1 file_obj = open("诗", ‘rt‘)  # 使用读取模式打开文本文件
 2 poem = file_obj.read()      # 读取文件中所有内容
 3 file_obj.close()            # 关闭文件
 4 print(poem)
 5 """
 6 输出:
 7     离离原上草,一岁一枯荣。
 8     野火烧不尽,春风吹又生。
 9     远芳侵古道,晴翠接荒城。
10     又送王孙去,萋萋满别情。
11 """

 

   - 同样可以分块读取

 1 poem = ‘‘
 2 file_onj = open("诗", ‘rt‘)
 3 chunk = 20  # 每次读取20个字符
 4 while True:
 5     frag = file_onj.read(chunk)
 6     if not frag:    # 读到文件末尾时再次调用read()函数会返回空字符串,not frag为真,执行break
 7         break
 8     poem += frag
 9
10 print(poem)
11 """
12 输出:
13     离离原上草,一岁一枯荣。
14     野火烧不尽,春风吹又生。
15     远芳侵古道,晴翠接荒城。
16     又送王孙去,萋萋满别情。
17 """

  - 一行一行的读取

 1 poem = ‘‘
 2 file_obj = open(‘诗‘, ‘rt‘)
 3 while True:
 4     line = file_obj.readline()
 5     if not line:
 6         break
 7     poem += line
 8
 9 print(poem)
10 """
11 输出:
12     离离原上草,一岁一枯荣。
13     野火烧不尽,春风吹又生。
14     远芳侵古道,晴翠接荒城。
15     又送王孙去,萋萋满别情。
16 """

  - 使用迭代器读取文件

 1 poem = ‘‘
 2 file_obj = open("诗", ‘rt‘)
 3 for line in file_obj:       # 效果相同,但代码更短
 4     poem += line
 5
 6 print(poem)
 7 """
 8 输出:
 9     离离原上草,一岁一枯荣。
10     野火烧不尽,春风吹又生。
11     远芳侵古道,晴翠接荒城。
12     又送王孙去,萋萋满别情。
13 """

  - readlines():每次读取一行,并返回单行字符串的列表

 1 file_obj = open("诗", ‘rt‘)
 2 lines = file_obj.readlines()
 3 print(lines)
 4 for line in lines:
 5     print(line, end=‘‘)
 6
 7 """
 8 [‘\n‘, ‘    离离原上草,一岁一枯荣。\n‘, ‘    野火烧不尽,春风吹又生。\n‘, ‘    远芳侵古道,晴翠接荒城。\n‘, ‘    又送王孙去,萋萋满别情。\n‘]
 9
10     离离原上草,一岁一枯荣。
11     野火烧不尽,春风吹又生。
12     远芳侵古道,晴翠接荒城。
13     又送王孙去,萋萋满别情。
14 """

## write()写入二进制文件

1 bin_data = bytes(range(0, 255)) # 将序列转换为二进制数据
2 f = open(‘bin_file‘, ‘wb‘)      # 以二进制文件的格式打开文件
3 f.write(bin_data)               # 写入
4 f.close()                       # 关闭

  - 分段写入

 1 bin_data = bytes(range(0, 255))
 2 f = open(‘bin_file‘, ‘wb‘)
 3 chunk = 100     # 每次写入100个字节
 4 offset = 0
 5 while True:
 6     if offset > len(bin_date):
 7         break
 8     f.write(bin_data[offset:chunk + offset])
 9     offset += chunk
10
11 f.close()

  - 读取二进制文件

1 f = open(‘bin_file‘, ‘rb‘)
2 bin_data = f.read()
3 f.close()

## 使用with自动关闭文件,with代码块执行完毕后自动关闭文件

 1 with open("诗", ‘rt‘) as f:
 2     poem = f.read()
 3
 4 print(poem)
 5 """
 6 输出:
 7     离离原上草,一岁一枯荣。
 8     野火烧不尽,春风吹又生。
 9     远芳侵古道,晴翠接荒城。
10     又送王孙去,萋萋满别情。
11 """

本文参考:

  [美]Bill Lubanovic 《Python语言及其应用》

原文地址:https://www.cnblogs.com/hycstar/p/9255024.html

时间: 2024-10-07 05:57:10

Python文件IO(普通文件读写)的相关文章

0723------Linux基础----------文件 IO之文件的打开

1.文件的打开  1.1 open 和 fopen .open 返回的是文件描述符,而fopen 返回的是文件指针,二者的第二个参数也不同,一个是宏定义的,一个是字符串.因此在书写的时候要特别注意. int fd = open("test.txt", O_RDONLY); FILE *fp = fopen("test.txt", "r"); 1.2 FILE * 和 fd 之间的转化 1.2.1 从FILE *  转化成 fd. fileno函数

Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从磁盘读取文件到内存,就只有Input操作,反过来,把数据写到磁盘文件里,就只是一个Output操作. 由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题.举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这10

Java文件(io)编程——文件字节流的使用

案例1: 演示FileInputStream类的使用(用FileInputStream的对象把文件读入到内存) 首先要在E盘新建一个文本文件,命名为test.txt,输入若干字符 1 public class Demo_2 { 2 3 public static void main(String[] args) { 4 File f=new File("e:\\test.txt"); //得到一个文件对象f,指向e:\\test.txt 5 FileInputStream fis=nu

文件IO——将文件dfs的文件内容第三个字节之后的内容复制到文件dfd中

错误解析: O_APPEND 的作用,写文件时读写位置指向末尾,例如,未使用O_APPEND是原文1122,写入AA,则最终文件结果:AA22 原文地址:https://www.cnblogs.com/lanbofei/p/9559610.html

UNIX,基础知识,文件IO,文件和目录

2015.1.27星期二,早晨阴天,中午下雪了今天上午老师不上课,程序语句,记一下:main(void){ int c; while((c = getc(stdin)) != EOF) if(putc(c,stdout) == EOF) 将字符写到标准输出 err_sys("output error"); if(ferror(stdin)) err_sys("input error"); exit(0);} 从标准输入读命令并执行:int main(){ char

Unix高级编程之文件IO

文件io---低级io 特点: 不带缓存io优点: 实时性高 1.io基本操作 文件描述符:文件io打开文件的标识 非负整型数,是内核为打开文件维护结构的数组下标 默认最多能打开1024文件 stdin-----0 stdout-----1 stderr-----2 函数: open(2); read(2); write(2); lseek(2); <1>允许偏移的字节个数大于文件本身 <2>lseek()本身不进行读写操作 空洞文件 空洞文件本身不占用磁盘空间 close(2);

Python IO编程——文件读写

1.1   文件读写 1.1.1   读文件 >>> f = open('/root/python/hello.py','r')    #标识符r表示读 >>> f =open('/root/python/hello1.py', 'r')   #文件不存在报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundE

IO,文件,字节串(bytes),文件读写基本操作

IO 1. 定义 >在内存中存在数据交换的操作认为是IO操作,比如和终端交互 ,和磁盘交互,和网络交互等 2. 程序分类 >* IO密集型程序:在程序执行中有大量IO操作,而cpu运算较少.消耗cpu较少,耗时长. >* 计算密集型程序:程序运行中计算较多,IO操作相对较少.cpu消耗多,执行速度快,几乎没有阻塞. 文件 文件是保存在持久化存储设备(硬盘.U盘.光盘..)上的一段数据.从功能角度分为文本文件(打开后会自动解码为字符).二进制文件(视频.音频等).在Python里把文件视作

五.Python文件IO和路径操作

目录 Python文件IO操作 上下文管理with 路径操作 01 Python文件IO操作: clumn column open 打开 read 读取 write 写入 close 关闭 readline 行读取 readlines 多行读取 seek 文件指针操作 tell 指针位置 打开文件 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=No