当前位置: 首页 > news >正文

[Python基础]Python文件处理小结

1. 文件的打开与关闭

<1>打开文件

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

open(文件名,访问模式)

示例如下:

f = open('test.txt', 'w')

 

说明:

访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

<2>关闭文件

close( )

示例如下:

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

# 关闭这个文件
f.close()

2. 文件的读写

<1>写数据(write)

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

demo:

f = open('test.txt', 'w')

f.write('hello world, i am here!')

f.close()

运行现象:

<2>读数据(read)

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

demo:

f = open('test.txt', 'r')

content = f.read(5)

print(content)

print("-"*30)

content = f.read()

print(content)

f.close()

 

运行现象:

 

<3>读数据(readlines)

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

#coding=utf-8

f = open('test.txt', 'r')

content = f.readlines()

print(type(content))

i=1
for temp in content:
    print("%d:%s"%(i, temp))
    i+=1

f.close()

运行现象:

<4>读数据(readline)

#coding=utf-8

f = open('test.txt', 'r')

content = f.readline()
print("1:%s"%content)

content = f.readline()
print("2:%s"%content)

f.close()

运行现象:

3. 文件复制

#coding=utf-8

oldFileName = raw_input("请输入要拷贝的文件名字:")

oldFile = open(oldFileName,'rb')

# 如果打开文件
if oldFile:

    # 提取文件的后缀
    fileFlagNum = oldFileName.rfind('.')
    if fileFlagNum > 0:
        fileFlag = oldFileName[fileFlagNum:]

    # 组织新的文件名字
    newFileName = oldFileName[:fileFlagNum] + '[复件]' + fileFlag

    # 创建新文件
    newFile = open(newFileName, 'wb')

    # 把旧文件中的数据,一行一行的进行复制到新文件中
    for lineContent in oldFile.readlines():
        newFile.write(lineContent)

    # 关闭文件
    oldFile.close()
    newFile.close()

4. 文件的随机读写

<1>获取当前读写的位置

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

# 打开一个已经存在的文件
f = open("test.txt", "r")
str = f.read(3)
print "读取的数据是 : ", str

# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position

str = f.read(3)
print "读取的数据是 : ", str

# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position

f.close()

<2>定位到某个位置

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

seek(offset, from)有2个参数

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

demo:把位置设置为:从文件开头,偏移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 "当前文件位置 : ", position

f.close()

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

 # 打开一个已经存在的文件
f = open("test.txt", "r")

# 查找当前位置
position = f.tell()
print "当前文件位置 : ", position

# 重新设置位置
f.seek(-3,2)

# 读取到的数据为:文件最后3个字节数据
str = f.read()
print "读取的数据是 : ", str

f.close()

 

5. 文件的重命名、删除

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

<1>文件重命名

os模块中的rename()可以完成对文件的重命名操作

rename(需要修改的文件名, 新的文件名)

import os

os.rename("毕业论文.txt", "毕业论文-最终版.txt")

<2>删除文件

os模块中的remove()可以完成对文件的删除操作

remove(待删除的文件名)

import os

os.remove("毕业论文.txt")

6. 文件夹的相关操作

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

就像对文件操作需要os模块一样,如果要操作文件夹,同样需要os模块。

<1>创建文件夹

import os

os.mkdir("张三")

 

<2>获取当前目录

import os

os.getcwd()

 

<3>改变默认目录

import os

os.chdir("../")

 

<4>获取目录列表

import os

os.listdir("./")

 

<5>删除文件夹

import os

os.rmdir("张三")

7. 批量修改文件名

#coding=utf-8

#批量在文件名前加前缀

import os

funFlag = 1 # 1表示添加标志  2表示删除标志

folderName = './renameDir/'

# 获取指定路径的所有文件名字
dirList = os.listdir(folderName)

# 遍历输出所有文件名字
for name in dirList:
    print name

    if funFlag == 1:
        newName = '[修改]-' + name
    elif funFlag == 2:
        num = len('[修改]-')
        newName = name[num:]
    print newName

    os.rename(folderName+name, folderName+newName)

 

转载于:https://www.cnblogs.com/DarrenChan/p/6785247.html

相关文章:

  • Android攻城狮Notification实现状态通知栏
  • Atitit 错误处理机制:(1)静默模式(2)警告模式 (3)异常模式
  • 深刻认识shift_ram IP core——图像处理学习笔记
  • 实现简单的ORM
  • python基本运算
  • 备份一下我的.bash_aliases文件
  • vue.js 的起步
  • Bullet Physics OpenGL 刚体应用程序模板 Rigid Simulation in Bullet
  • Unity Shader-简单均值模糊
  • webpack-dev-server 设置反向代理解决跨域问题
  • CF364
  • jsp相关笔记(二)
  • CPU组成
  • 【Java并发编程】:加锁和volatile变量
  • expdp/impdp 参数说明,中英对照
  • php的引用
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Java Agent 学习笔记
  • MaxCompute访问TableStore(OTS) 数据
  • Mithril.js 入门介绍
  • Netty 4.1 源代码学习:线程模型
  • orm2 中文文档 3.1 模型属性
  • spring boot 整合mybatis 无法输出sql的问题
  • 从0实现一个tiny react(三)生命周期
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 蓝海存储开关机注意事项总结
  • 聊聊sentinel的DegradeSlot
  • 十年未变!安全,谁之责?(下)
  • 微服务核心架构梳理
  • 微信开源mars源码分析1—上层samples分析
  • 我有几个粽子,和一个故事
  • 想写好前端,先练好内功
  • 用 Swift 编写面向协议的视图
  • 正则表达式小结
  • 正则与JS中的正则
  • Nginx实现动静分离
  • #Ubuntu(修改root信息)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)鸿鹄云架构一服务注册中心
  • (转)可以带来幸福的一本书
  • (转载)从 Java 代码到 Java 堆
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 药厂业务系统 CPU爆高分析
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET的微型Web框架 Nancy