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

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

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

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

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

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

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

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

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

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

 

   - 同样可以分块读取

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

  - 一行一行的读取

 poem = ''
file_obj = open('诗', 'rt')
while True:
line = file_obj.readline()
if not line:
break
poem += line print(poem)
"""
输出:
离离原上草,一岁一枯荣。
野火烧不尽,春风吹又生。
远芳侵古道,晴翠接荒城。
又送王孙去,萋萋满别情。
"""

  - 使用迭代器读取文件

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

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

 file_obj = open("诗", 'rt')
lines = file_obj.readlines()
print(lines)
for line in lines:
print(line, end='') """
['\n', ' 离离原上草,一岁一枯荣。\n', ' 野火烧不尽,春风吹又生。\n', ' 远芳侵古道,晴翠接荒城。\n', ' 又送王孙去,萋萋满别情。\n'] 离离原上草,一岁一枯荣。
野火烧不尽,春风吹又生。
远芳侵古道,晴翠接荒城。
又送王孙去,萋萋满别情。
"""

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

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

  - 分段写入

 bin_data = bytes(range(0, 255))
f = open('bin_file', 'wb')
chunk = 100 # 每次写入100个字节
offset = 0
while True:
if offset > len(bin_date):
break
f.write(bin_data[offset:chunk + offset])
offset += chunk f.close()

  - 读取二进制文件

 f = open('bin_file', 'rb')
bin_data = f.read()
f.close()

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

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

本文参考:

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

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

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

    /* 使用文件IO将文件fds中的内容复制到文件fdd中去 1.创建两个文件描述符 2.使用open()方法分别以只读只写方式将文件描述符符文件连接 3.将读位置后移三位 4.将fds内容存储到缓冲区 ...

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

    IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从 ...

  3. 第9.11节 Python中IO模块文件打开读写操作实例

    为了对前面学习的内容进行一个系统化的应用,老猿写了一个程序来进行文件相关操作功能的测试. 一. 测试程序说明 该程序允许测试人员选择一个文件,自己输入文件打开模式.写入文件的位置以及写入内容,程序按照 ...

  4. Python中的文件IO操作(读写文件、追加文件)

    Python中文件的读写包含三个步骤:打开文件,读/写文件,关闭文件. 文件打开之后必须关闭,因为在磁盘上读写文件的功能是由操作系统提供的,文件作为对象,被打开后会占用操作系统的资源,而操作系统在同一 ...

  5. 【Python】[IO编程]文件读写,StringIO和BytesIO,操作文件和目录,序列化

    IO在计算机中指Input/Output,也就是输入和输出. 1.文件读写,1,读文件[使用Python内置函数,open,传入文件名标示符] >>> f = open('/User ...

  6. [python 学习] IO操作之读写文件

    一.读取全部文件: # -*- coding: utf-8 -*- f = open('qq_url.txt','r'); print f.read(); f.close(); 二.读取规定长度文件 ...

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

    案例1: 演示FileInputStream类的使用(用FileInputStream的对象把文件读入到内存) 首先要在E盘新建一个文本文件,命名为test.txt,输入若干字符 public cla ...

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

    2015.1.27星期二,早晨阴天,中午下雪了今天上午老师不上课,程序语句,记一下:main(void){ int c; while((c = getc(stdin)) != EOF) if(putc ...

  9. Java文件(io)编程——文件字符流的使用

    案例1: 读取一个文件并写入到另一个文件中,char[] 来中转. 首先要在E盘下创建一个文本文档,命名为test.txt,输入一些字符串. public class Demo_5 { public ...

随机推荐

  1. asp.net 翻页时用ViewState保存上一页checkbox勾选的值

    /// <summary>        /// checkbox勾选取消勾选事件        /// </summary>        /// <param nam ...

  2. Spring课程 Spring入门篇 4-1 Spring bean装配(下)之bean定义及作用域注解实现

    课程链接: 1 概述 2 代码演练 3 代码解析 1 概述 1.1 bean注解相关 a context:component-scan标签使用 问:该标签的作用是什么? 答:该标签作用是支持注解,在x ...

  3. Hibernate课程 初探一对多映射2-7 测试-修改和删除学生信息

    package com.ddwei.entity; import java.util.Set; import org.hibernate.Session; import org.hibernate.T ...

  4. FastDFS 基础知识

    FastDFS是一个开源的轻量级分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount ...

  5. CSS命名规范(规则)

    常用的CSS命名规则 头:header内容:content/container尾:footer导航:nav侧栏:sidebar栏目:column页面外围控制整体佈局宽度:wrapper左右中:left ...

  6. vue多个组件的过渡

    <transition name="component-fade" mode="out-in"> <component v-bind:is=& ...

  7. php支付走过的坑(微信篇 包含h5支付和app支付 注册 秘钥 环境等等配置)

    支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...

  8. sublime介绍常用插件和快捷键

    简介 Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来的,它最初被设计为一个具有丰富扩展功能的Vim. 是一个跨平台的编辑器,同时支持Windows.Linux.M ...

  9. 关于No Dialect mapping for JDBC type :-9 hibernate执行原生sql语句问题

    转自博客http://blog.csdn.net/xd195666916/article/details/5419316,同时感谢博主 今天做了个用hibernate直接执行原生sql的查询,报错No ...

  10. python_opencv应用系列1:图片读写

    opencv的读写非常简单,主要用到的就是imread和imwrite两个函数 读取图片示例 import cv2 #imread(filename[, flags]) -> retval im ...