学习Python的日子 Python(7)

Python
文件读写
stream完成读写:  I input /O output
1.写  write  output
stream.write("哈哈马上放假!啦啦啦啦啦....\n")
2.读  read   input
# 如果test.txt 不存在则报错
stream=open("files/test.txt","r")
content=stream.read()
read(): 读取所有内容
read(length): 指定长度读取   单位为字节
readlines():按行读取数据
list列表方式
readline()
读取文件
read()
一点一点的读
read(length)
第一种方式:
# content= stream.read(512)
# while True:
# if not content:  # 文件到了末尾了,是否是一个""
# break


# print(content)
# # 继续读取
# content=stream.read(512)


# stream.close()
readline()
第二种方式:
# content = stream.readline()
# while True:
# if not content:
# break


# print(content,end="")


# # 继续读取
# content = stream.readline()


# stream.close()
readlines()
第三种方式
content=stream.readlines()


print(type(content))  # list


print(content)  #


for i in content:
print(i,end="")


stream.close()
复制文件
思路:
源头: test.txt   ---->read   ---> inputstream
目标: test[副本].txt  ----> write  ---> outputstream
# 1. 准备文件和对应的流
old_file_name=input("请输入要复制的文件的名称:")  # mm.jpg




f_stream= open("files/"+old_file_name,"rb")  # inputstream


# 构建新文件名字
position=old_file_name.rfind(".")


suffix=old_file_name[position:]


prefix=old_file_name[:position]+"[副本]"


new_file_name=prefix+suffix


w_stream = open("files/"+new_file_name,"wb")  # outputstream


# 2. 进行读写操作


# content = f_stream.read()


# w_stream.write(content)


content = f_stream.read(512)


while True:
if not content:
break
# 写入内容
w_stream.write(content)


# 继续读取
content=f_stream.read(512)


# 3. 关闭流


f_stream.close()
w_stream.close()


print("复制完成!")
文件定位
read()  ----> 从开头开始读取
write() ---> w  从开头   a 从结尾
指定位置读写操作:
tell() : 获取当前的位置
seek(): 
seek(offset, from)有2个参数
offset:偏移量
from:方向
0:表示文件开头
1:表示当前位置
2:表示文件末尾
Python2 中seek的使用
定位到文件开头:支持seek(正数,0);不支持seek(负数,0)
定位到当前位置:支持seek(正数,1),seek(负数,1)
定位到文件末尾:支持seek(正数,2),seek(负数,2)
Python3中的seek
定位到文件开头:seek(0,0),seek(3,0);不支持seek(负数,0);
定义文件当前位置:支持seek(0,1);不支持seek(正,1)和seek(负数,1)
定位到文件末尾:支持seek(0,2);不支持seek(正,2)和seek(负数,2)
OS模块操作
os 模块中 提供了关于文件和文件夹操作
创建文件
4.创建文件
open("jay1.jpg","w")
1. 创建文件夹  mkdir
1.创建文件夹
result=os.mkdir("周杰伦")  # 此方法没有返回值  result=None  看有没有报错,报错file Exists  文件已经存在
print(result)
2. 创建多层文件夹  os.makedirs()
3. 删除文件夹  rmdir  ---> 空的
6. 删除文件夹
# result=os.rmdir("./周杰伦")  # Directory not empty: './周杰伦'   因为文件夹中有内容,rmdir()只能删除空文件夹
# print(result)
4. 删除多层的文件夹  import shutil shutil.rmtree("文件夹")
6.如果文件夹中有内容
import shutil
shutil.rmtree("./周杰伦")
5. 删除文件  os.remove("文件的名字")
6. 获取当前目录  os.getcwd()
2.获取当前目录
result=os.getcwd()
print(result)
7. 改变目录  os.chdir()
3.切换目录
result=os.chdir("./周杰伦")
print(result)makedirs
result=os.getcwd()
print(result)
5. 返回上级  change 
os.chdir("../")
result=os.getcwd()
print(result)
8. 重命名文件 rename(old,new)
9. 获取目录中的内容 os.listdir()
os.path.isfile("")
os.path.isdir("")   --->判断的  判断是文件还是文件夹
os.path.exists("") --->判断是否存在
批量修改文件名
思路:
第一部分:
创建文件 --->10文件 名侦探柯南


1. 动漫  --->创建文件夹
2. 切换文件路径
3. 循环创建文件


第二部分:
1. 获取所有该目录名字  --->list
2. 遍历列表
定义新的名字  --->old文件切割出来的
3. os.rename(old,new)


'''
import os


# 第一部分


os.mkdir("动漫")


# 改变目录
os.chdir("./动漫")


print("测试当前路径:",os.getcwd())


# 创建文件


for i in range(1,11):
file_name="名侦探柯南-"+str(i)+".avi"
# open()
f = open(file_name,"w")
f.close()






# 第二部分:
file_names=os.listdir()


for name in file_names:
old_file_name=name


# 名侦探柯南[西雅出品]-1.avi
position=old_file_name.find("-")


prefix=old_file_name[:position]
# 前缀


prefix=prefix+"[西雅出品]"


# 后缀


suffix=old_file_name[position:]


new_file_name=prefix+suffix


os.rename(old_file_name,new_file_name)


print(name+"改名成功!")
Python换行符问题
在window中的换行是\r\n,当我们使用程序以文本方式写入一个\n的时候,默认会帮我们加上\r,这样打开文件的时候才能得到换行的效果;
linux -->\n
unix-->\n
mac-->老版本(\r)-->\n 
windows -->\r\n
如果是文本文件而不是二进制文件,会自动在\n的前面添加\r,windows认为换行
Linux:因为在wb源文件中确实存在\n,linux中认为\n就是换行
只要是在linux系统下,只要你的源文件中存在\n,就可以实现换行效果
文件是二进制或者普通文本文件,linux都可以识别\n
总结
文件操作:


 1.能够读写文件
  open  ----> 模式: r w a  rb wb ab  ...
 2.读写的方法:
     读: read()  read(length)  readline()  readlines()
     写: write()  writeline()
 3.os模块:
  文件: os.remove()  os.rename()  open("","w")
  文件夹: os.mkdir() os.makedirs() os.rmdir()  import shutil shutil.rmtree
         os.chdir()  os.getcwd()  os.listdir()
批量复制(剪切) py文件到  "python文件"  文件夹中  作业


 4. 文件定位: tell()    seek()
    abcAAAAdef ???  作业  


 5. python换行符问题:
  linux \n   


  windows \r\n


 作业: 文件版的学生管理系统


 添加学生  ----> 姓名  18  男  ---->文件
 删除学生  ----> 删除 文件中此行就没有了
          张三 18 男
          李四 19 男
          王五 20 女
list ---> 中删除
          ----> 写 w
           张三 18 男
           王五 20 女
 修改学生  ----> 有没有这个学生 ---->修改 
 查询学生
 退出
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值