大家应该听说过一句话:“好记性不如烂笔头”。

不仅人的大脑会遗忘事情,计算机也会如此,比如一个程序在运行过程中用了九牛二虎之力终于计算出了结果,试想一下如果不把这些数据存放起来,电脑异常关机之后,“哭都没地方哭了”。

程序运行的时候,相关数据是保存在内存中的,关闭计算机电源,内存中的数据就丢失了。为了永久的保存数据,必须将数据存储于文件内,文件通常是保存在硬盘、软盘或光盘中。

1. 文件的打开与关闭

如果想用word编写一份文档,应该有哪些流程呢

  1. 打开word软件,新建一个word文件
  2. 写入文档内容
  3. 保存文件
  4. 关闭word软件

同样,在操作文件的整体过程与使用word编写文档的过程是很相似的

  1. 打开文件,或者新建一个文件
  2. 读/写数据
  3. 关闭文件

1.1 打开文件

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。

open(文件名,访问模式)

示例如下:

f = open('test.txt', 'w')print(f)# <open file 'test.txt', mode 'w' at 0x000000000334C150>

文件模式说明

1.2 关闭文件

# 新建一个文件,文件名为:test.txtf = open('test.txt', 'w')# 关闭这个文件f.close()

2. 文件的读写

2.1 写数据(write)

使用write()可以完成向文件写入数据

f = open('test.txt', 'w')
f.write('hello world, i love python!')
f.close()

注意:如果文件不存在那么创建,如果存在那么就先清空,然后写入数据

2.2 读数据(read)

使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

f = open('test.txt', 'r')content = f.read(5)
print(content)
print("-"*30)
content = f.read()
print(content)f.close()

运行结果

hello
------------------------------world, i love python!

注意:

  • 如果open是打开一个文件,那么可以不用写打开的模式,即只写 open('test.txt')
  • 如果使用read读了多次,那么后面读取的数据是从上次读完后的位置开始的

2.3 读数据(readlines)

就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

f = open("test.dat", "w")
f.write("hello world!n i love python!n GoodBye!")
f.close()f = open('test.dat', 'r')
content = f.readlines()
print(type(content))
print(content)f.close()

运行结果

<type 'list'>
['hello world!n', ' i love python!n', ' GoodBye!']

2.4 读数据(readline)

readline方法每次从文本文件中读取一行的内容,包括换行符。

f = open('test.txt', 'r')content = f.readline()
print("1:%s"%content)content = f.readline()
print("2:%s"%content)f.close()

运行结果

1:hello world!2: i love python!

行处理程序,函数filterFile拷贝一个文件,同时将旧文件中不是以“#”开头的行写入新文件中:

def filterFile(old, new):sfile = open(old, "r")dfile = open(new, "w")while 1:text = sfile.readline()if text == "":breakelif text[0] == "#":continueelse:dfile.write(text)sfile.close()dfile.close()

实际应用:文件的备份

需求描述:输入文件的名字,然后程序自动完成对文件的备份。

oldFileName = input("请输入要拷贝的文件名字:")oldFile = open(oldFileName,'r')# 如果打开文件
if oldFile:# 提取文件的后缀fileFlagNum = oldFileName.rfind('.')if fileFlagNum > 0:fileFlag = oldFileName[fileFlagNum:]# 组织新的文件名字newFileName = oldFileName[:fileFlagNum] + u'[复件]' + fileFlag# 创建新文件newFile = open(newFileName, 'w')# 把旧文件中的数据,一行一行的进行复制到新文件中for lineContent in oldFile.readlines():newFile.write(lineContent)# 关闭文件oldFile.close()newFile.close()

3. 文件的定位读写

3.1 获取当前读写的位置

在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取。

# 打开一个已经存在的文件f = open("test.txt", "r")str = f.read(3)print "读取的数据是 : ", str# 查找当前位置position = f.tell()print "当前文件位置 : ", positionstr = f.read(3)print "读取的数据是 : ", str# 查找当前位置position = f.tell()print "当前文件位置 : ", positionf.close()

3.2 定位到某个位置

如果在读写文件的过程中,需要从另外一个位置进行操作的话,可以使用seek()

seek(offset, from)有2个参数

  • offset:偏移量
  • from:方向
  • 0:表示文件开头
  • 1:表示当前位置
  • 2:表示文件末尾

把位置设置为:从文件开头,偏移5个字节。

# 打开一个已经存在的文件f = open("test.txt", "r")str = f.read(30)print "读取的数据是 : ", str# 查找当前位置position = f.tell()print "当前文件位置 : ", position# 重新设置位置f.seek(5,0)# 查找当前位置position = f.tell()print "当前文件位置 : ", positionf.close()

把位置设置为:离文件末尾,3字节处

# 打开一个已经存在的文件f = open("test.txt", "r")# 查找当前位置position = f.tell()print "当前文件位置 : ", position# 重新设置位置f.seek(-3,2)# 读取到的数据为:文件最后3个字节数据str = f.read()print "读取的数据是 : ", strf.close()

