python----文件操作

注意事项!

打开文件,一定要关闭,系统上可操作文件数量是有限的,避免超出操作系统限制

文件操作流程:

        1.创建文件对象

        2.调用文件方法进行操作 

        3.关闭文件

1.文件的打开模式

r      以只读模式打开文件,并将文件指针指向文件头;如果文件不存在会报错
w      以只写模式打开文件,并将文件指针指向文件头;如果文件存在则将其内容清空,如果文件不存在则创建
a      以只追加可写模式打开文件,并将文件指针指向文件尾部;如果文件不存在则创建
r+     在r的基础上增加了可写功能
w+     在w的基础上增加了可读功能
a+     在a的基础上增加了可读功能
b      读写二进制文件(默认是t,表示文本),需要与上面几种模式搭配使用,如ab,wb, ab, ab+(POSIX系统,包括Linux都会忽略该字符)

2.文件基本操作

f = open('示例文件.txt','r',encoding='utf-8')
a = f.read()   #读取文件,括号中可加参数
print(a)
b = f.read(5)   #读取前5个(文件中,每行后面的/t也算一个),python3中,汉字占一个单位
print(b)
c = f.readline()   #取一整行,想全部读完,就要一行一行取,括号里加参数可取这一行的前几个
print(c)
d = f.readlines()    #读出文件所有内容
print(d)
f.close()
f = open('示例文件.txt','r',encoding='utf-8')
a = f.readlines()
number = 0
for i in a:
    number += 1

    if number == 6:
        i = ''.join([i.strip(), 'iiiii'])  # 字符串拼接,strip是为了去除这行最后的/n
    print(i.strip())

print(f.tell())   #光标的位置
f.close()

3.文件操作常见方法

fileno()文件描述符,查看问文件专属代号

f.seek(size) 移动在文件中,光标的位置

f = open('示例文件.txt','r',encoding='utf-8')
f.fileno()   #文件描述符
d = f.read(5)
print(d)
f.seek(3)   #移动光标的位置
e = f.read(5)
print(e)
f.close()

f.truncate():截断数据(不能在r模式下)

        在w模式下:先清空,再写,再截断

        在a模式下:直接将指定位置后的内容截断

f = open('示例文件1.txt','r+',encoding='utf-8')
f.truncate(8)
a = f.read()
print(a)
f.close()

f.flush()方法:用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,可用来做文件读取进度条

import sys,time
for i in range(30): #进度条类型
    sys.stdout.write("*")
    sys.stdout.flush()
    time.sleep(0.1)

4.文件操作中的with方法

with open('示例文件.txt', 'r',encoding='utf8') as f:
    a = f.readline()
    b = f.read()
print(a)
print(b)
with open('示例文件.txt','r',encoding='utf8') as f_read, open('示例文件1.txt','w',encoding='utf8') as f_write:
    for i in f_read:
        f_write.write(i)

 5.获取文件目录下的子文件名(推荐使用第二种)

方法一:

遍历文件夹及其子文件夹中的文件,并存储在一个列表中
输入:文件夹路径、空文件列表[]
输出: 文件列表Filelist,包含文件名(完整路径)
import os
path = '你的文件夹所在的路径'
def get_filelist(dir, Filelist):
    if os.path.isfile(dir):
        # Filelist.append(dir)
        # # 若只是要返回文件文,使用这个
        Filelist.append(os.path.basename(dir))
    elif os.path.isdir(dir):
        for s in os.listdir(dir):
            # 如果需要忽略某些文件夹,使用以下代码
            # if s == "xxx":
            # continue
            newDir = os.path.join(dir, s)
            get_filelist(newDir, Filelist)
    return Filelist

if __name__ == '__main__':
    list = get_filelist(path, [])
    print(len(list))
    for e in list:
        print(e)

方法二:

import os
import glob

path = '1111'
pathlist=glob.glob('../222/'+path+'/*.csv')
# print(pathlist)
for i in pathlist:
    path_name,filename = os.path.split(i)
    print(filename)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值