文件操作。
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. js事件函数中function(e){}

    简单来说就是指向了当前发生的事件(click.mouseover等等),保存了当前事件的信息.如鼠标点击事件,有鼠标的坐标信息.其中,e是标准浏览器传递进去的事件参数,低版本IE不会传递,事件参数放置 ...

  2. spring_mybatis :整合

    第一步:导入相关架包(使用maven构建项目) 在pom.xml文件中导入相关依赖 1.Junit测试架包 <dependency> <groupId>junit</gr ...

  3. [BJDCTF2020]Mark loves cat

    0x00 知识点 GitHack读取源码 $$会导致变量覆盖漏洞 0x01解题 dirsearch扫描一下,发现/.git目录,用githack获取一下源码. <?php include 'fl ...

  4. JKS not Found

    近期使用Spring Boot开发微信验证的时候, 在获取token时,Idea老是提示Jks not found,网上找资料,都说是SSL的问题 实际解决方法: 重装JDK,将JDK重装之后,运行正 ...

  5. Go语言-并发模式-资源池实例(pool)

    Go语言并发模式 利用goroutine和channel进行go的并发模式,实现一个资源池实例(<Go语言实战>书中实例稍作修改) 资源池可以存储一定数量的资源,用户程序从资源池获取资源进 ...

  6. ModernCNN

    # 深度卷积神经网络(AlexNet) LeNet: 在大的真实数据集上的表现并不尽如⼈意. 1.神经网络计算复杂. 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域. 机器学习的特征提取:手 ...

  7. javascript编程中极易出现的错误(个人)

    2018-08-10 1,setInterval打错字写成ser 2,document.getElementById().innerHTML;HTML需要全部大写 3,在for循环中定义一个i时要记住 ...

  8. 吴裕雄--天生自然 PHP开发学习:数据库 ODBC

    <html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) { exit("连 ...

  9. 12 Spring Data JPA:springDataJpa的运行原理以及基本操作(下)

    spring data jpaday1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理 day2:springdatajpa的基本操作 ...

  10. flask web实战1.27

    1.在pycharm的terminal中输入 生成requirements.txt文件 pip freeze > requirements.txt 安装requirements.txt依赖 pi ...