博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之文件操作
阅读量:6998 次
发布时间:2019-06-27

本文共 3580 字,大约阅读时间需要 11 分钟。

文件操作

首先新建一个文件  比如      模特主妇护士班主任.txt 

计算机想要访问这个文件需要经历的步骤是:

1、文件路径:d:\模特主妇护士班主任.txt

2、编码方式:utf-8 gbk ....

3、操作方法:只读、只写、追加、读写、if 写读....:

4、以什么编码方式储存的文件,就以什么编码方式打开进行操作。

什么是绝对路径和相对路径?

绝对路径是文件直接存储在计算机的硬盘里,比如直接存储在C盘里、D盘里或是E盘里;

相对路径是文件没有直接存储在计算机的硬盘里,比如存储在C盘里的一个文件夹中等。

文件编码

 f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,

在windows下是gbk,在linux下是utf-8。

f = open('模特主妇护士班主任',mode='r',encoding='utf-8')

只读文件:'r'代表只读方式 'rb'直接编码成bytes类型(非文字文件,还有就是上传和下载)     

 

1.读文件的第一种方式:read方法,用read方法会一次性的读出文件中的所有内容

f = open('模特主妇护士班主任',mode='r',encoding='utf-8')   content = f.read()print(content)f.close()

2.读一部分内容:read(n),指定读n个单位

print(f.read(5))

3.读文件的第三种方式:按照行读,每次执行readline就会往下读一行

print('readline : ',content.strip())    #strip去掉空格、制表符、换行符content2 = f.readline()print(content2.strip())print(1)  #--> 1\nprint('1\n')  #--> 1\n\n

4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表

content = f.readlines()print('readlines : ',content)

5.读:最常用    for循环

f = open('模特主妇护士班主任,encoding='utf-8')for l in f:    print(l.strip())

关闭文件             f.close()      必须在程序最后加上这个,可以清理内存。

f = open('模特主妇护士班主任',mode='rb',)content = f.read()print(content)f.close()

 只写文件:只写:w          没有此文件,就会创建文件

#对于w:没有此文件就会创建文件f = open('log',mode='w',encoding='utf-8')f.write('骑兵步兵')f.close()先将源文件的内容全部清除,在写。f = open('log',mode='w',encoding='utf-8')f.write('附近看到类似纠纷')f.close()f = open('log',mode='w+',encoding='utf-8')f.write('aaa')f.seek(0)print(f.read())f.close()f = open('log',mode='wb')f.write('附近看到类似纠纷'.encode('utf-8'))f.close()

 追加

f = open('log',mode='a',encoding='utf-8')f.write('佳琪')f.close()f = open('log',mode='a',encoding='utf-8')f.write('佳琪')f.close()

# 带+号的增加有附带功能,比如r+代表在只读的情况下增加了写的功能,代表先读后写,其余的情况类似。

其他功能详解

obj = open('log',mode='r+',encoding='utf-8')content = f.read(3)  # 读出来的都是字符f.seek(3)  # 是按照字节定光标的位置f.tell() 告诉你光标的位置print(f.tell())content = f.read()print(content)f.tell()f.readable()  # 是否刻度line = f.readline()  # 一行一行的读line = f.readlines()  # 每一行当成列表中的一个元素,添加到list中f.truncate(4)for line in f:    print(line)f.close()

seek  是按照字节移动光标

tell   是告诉你目前光标的位置

例题:用户先注册账号和密码到一个文件里,然后等待用户登录,从文件里调出注册的账号和密码与之比较,正确登陆成功,允许有三次错误登陆机会

username = input('请输入你要注册的用户名:')password = input('请输入你要注册的密码:')with open('list_of_info',mode='w',encoding='utf-8') as f:    f.write('{}\n{}'.format(username,password))print('恭喜您,注册成功')lis = []i = 0while i < 3:    usn = input('请输入你的用户名:')    pwd = input('请输入你的密码:')    with open('list_of_info',mode='r+',encoding='utf-8') as f1:        for line in f1:            lis.append(line)    if usn == lis[0].strip() and pwd == lis[1].strip():        print('登录成功')        break    else:print('账号和密码错误')    i+=1

 总结:

# 文件处理    # 打开文件        #open('路径','打开方式','指定编码方式')        # 打开方式 r w a r+ w+ a+ b     用的最多就是r w a ,带+号的一般不用,不管是先读后写还是先写后读都会让光标发生变化,                                        # 所以最好读写不要在一起            #r+ 打开文件直接写 和读完再写        # 编码方式 —— utf-8    # 操作文件        # 读            # read 一次性读            # readlines 一次性读            # readline 一行一行读                #不知道在哪儿结束                #视频 图片 rb bytes 按照字节读            # for循环 —— 最好!!!        # 写            # write        # 光标 —— 文件指针            #seek _ 指定光标移动到某个位置            #tell _ 获取光标当前的位置            #truncate _ 截取文件    # 关闭文件        #close

 修改文件实例

修改文件

思路:把原有文件的内容先修改,然后把修改后的文件全部放在一个新的空文件里,把原文件删除

with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:    for line in f:        if '星儿' in line:  #班主任:星儿            line = line.replace('星儿','啊娇')        #写文件        f2.write(line) #小护士:金老板import osos.remove('小护士班主任') #删除文件os.rename('小护士班主任.bak','小护士班主任')  #重命名文件

 

转载于:https://www.cnblogs.com/DI-DIAO/p/8110909.html

你可能感兴趣的文章
Puppet常识梳理
查看>>
web.config配置文件中的configSource属性
查看>>
发现一个国内牛逼的maven仓库,速度真的太快了
查看>>
Snmp配置
查看>>
使用java实现CNN的实战
查看>>
大白话系列之C#委托与事件讲解(二)
查看>>
linux下使用 du查看某个文件或目录占用磁盘空间的大小
查看>>
iCheck表单美化插件使用方法详解(含参数、事件等)
查看>>
IOS UIAlertController 使用方法
查看>>
MySQL存储过程 事务transaction
查看>>
93. [NOIP2001] 数的划分
查看>>
c++友元实现操作符重载
查看>>
LeetCode_Maximum Depth of Binary Tree
查看>>
MongoDB入门学习(一):MongoDB的安装和管理
查看>>
beans.factory.BeanCreationException beans.factory.annotation.Autowired(required=true)
查看>>
grep常见使用方法总结
查看>>
视频云的选型调研
查看>>
MySQL 性能调优的10个方法
查看>>
http协议的再次理解
查看>>
Android 利用Gson生成或解析json
查看>>