Python--文件操作

目录

一、文件介绍

1.文件分类

2.使用文件的流程

二、读写文件的简单操作

1.读取文件   read()

2.写文件  write()

三、读操作

1.read()

2.readline()

3.readlines()

4.循环读取:文件句柄(文件对象)可以迭代

四、写操作

1.write()

2.writelines()

五、其他操作

1.tell()

2.seek()

3.查看文件的名字与模式

4.with方式

六、乱码问题

七、文件的其他操作

1.rename()

2.remove()

3.mkdir()    makedirs()

4.rmdir()     removedirs()

5.getcwd()

6.listdir()

7.chdir()

8.abspath()

9.exists()     isfile()    isdir()    isabs()

10.basename()

11.dirname()

12.join()

13.getatime()    getctime()    getmtime()   getsize()




一、文件介绍

1.文件分类

文件文件,二进制文件

2.使用文件的流程

(1)打开文件  open()

(2)读写文件  read()   write()

(3)关闭文件  close()


二、读写文件的简单操作

1.读取文件   read()

file = open('file/a.txt', mode='r')
ret = file.read()
print(ret)
file.close()

2.写文件  write()

如果文件不存在,会自动创建文件,不会自动创建目录

file = open('d.txt', mode='w')
file.write('aaaaa')
file.close()


三、读操作

read()

默认把内容全部读取出来

还可以将制定个数的内容读取出来

readline()

读一行\n

还可以将一行里面制定个数的内容读取出来

readlines()

读多行,

将内容全部读取出来,并保存在一个列表中

for line in file:循环读取,文件句柄(文件对象)可以迭代

1.read()

file = open('d.txt', mode='r')
ret = file.read()  # 将文件的全部内容读取出来
print(ret)  # aaaaa
file.close()

file = open('d.txt', mode='r')
ret = file.read(3)  # 读出文件的三个字符
print(ret)  # aaa
file.close()

2.readline()

file = open('d.txt', mode='r')
ret = file.readline()
print(ret)
file.close()
#aaaaa
#
file = open('d.txt', mode='r')
ret = file.readline(3)  # 将一行里面的指定个数的内容读取出来
print(ret)
file.close()
# aaa
#

3.readlines()

# readlines():读多行,把读出来的内容都保存在一个列表中
file = open('d.txt', mode='r')
ret = file.readlines()
print(ret)  # ['aaaaa\n', 'bgfgfgfbf']
file.close()

4.循环读取:文件句柄(文件对象)可以迭代

# 循环读取,文件句柄(文件对象)可以迭代
file = open('d.txt', mode='r')
for line in file:
    print(line)
file.close()
# aaaaa
# 
# bgfgfgfbf
#

四、写操作

如果文件不存在,会自动创建文件,不会创建目录

write() 
writelines()可以传递一个可迭代内容

1.write()

file = open('c.txt', mode='w')
file.write('wwwww')
file.close()

2.writelines()

# 可迭代内容选的是列表
file = open('f.txt', mode='w')
lst = ['aaa', 'bbb', 'ccc']
file.writelines(lst)
file.close()
# f.txt:aaabbbccc
# 要想让aaa bbb ccc换行的话,在列表里面加'\n'换行符即可
file = open('f.txt', mode='w')
lst = ['aaa\n', 'bbb\n', 'ccc']
file.writelines(lst)
file.close()
# aaa
# bbb
# ccc

五、其他操作

1.tell()

获取光标的位置

file = open('b.txt', mode='r')
ret = file.read(2)  # 读两个  aa
print(ret)
print(file.tell())  # 获取光标的位置  2
ret = file.read()  # 读出剩余的全部内容  
print(ret)
file.close()
# a
# bbbccc

2.seek()

移动光标的位置

第一个参数 

offset 

表示移几个位置

第二个参数  

whence

表示相对位置

0----->从开头

1------>从当前位置

2------>从末尾