4. 文件的重命名和删除

有时候,需要对文件进行重命名、删除等一些操作,python的os模块提供了这些功能。

import os# os模块中的rename()可以完成对文件的重命名操作
os.rename("test.txt", "test-001.txt")# os模块中的remove()可以完成对文件的删除操作
os.remove("test.txt")

5. 文件夹的相关操作

实际开发中,有时需要用程序的方式对文件夹进行一定的操作,比如创建、删除等。

import os# 创建文件夹
os.mkdir("软件")# 获取当前目录
os.getcwd()# 改变默认目录
os.chdir("../")# 获取目录列表
os.listdir("./")# 删除文件夹
os.rmdir("软件")

c++读取.dat文件_Python之旅,Day5 - 文件操作相关推荐

  1. python3 读取.plist文件_Python学习笔记 -5 - 文件操作

    Python文件操作 读写文件是最常见的IO操作,在磁盘上读写文件的功能都是由操作系统提供的,操作系统不允许普通的程序直接操作磁盘(大部分程序都需要间接的通过操作系统来完成对硬件的操作),所以,读写文 ...

  2. python读取nii文件_python实现批量nii文件转换为png图像

    之前介绍过单个nii文件转换成png图像: 这里介绍将多个nii文件(保存在一个文件夹下)转换成png图像.且图像单个文件夹的名称与nii名字相同. import numpy as np import ...

  3. python读取docx文件_Python应用 | 读写docx文件 (值得收藏的技能)

    字处理软件是平时办公必备的同时也是最常用的软件之一,而字处理软件用的最多最频繁的就是微软的word,其扩展名为docx.在日常工作中,可能需要对很多的docx文件进行批处理,例如教师在批阅学生提交的电 ...

  4. python怎么发送代码文件_python 通过 socket 发送文件的实例代码

    目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = ...

  5. python npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

  6. python 怎么拷贝一个文件到一个新的文件_Python脚本提取不同文件夹里面的文件到一个新的文件...

    这条博客分享一个脚本,实现将不同文件夹的我们需要的文件提取到一个新的文件下.如: 这是原来文件下的文件,我将它重新命名,然后复制到下图的文件夹下,实现将很多不同文件夹下很多我们想要的文件提取出来,省的 ...

  7. python合并文件夹下的文件_Python实现合并同一个文件夹下所有PDF文件的方法示例...

    本文实例讲述了Python实现合并同一个文件夹下所有PDF文件的方法.分享给大家供大家参考,具体如下: 一.需求说明 下载了网易云课堂的吴恩达免费的深度学习的pdf文档,但是每一节是一个pdf,我把这 ...

  8. python 批量重命名文件_Python批量重命名文件的方法

    用到了os的两个接口: 1.列出文件夹中的所有文件(也包含目录)os.listdir(path) Return a list containing the names of the entries i ...

  9. python如何打开npy文件_python实现npy格式文件转换为txt文件操作

    如下代码会将npy的格式数据读出,并且输出来到控制台: import numpy as np ##设置全部数据,不输出省略号 import sys np.set_printoptions(thresh ...

最新文章

  1. Science:致病菌激活根系内生微生物组抵抗病害的功能
  2. hdu 2031 进制转换
  3. XCTF-MISC-新手区-base64stego
  4. Vivado软件(用VerilogHDL)如何使用$readmemh和$readmemb函数
  5. ACL2021中的25个Transformers模型
  6. 初识IOS,Label控件的应用。
  7. PHPCMS怎么创建单选按钮、复选框,并在模板里怎么接收和调用。
  8. E71(S60 3rd)通话录音软件 -终极录音- 的用法
  9. B站崩了、Facebook崩了,我们到底该怎么保证高可用
  10. 热爱3D游戏建模,副业兼职外包可以做到什么程度?
  11. 关于switch的一些理解
  12. Asynchronous Methods for Deep Reinforcement Learning-笔记
  13. 数据库MySQL经典面试题之SQL语句
  14. 极简的书签管理器Shaarli
  15. rebound(反弹)攻击技术分析
  16. 工具 | 百度网盘限速解决方案
  17. 全网最详细的接口测试实战案例【全文57000字】
  18. C++求1000以内的完数
  19. qt调用matlab生成的dll库
  20. Transformer课程 业务对话机器人Rasa 3.x Playground

热门文章

  1. php在浏览器输入路径,关于在sublime text 3 中配置一键浏览器打开php文件,并且是在localhost 本地服务器路径下...
  2. zuul 网关的用途_微服务之基于Zuul自研服务网关
  3. python财务管理
  4. MTK和高通展讯他们平台的主要区别是什么
  5. C#基础复习(4) 之 浅析List、Dictionary
  6. CSS 小结笔记之伸缩布局 (flex)
  7. docker社区的geodata/gdal镜像dockerfile分析
  8. C#导入导出Excele数据
  9. linux下命令行操作快捷键及技巧
  10. array2xml xml2array