day02-文件操作
- 文件操作。
- 1,文件路径:d:\python一定要学好.txt
- 2,编码方式:utf-8 gbk 。。。。
- 3,操作模式:只读,只写,追加,读写,写读..... 不论哪种方式都只能执行一次。例如r模式,只能读取一次。
- 以什么编码方式储存的文件,就以什么编码打开进行操作。
- 只读: r rb (b表示byte 以二进制格式打开一个文件用于只读),视频和图片rb按照字节读。
- f = open('d:\python一定要学好.txt',mode='r',encoding='utf-8') #open(路径,操作模式,编码方式),windows的编码方式是gbk,而python是utf-8,没指定编码方式就会出现乱码。
- print(f.read()) #'d:\python一定要学好.txt'是绝对路径。这个文件存放在d盘。
- f.close()
- f = open('test',mode='rb') #'test'是相对路径(当前路径),跟正在操作的python file 是同一个目录directory。
- print(f.read())
- f.close()
- 只写: w wb 删除所有字符,接着写入新的字符。b模式很少使用,操作图片的时候可以用到。
- f = open('d:\python一定要学好.txt',mode='w',encoding='utf-8')
- f.write('专心')
- f.close()
- f = open('test',mode='wb')
- f.write('加油加油'.encode('utf-8'))
- f.close()
- 追加 a ,ab ,a+(追加,还可以读取)
- f = open('d:\python一定要学好.txt',mode='a',encoding='utf-8')
- f.write('年少不努力,老大徒伤悲')
- f.close()
- f = open('d:\python一定要学好.txt',mode='ab')
- f.write('今天很重要'.encode('utf-8'))
- f.close()
- 读写:r+ r+b 读取内容,接着写入内容,不删除原来的内容。r+使用最多。
- f = open('test',mode='r+',encoding='utf-8')
- print(f.read())
- f.write('年少不努力,老大徒伤悲')
- f.close()
- f = open('test',mode='r+b')
- print(f.read())
- f.write('坚持努力'.encode('utf-8'))
- f.close()
- 写读:w+ w+b 删除内容,写入新的内容,接着读取新的内容
- f = open('test',mode='w+',encoding='utf-8')
- f.write('今天坚持跑步和学习')
- f.seek(0) #将光标(文件指针)移动到0的位置(最左边)
- print(f.read())
- f.close()
- f = open('test',mode='w+',encoding='utf-8')
- f.write('今天坚持跑步和学习')
- f.seek(0) #将光标(文件指针)移动到0的位置(最左边)
- f.truncate(12) #截取12个字节,也就是截取了 今天坚持
- print(f.read())
- f.close()
- f = open('test',mode='w+b')
- f.write('今天很重要'.encode('utf-8')) #写入的内容是str,但是读取的内容是bytes,为什么?因为open()函数把写入的内容当作str处理了
- f.seek(0)
- print(f.read())
- f.close()
- 1byte = 8bits, 1byte就是一个字节,1bit是最小存储单位(存储一个0或一个1)
- f = open('log',mode='r+',encoding='utf-8')
- print(f.read(3)) #读取三个字符。一个英文字母是一个字符,一个汉字也是一个字符.
- # 在utf-8中,一个英文字母使用一个字节保存,一个汉字使用三个字节保存。
- 另外,一个数字也是一个字节保存。一个汉字标点符号是三个字节保存。
- f.seek(3) #seek(3)表示把光标移动到第三个字节后面。
- #那么seek(2)就会报错,因为log的内容都是汉字,如果都是英文字母就不会报错。
- print(f.read(3)) #read()只能读取光标后面的内容。
- f.close()
- f = open('D:\Python\\test\python一定要学好.txt',mode='w+',encoding='utf-8') #\t是横向制表符,所以\\t或\T才能表示路径。
- #D:\Python\\test,当python和test两个目录没创建的情况下,创建python代码练习.txt文件,就会报错。
- f.write('') #r+ 读写模式,如果先写的话,光标是从最左边开始往右边走,写入的123456(6个字节)覆盖原来的两个汉字(6个字节),后面的字符保持不变。
- f.seek(0)
- print(f.read())
- print(f.tell()) #tell()告诉我们光标所在位置。
- f.close()
- f = open('test01','w+',encoding='utf-8')
- f.write('今天很重要') #写入字符之后,光标在最右边。
- print(f.tell())
- f.seek(f.tell()-6) #光标从最后面向前移动了6个字节。
- print(f.read())
- f.close()
- f = open('log',mode='r+',encoding='utf-8')
- # print(f.readline()) #一行读取
- # print(f.readlines()) #多行读取,并且放在列表里面
- for i in f.readlines():
- print(i)
- f.close()
- #注册,三次登陆:
- username = input('注册名字:')
- password = input('注册密码:')
- print('恭喜你注册成功!')
- with open('注册,三次登陆','w',encoding='utf-8') as f: #with open() as f相当于f=open(),这语句可以同时打开两个文件:with open() as f,open() as f1:,并且能自动关闭文件不需要close().
- f.write('{}\n{}'.format(username,password)) #\n把账号和密码换行.write()的()里面只能传入一个参数,所以write(username,password)就报错。
- list=[]
- n = 0 #循环三次的框架:n=0,while n<3,n+=1.
- while n < 3:
- username2 = input('登陆名:')
- password2 = input('密码:')
- f1 = open('注册,三次登陆','r',encoding='utf-8')
- for line in f1:
- list.append(line)
- if username2 == list[0].strip() and password2 == list[1].strip(): #''.strip()删除字符串首尾空白符或\n。
- print('登陆成功')
- break
- else:
- print('账号或密码错误')
- n += 1
- #注册,三次登陆方法二 :
- username = input('注册名字:')
- password = input('注册密码:')
- print('恭喜你注册成功!')
- with open('注册,三次登陆','w',encoding='utf-8') as f:
- f.write('{}\n{}'.format(username,password))
- n = 0
- while n < 3:
- username2 = input('登陆名:')
- password2 = input('密码:')
- f1 = open('注册,三次登陆','r',encoding='utf-8')
- i = f1.readlines()
- if username2 == i[0].strip() and password2 == i[1].strip():
- print('登陆成功')
- break
- else:
- print('账号或密码错误')
- n += 1
- #文件修改的详细步骤:
- #原文件替换内容,然后把原文件所有内容写入到新文件里面。
- with open('班长,班主任',mode='w+',encoding='utf-8') as f,open('班长,班主任.bak',mode='w+',encoding='utf-8') as f2: #打开原文件,创建新文件(原文件的备份)
- f.write('班长:小明\n班主任:杨老师') #w+模式,记得seek(0)
- f.seek(0) #光标移动到0的位置,不然光标在杨老师后面,后面的内容为空,导致读取空内容。
- for line in f: #读取f的元素,所以使用W+模式。line遍历了f,line是f的任意元素。
- if '杨老师' in line:
- line = line.replace('杨老师','金老师') #元素line替换内容
- print(line)
- f2.write(line) #文件f2写入元素line的内容
- import os
- os.remove('班长,班主任') #删除原文件
- os.rename('班长,班主任.bak','班长,班主任') #删除原文件之后,把新文件的名称修改为原文件的名称。这种操作相当于修改了原文件。
- 文件里面把多行打印出来的两种方法:
- 方法1:
- with open('test01',encoding='utf-8') as f:
- count = 0
- while count<5: #打印5行
- line = f.readline() #读取一行
- print(line.strip()) #每打印完一行,光标移动到该行最后的位置。下次循环,就可以打印下一行信息。
- count += 1
- 方法2:
- def f(a):
- with open(a,encoding='utf-8') as f: #f是句柄,因为f放在首位。
- line = f.readlines() #line是列表,可以使用for循环来取值
- for i in f:
- print(i.strip())
- f('day06-迭代器.py')
- 处理文件,用户输入文件名和查找的内容,将内容的每一行都输出到屏幕。(生成器跟文件操作相结合)
- def generator(filename,aim):
- with open(filename,encoding='utf-8') as f:
- for i in f: # i 是 f 每一行内容。
- if aim in i:
- yield i.strip()
- g = generator('day07-生成器.py','生成器') #用户输入文件名和查找的内容。
- for i in g:
- print(i)
- 文件操作遇到的问题:1.无法操作word。
day02-文件操作的更多相关文章
- 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档
.net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...
- 野路子出身PowerShell 文件操作实用功能
本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...
- Node基础篇(文件操作)
文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...
- 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)
========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...
- SQL Server附加数据库报错:无法打开物理文件,操作系统错误5
问题描述: 附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...
- 通过cmd完成FTP上传文件操作
一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...
- Linux文件操作的主要接口API及相关细节
操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...
- C语言的fopen函数(文件操作/读写)
头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为: FILE * fopen(const char * path, c ...
- Python的文件操作
文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...
- python 文件操作(转)
python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...
随机推荐
- float 格式化到TCHAR 数组
<span style="white-space:pre"> </span>float lCount = 123.3; TCHAR tcBalance[MA ...
- VBE2019的下载、安装和使用(最新版2020.2.22)
VBE2019可用于XP系统.Windows 7和Windows 10的32位.64位Office对应的VBA环境 安装包下载地址:VBE2019-Setup.zip 下载后解压缩,直接双击安装(请勿 ...
- java课程之团队开发冲刺阶段1.8
一.总结昨天进度 1.实现预装sqlite数据库,将数据库放在app的assets目录下,该目录在打包的时候不会压缩,所以数据库文件可以在安装之后继续使用,然后APP安装之后检测外部存储空间是否有这个 ...
- Windbg 大改版,值得期待
早上从twitter上面看到一篇文章,看到windbg会提供一个Time Travel Debugging(TTD) 功能,该功能会在未来的版本引入. Time travel debugging: I ...
- Exchange 2016 OWA更改css样式
css文件目录:E:\Exchange 2016\FrontEnd\HttpProxy\owa\auth\15.1.1713\themes\resources\logon.css ##更改左侧页面颜色 ...
- 跟踪LinkedList源码,通过分析双向链表实现原理,自定义一个双向链表
1.LinkedList实现的基本原理 LinkedList是一个双向链表,它主要有两个表示头尾节点的成员变量first .last,因其有头尾两个节点,所以从头或从尾操作数据都非常容易快捷.Lin ...
- split和join合写
小骆驼 第一章 简介 1. // input 和截取字符 #!usr/bin/perl use strict; use warnings; while ( <> ) { chomp; pr ...
- ZJNU 2342 - 夏华献要回家
(夏华献在学校也要做一次梦!) 把5的答案手动算出 会发现从学校开始,兔子的数量呈斐波那契数列(第2项开始)增长 假如现在有n盏路灯 那么睡觉的时间可以得到为 但是n有1e18大,明显使用标准数学公式 ...
- UITableViewCell 的selectedBackgroundView
UITableViewCell中的selectedBackgroundView就是用于当用户点击cell的时候,选择状态的view,你可以对这个view进行颜色或者其他样式等做一些定制,可以达到点击之 ...
- Vue2.0权限树组件
项目使用的饿了么的Element-Ui,权限树使用其树形控件: <el-tree :data="data" ></el-tree> 刚开始没有特殊需求,三级 ...