Python--11、文件

Python–11、文件

文件的基本操作

使用linux环境文件的更新需要手动下载代码。

1、打开/关闭文件

打开文件:open(文件路径,读取的形式,编码格式)

​ 例:f = open(“a.txt”,‘w’,encoding = ‘utf-8’)

​ 文件路径:字符串的形式

​ 文件处理格式(encoding): utf -8 , gbk

关闭文件: f.close()

​ 不关闭会占用内存,资源浪费

2、读取/写入文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tLnRTr70-1580116182010)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200106133433038.png)]

f =open('b','r+',encoding='utf-8')

#读
print(f.read(5))   #读取全部;读指定长度
print(f.readline())   #读取单行
print(f.readlines())        #读取多行内容,以列表的形式返回

#写
f.write("晚上好\n")    #写入的只能是字符串,\n换行符也可以进行写入
f.writelines(['列表里面','只能是','字符串序列'])    #列表里面只能是字符串序列
f.writelines('写入正常字符串')



f.close()

f1 =open('b','w',encoding='utf-8')
f2 =open('b','r',encoding='utf-8')
f1.write(' i love you ')
f1.flush()   #强行把缓存区的数据写入磁盘
#立即刷新缓存
f2.seek(0)      #文件指针放在开头位置,从0开始索引
print(f2.read())
print(f2.tell())   #获取当前文件指针的位置

读取:f.read()

写入:f.write("…")

3、二进制处理文件

文件打开模式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TLbM4MpC-1580116182011)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200106131927126.png)]

# r 文件指针放在开头,只读   read
# r+   文件指针放在开头,读写
# w   覆盖文件内容,只写     write
# w+  覆盖读写内容,读写
# a   追加写入,只写       append
# a+   追加写入,读写
# rb   二进制读,在其他方式后加b 都是二进制的

相对路径

相对路径:当前文件位置进行索引路径

​ 同级目录下:f=oprn('文件名/文件 ')

​ 上级目录:f=oprn(’…/文件名/文件 ')

​ …是返回上级目录的意思

如果文件路径中有中文,可以在路径前面加个r

例:f = open(r’…/…/play/demo1.py’)

绝对路径

绝对路径:根目录进行文件索引路径

win:C/D/E 等开头的都是绝对路径

​ 例:D:\360下载\下载的各种文件

linux:没有盘符/home/ 开头的路径都是绝对路径

​ pwd 查看当前所在目录

​ ls 查看当前所在目录下的所有文件

​ cd 进入某个文件夹

​ cd… 返回上级目录

4、 io 流

stringio

(1)、创建io操作:

​ import io

​ sio = io.stringIO() 或者 sio = io.BytesIO()

(2)、读取:

​ sio.getvalue() 或者 sio = getvalue()

(3)、写入:

​ sio.write(str(i)) 或者 sio.write(b’abc’)

import io    #导入模块
#做临时的存储
myio = io.StringIO()   #创建对象(open) string 字符串
myio.write('hello,world')   #写入数据
print(myio.getvalue())      #读取数据
myio.close()            #相当于文件的关闭
# print(myio.getvalue())    #当关闭之后就不能读取到数据了

myioB = io.BytesIO()   #创建对象(open) byte 字节
myioB.write(b'\xe4')   #字节
print(myioB.getvalue().decode())   #读取数据
myioB.close()
#
# f = open('c.txt','w+',encoding='utf-8')    #文件也是一种io流
# print(f)

strinigIO在内存中如同打开文件一样操作字符串,因此也有很多方法,当创建的StringIO调用close()方法时,在内存中的数据会丢失。

b、ytesio

5、上下文管理

(1)、 with … as … 取别名,自动调用close,对于打开的文件会自动保存关闭。

​ 例: with open (file,path,mode =‘r’) as f:

​ #对f进行一系列操作,也可执行其他操作

(2)、打开多个文件:

​ with open(file_path, mode = ‘r’) as f1,\

​ open(file_path, mode = ‘r’) as f2,\

​ …:

​ #对f进行一系列操作,也可执行其他操作

跳出with语句块的时候会自动执行f.close().

’ \ ’ 是换行,代码不断,可用于将长语句拆分为多行。

class Test:     #  模拟文件的操作,为什么会自动关闭
    def __enter__(self):
        print('正在调用with')    #开头就会运行的部分
        return '正在用'
    def __exit__(self, exc_type, exc_val, exc_tb):
        print("我要退出了")      #结尾时候运行的部分

with Test() as test:    #进入作用域,这里会使用__enter__方法
    print('准备运行')
    print(test)
    print('运行完毕')
    #这里退出作用域,于是执行__exit__方法
print('退出完毕')

运行结果:
正在调用with
准备运行
正在用
运行完毕
我要退出了
退出完毕

6、常见问题处理

7、os 模块

(1)、虚拟机中一些代码的作用:

ls–显示文件的目录 ; cd–进入某个文件 ; pwd–查看上级目录;cat 文件名–查看文件里面的内容;vim 文件名–对文件进行写入 ;写入数据可以使用小写i 或者insert键,退出的时候打个冒号:,再写wq就行; Linux系统运行Python文件–Python 文件名;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLCjeWul-1580116182012)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200107110637692.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DUgmJNsO-1580116182012)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200107110653741.png)]

import os
print(os.getcwd())    #od.getcwd()获取当前路径

a = os.system('dir')   #os.system()执行linux命令
print(a)

print(os.listdir('./'))   #一个点是当前目录,两个点是上级目录。os.listdir()为查看目录内容
print(os.listdir('../'))   #查看上级目录

os.chdir('../')   #更改当前目录,这里返回了上级目录
print(os.getcwd())  #显示当前目录
os.chdir('../../')      #这里返回了上两级目录

print(os.getcwd())
print(os.listdir('./'))

b = os.path.join('E','Python练习','座位表')

print(b)

os.remove('c.txt')

a = os.path.basename(r'D:\123')
# os.path.basename   可以拿到路径的最后一个文件名
 #os.path.dirname()  可以拿到除了最后一个文件外的其他全部文件
print(a)


file = r'D:\123'
a = os.path.getatime(file)   #访问时间
print(os.path.getmtime(file))  #修改时间
print(os.path.getctime(file))  #创建时间
print(os.path.exists(r'D:\123'))   #判断文件是否存在
print(os.path.isdir(r'D:\123'))   #判断是否为目录
print(os.path.isfile(r'D:\123'))   #判断是否为文件

print(os.path.isabs(r'D:\123'))   #判断是否为绝对路径

tmtime(file)) #修改时间
print(os.path.getctime(file)) #创建时间
print(os.path.exists(r’D:\123’)) #判断文件是否存在
print(os.path.isdir(r’D:\123’)) #判断是否为目录
print(os.path.isfile(r’D:\123’)) #判断是否为文件

print(os.path.isabs(r’D:\123’)) #判断是否为绝对路径


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值