文件操作。
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-文件操作的更多相关文章

  1. 【.NET深呼吸】Zip文件操作(1):创建和读取zip文档

    .net的IO操作支持对zip文件的创建.读写和更新.使用起来也比较简单,.net的一向作风,东西都准备好了,至于如何使用,请看着办. 要对zip文件进行操作,主要用到以下三个类: 1.ZipFile ...

  2. 野路子出身PowerShell 文件操作实用功能

    本文出处:http://www.cnblogs.com/wy123/p/6129498.html 因工作需要,处理一批文件,本想写C#来处理的,后来想想这个是PowerShell的天职,索性就网上各种 ...

  3. Node基础篇(文件操作)

    文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ...

  4. 归档NSKeyedArchiver解归档NSKeyedUnarchiver与文件管理类NSFileManager (文件操作)

    ========================== 文件操作 ========================== 一.归档NSKeyedArchiver 1.第一种方式:存储一种数据. // 归档 ...

  5. SQL Server附加数据库报错:无法打开物理文件,操作系统错误5

    问题描述:      附加数据时,提示无法打开物理文件,操作系统错误5.如下图: 问题原因:可能是文件访问权限方面的问题. 解决方案:找到数据库的mdf和ldf文件,赋予权限即可.如下图: 找到mdf ...

  6. 通过cmd完成FTP上传文件操作

    一直使用 FileZilla 这个工具进行相关的 FTP 操作,而在某一次版本升级之后,发现不太好用了,连接老是掉,再后来完全连接不上去. 改用了一段时间的 Web 版的 FTP 工具,后来那个页面也 ...

  7. Linux文件操作的主要接口API及相关细节

    操作系统API: 1.API是一些函数,这些函数是由linux系统提供支持的,由应用层程序来使用,应用层程序通过调用API来调用操作系统中的各种功能,来干活 文件操作的一般步骤: 1.在linux系统 ...

  8. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  9. Python的文件操作

    文件操作,顾名思义,就是对磁盘上已经存在的文件进行各种操作,文本文件就是读和写. 1. 文件的操作流程 (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 现有 ...

  10. python 文件操作(转)

    python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目 ...

随机推荐

  1. [SDOI2016]游戏(树剖+李超树)

    趁着我把李超树忘个一干二净的时候来复习一下吧,毕竟马上NOI了. 题解:看着那个dis就很不爽,直接把它转换成深度问题,然后一条直线x->y,假设其lca为z,可以拆分成x->z和z-&g ...

  2. 用python3读csv文件出现UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte

    1.python3读取csv文件时报如下图所示的错误 2.分析原因:读取的csv文件不是 UTF8 编码的,而IDE工具默认采用 UTF8 解码.解决方法是修改源文件的解码方式. 3.使用nodepa ...

  3. JS-语句四

    For 循环: for 循环是创建循环时常会用到的工具. 下面是 for 循环的语法: ; 语句 ; 语句 ) { 被执行的代码 } 其中语句1是初始值:语句2是.条件判断:语句3是状态改变:被执行的 ...

  4. List、Set和Map详解及其区别和他们分别适用的场景

    Java中的集合包括三大类 它们是Set(集).List(列表)和Map(映射),它们都处于java.util包中,Set.List和Map都是接口,它们有各自的实现类.Set的实现类主要有HashS ...

  5. apache安装和mysql php配置问题

    apache下载和安装: 下载网址:http://httpd.apache.org/ 然后 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ ...

  6. eclipse启动tomcat出现8080,8009,8005端口被占用的问题

    有时候我们在eclipse中启动项目时,Tomcat服务器会报错,显示8080.8009.8005这几个端口被占用,此时你用debug启动项目时会发现不管用,console控制台什么信息也没有,此时产 ...

  7. Morse code(多模式串匹配)

    链接:https://ac.nowcoder.com/acm/contest/3665/E来源:牛客网 题目描述 Morse code is a character encoding scheme u ...

  8. 吴裕雄--天生自然GPU配置:查看本机显卡是否支持GPU

    NVIDIA的GF8级别以上的显卡才能支持physx物理加速(即GPU加速),ATI的显卡不支持. 打开:设备管理器,点击:显示适配器

  9. Activiti工作流的入门介绍

    一.activiti介绍 Activiti5是一个 业务流程管理(BPM)框架,它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执行流程语言框架.Activiti基于Ap ...

  10. Java基础二(2020.1.14)

    学习内容: 1.Java运算符:赋值运算符,算术运算符,关系运算符,逻辑运算符,条件运算符 2.java流程控制:顺序,选择 1.java输入 Scanner s = new Scanner(Syst ...