#1.
file = open('b.txt', mode='r')
ret = file.read(3)  # 读三个 aaa
print(ret)
file.seek(0, 2)  # 把光标移动到末尾
ret = file.read()  # 把剩余部分全部读出来
print(ret)
file.close()
#aaa
#2.
file = open('b.txt', mode='rb')
ret = file.read(3)  # 读三个 aaa
print(ret)
file.seek(1, 1)  # 把光标移动到当前位置,跳一个,再开始读
ret = file.read()  # 把剩余部分全部读出来
print(ret)
file.close()
# b'aaa'
# b'\nbbbccc'
#3.
file = open('b.txt', mode='rb')
ret = file.read(3)  # 读三个 aaa
print(ret)
file.seek(-3, 2)  # 把光标移动到末尾,往回退三个,再开始读
ret = file.read()  # 把剩余部分全部读出来
print(ret)
file.close()
# b'aaa'
# b'ccc'

注意:当mode='r'时,seek()的第一个参数必须为0,非0会报错

3.查看文件的名字与模式

file = open('b.txt', mode='r')
print(file.name)  # b.txt
print(file.mode)  # rb
file.close()

4.with方式

这种方法会自动关闭文件,最后不用写file.close()

相当于:file=open('b.txt',mode='r)

with open('b.txt', mode='r') as f:
    ret = f.read()
    print(ret)
# aaa
# bbbccc

六、乱码问题

乱码问题是读写操作的编码不一致导致乱码

Python编码依赖于平台的编码     GBK

windows操作系统默认用GBK编码

with open('file/c.txt', mode='w',encoding='utf-8') as f:
    f.write('你好,世界')  # 指定用UTF-8编码
'''
乱码问题:
读写操作的编码不一致导致乱码
windows操作系统默认GBK
Python编码依赖于平台的编码   GBK
encoding=    可以指定编码方式  默认编码是GBK


'''

with open('file/c.txt', mode='r',encoding='utf-8') as f:
    ret = f.read()
    print(ret)

七、文件的其他操作

import os

重命名rename()

第一个参数是原文件名

第二个参数是新文件名

删除文件remove()只能删除文件,不能删除文件夹
创建目录mkdir()只能创建一层目录
makedirs()创建多层目录
删除目录rmdir()删除一层空目录
removedirs()删除多层目录
获取当前所在目录getcwd() 
获取目录列表listdir() 
切换所在目录chdir() 
判断exists()

判断文件或文件夹是否存在

如果是根目录下的文件,都是存在的,True

如果是其他目录下的,就是不存在的,False

isfile()

判断是否为文件

如果根目录下为文件,True

isdir()判断是否为目录
isabs()判断是否绝对路径
获取绝对路径abspath() 
获取路径中的最后一部分basename() 
获取上一层路径dirname() 
将多个目录组织成路径返回

join()

不会实际创建路径
获取文件信息getatime()返回path指向的文件或目录的最后访问时间
getctime()查看文件创建的时间
getmtime()返回path指向的文件或目录的最后修改时间
getsize()查看文件的大小

1.rename()

2.remove()

3.mkdir()    makedirs()

4.rmdir()     removedirs()

5.getcwd()

6.listdir()

7.chdir()

8.abspath()

9.exists()     isfile()    isdir()    isabs()

import os

print(os.path.isabs(os.path.abspath('file')))  # True
print(os.path.isabs('file'))  # False

10.basename()

11.dirname()

12.join()

import os

print(os.path.join('aaa', 'bbb', 'ccc'))  # aaa\bbb\ccc

13.getatime()    getctime()    getmtime()   getsize()

# 获取文件信息,gettime()  getctime()   getmtime()  :返回的是时间戳
#              getsize(): 返回的是int
import os

print(os.path.getatime('file'))  # 1547115818.0970514
print(os.path.getctime('file'))  # 1547083239.9470632
print(os.path.getmtime('file'))  # 1547115818.0970514
print(os.path.getsize('file'))  # 0
print(os.path.getsize('file/a.txt'))  # 124

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值