Python-文件操作

目录:
1:文件操作的介绍
2:文件的开关及读写
3:使用os模块对文件操作
4:批量处理文件
5:Python换行符

文件操作的介绍

文件作用

就是把一些数据存放起来,可以让程序下一次执行的时候直接使用,加载到内存中,而不必重新制作一份,省时省力。

在Python操作文件的整体过程与使用word编写一份简历的过程是很相似的,都需要先打开文件,编写内容,保存内容然后退出。

文件的开关及读写

打开文件open

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

新文件open(文件名,访问模式)

示例如下:

f = open(‘test.txt’, ‘w’)

w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件

不存在,创建新文件。write

# 关闭这个文件

f.close()

r :以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。如果文件不存在会崩溃。Read

w :打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。write

a :打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入

写数据(write):

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

读数据(read):

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

读数据(readlines):

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

读数据(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()

练习:将test.txt文件,复制一份,文件名叫test[复制].txt,内容自定义

#!/usr/local/bin/python3
copy_name = input("请输入你要复制的文件名:")
old_file = open(copy_name,"r")
file_read = old_file.read()
#开始切片,需要把.以前的内容和.以后的内容拿出来
find_num = copy_name.rfind(".")
begin = copy_name[:find_num]
end = copy_name[find_num:]
new_filename = begin+"[复制]"+end
new_file = open(new_filename,"w")
new_file.write(file_read)
new_file.close()
old_file.close() 

文件读写定位

获取当前读写的位置tell

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

​ 定位到某个位置seek

使用seek()

seek(offset, from)有2个参数

offset:偏移量

from:方向

0:表示文件开头

1:表示当前位置

2:表示文件末尾

Python3中的seek定位:
定位到文件开头:seek(0或正数,0) ; 不支持 seek(负数,0)
定位到当前位置:支持 seek(0,1) ; 不支持 seek(正,1) seek(负数,1)
定位到末尾:支持 seek(0,2) ; 不支持 seek(正,2) seek(负数,2)

Python2中的seek定位:
定位到文件开头:seek(0或正数,0) ; 不支持 seek(负数,0)
定位到当前位置:支持 seek(正,1) ; 不支持seek(负数,1)
定位到末尾:支持 seek(正,2) ; 不支持 seek(负数,2)

使用os模块对文件操作

使用os模块对文件的重命名、删除

有些时候,需要对文件进行重命名、删除等一些操作,Python的os模块中

都有这么功能

1. 文件重命名rename

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

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

import os

os.rename(“程序猿自身修养.txt”, “程序员自身修养.txt”)

2. 删除文件remove

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

remove(待删除的文件名)

import os

os.remove(“程序员自身修养.txt”)

使用OS对文件夹的相关操作:

3.创建文件夹

import os

os.mkdir(“张三”)

4.创建多层目录

import os

os.makedirs(“张三/李四/王二”)

5.获取当前目录

import os

os.getcwd()

6.改变默认目录

进入到某个目录,或者是切换目录

import os

os.chdir("./…/")

7.获取目录列表,包含文件和目录

import os

print(os.listdir("./"))

8.删除文件夹

删除目录 path,要求path必须是个空目录,否则抛出OSError错误

import os

os.rmdir(“张三”)

练习:提示用户创建一个目录,进入目录后在创建一个目录,然后在此目录下新建一个文本,文本内容自定义,需要把文本内容打印到终端上。

#!/usr/local/bin/python3
import os
dir1 = input("请输入你要创建目录的名称:")
os.mkdir(dir1)
os.chdir(dir1)
dir2 = input("请输入你要创建目录的名称:")
os.mkdir(dir2)
os.chdir(dir2)
#创建两个目录并且进入
f = open("flyflywin.txt","w")
f.write("今天还是要继续学习")
f.close()
#创建文件,编写内容后,关闭
j = open("flyflywin.txt","r")
a = j.read()
print(a)
#打印到终端
j.close()

批量修改文件名

练习:首先需要批量创建文件

#!/usr/local/bin/python3
i=1
while i<=18:
        filename = open("仙剑奇侠传-%d.avi"%i,"w")
        filename.close()
        i+=1

在将这些文件批量改名

#!/usr/local/bin/python3
import os
a = input("请输入你要批量修改文件的目录:")
print(os.listdir(a))
os.chdir(a)
for i in os.listdir():
        os.rename(i,"flyflywin-%s"%i)

python换行符问题

在linux和mac系统上我们读写文本文件使用二进制方式或者文本方式都可以,因为在处理\n都是一样的;那么读写文本文件和二进制文件的时候,可以使用r和w模式或者rb和wb模式。

在window中的换行是\r\n,当我们使用程序以文本方式写入一个\n的时候,默认会帮我们加上\r,这样打开文件的时候才能得到换行的效果;所有在window上读写文本文件的时候,建议使用r或者w模式。在读写二进制文件的时候,建议用rb和wb模式。

不同操作系统换行符是不一样的

在处理文本数据的时候体现在不同操作系统处理\r\n是不一样的

不同操作系统换行符是不一样的

linux -->\n

unix–>\n

mac–>老版本(\r)–>\n

windows -->\r\n

对应换行符windows遇到\r\n才换行显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值