Day10.

文件操作分为文本和二进制文件操作

创建文件对象open(),格式:open(文件名,打开方式)

如果我们没有增加模式b,则默认创建的是文本文件,处理的单元是字符,如果是二进制b,则创建的是二进制文件,处理单元是字节

文件的写入

基本文件写入操作三个步骤:

1.创建文件对象

2.写入数据

3.关闭文件对象

为什么要关闭文件?因为不关闭会浪费资源

wirte(a)把字符a写入文件中

writelines(a)把字符串列表写入文件中

close()关闭流

#使用异常机制管理文件对象的关闭操作
try:
    f = open(r'a.txt','w')
    str = ['zf1\n','zf2\n','zf3\n']
    f.writelines(str)
except BaseException as e:
    print(e)
finally:
    f.close()

with上下文管理器

with open(r'b.txt', 'a', encoding='utf-8') as f:
    str1 = ['钟离\n', '枫原万叶\n', '神里绫华\n']
    f.writelines(str1)

文本文件的读取

with open(r'd.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()
    lines = [temp.rstrip() + '#' + str(index + 1)+'\n' for index, temp in enumerate(lines)]

with open(r'd.txt', 'w', encoding='utf-8') as f:
    f.writelines(lines)

二进制文件的读取和写入_图片的拷贝

with open(r'd:\a.jpg', 'rb') as f:
    with open(r'a_copy.jpg', 'wb') as w:
        for i in f.readlines():
            w.write(i)

文件对象的常用方法和属性

属性

打开模式 

 pickle函数实现序列化和反序列化

import pickle
#序列化
with open(r'e.dat', 'wb') as f:
    a1 = [1]
    a2 = [2]
    a3 = [3]
    pickle.dump(a1, f)
    pickle.dump(a2, f)
    pickle.dump(a3, f)
#反序列化
with open('e.dat', 'rb') as f:
    a1 = pickle.load(f)
    a2 = pickle.load(f)
    a3 = pickle.load(f)
    print(a1, a2, a3)

CSV文件读取和写入

import csv

# 文件写入
rows = [['凌华', 18, '稻妻'], ['琴', 28, '蒙德'], ['班尼特', 18, '璃月']]
with open(r'f.csv', 'w') as f:
    w = csv.writer(f)
    w.writerow(['姓名', '年龄', '地址'])
    w.writerows(rows)

# 文件读取
with open(r'f.csv', 'r') as f:
    b = csv.reader(f)
    for i in list(b):
        print(i)

OS模块

import os

os.system('notepad.exe')  # 调用win系统的记事本
os.system('ping www.baidu.com')  # 调用ping命令
os.system('cmd')  # 调用cmd命令

# 直接调可执行的文件
os.startfile(r'D:\Thunder\Program\ThunderStart.exe')

OS文件和目录操作

# coding=utf-8
import os

print(os.name)
print(os.sep)  # win\   Lnuix/
print(os.linesep)
print(os.stat('OS1.py'))  # 打印当前目录信息
print(os.getcwd())  # 打印当前目录
# os.chdir('d:')  # 更改当前路径
os.mkdir('书籍')  # 在当前文件夹下创建目录
os.rmdir('书籍')  # 删除目录
# os.makedirs('电影/香港/s')
# os.removedirs('电影/香港/s') #只能删除空目录
os.makedirs('../音乐/香港')  # ../上级目录
# os.rename('电影', 'movie')
print(os.listdir('movie'))

os.path

import os

os.path.isabs()  # 是否绝对路径
os.path.isfile()  # 是否文件
os.path.exists()  # 是否存在
os.path.isdir()  # 是否目录

print(os.path.getsize())  # 返回文件大小
print(os.path.getctime())  # 文件创建时间
print(os.path.getatime())  # 文件访问时间
print(os.path.getmtime())  # 文件最后修改时间

print(os.path.abspath())  # 返回绝对路径
print(os.path.split())  # 返回目录文件
print(os.path.splitext())  # 返回目录扩展名
print(os.path.join())  # 返回多级目录

walk()遍历所有文件和目录

返回一个 3 个元素的元组,(dirpath, dirnames, filenames), dirpath:要列出指定目录的路径 dirnames:目录下的所有文件夹 filenames:目录下的所有文件

# coding=utf-8
import os

path = os.getcwd()
list_files = os.walk(path)
for dir_path, dirnames, filenames in list_files:
    for s in filenames:
        print(os.path.join(dir_path, s))
    for m in dirnames:
        print(os.path.join(dir_path, m))

shutil模块文件目录拷贝

# coding=utf-8
import shutil

shutil.copyfile('1.txt', '1_1.txt')
shutil.copytree('香港', '音乐', ignore=shutil.ignore_patterns('*.html'))

压缩解压缩

# coding=utf-8
import shutil
import zipfile

shutil.make_archive('香港/gg', 'zip', '音乐')
z1 = zipfile.ZipFile('a.zip', 'w')  # 将多个文件压缩
z1.write('1.txt')
z1.write('1_1.txt')
z1.close()
# 解压缩
z2 = zipfile.ZipFile('a.zip','r')
z2.extractall('香港')
z2.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
import datetime # a = datetime.datetime.now() def day_get(d): if type(d).__name__ == "str": d = datetime.datetime.strptime(d, '%Y-%m-%d %H:%M:%S') oneday = datetime.timedelta(days=1) day = d - oneday date_from = datetime.datetime(day.year, day.month, day.day, 0, 0, 0) date_to = datetime.datetime(day.year, day.month, day.day, 23, 59, 59) print('---'.join([str(date_from), str(date_to)])) def week_get(d): if type(d).__name__ == "str": d = datetime.datetime.strptime(d, '%Y-%m-%d %H:%M:%S') dayscount = datetime.timedelta(days=d.isoweekday()) dayto = d - dayscount sixdays = datetime.timedelta(days=6) dayfrom = dayto - sixdays date_from = datetime.datetime(dayfrom.year, dayfrom.month, dayfrom.day, 0, 0, 0) date_to = datetime.datetime(dayto.year, dayto.month, dayto.day, 23, 59, 59) datelist = [[str(date_from)], [str(date_to)]] # print('---'.join([str(date_from), str(date_to)])) return datelist def multi_week_get(d, num): if type(d).__name__ == "str": d = datetime.datetime.strptime(d, '%Y-%m-%d %H:%M:%S') date_num = [] # date_num = [date_to1] for i in range(num - 1, 0, -1): dayscount = datetime.timedelta(days=d.isoweekday()) dayto = d - dayscount sixdays = datetime.timedelta(days=6 * i) dayfrom = dayto - sixdays date_from = str(datetime.datetime(dayfrom.year, dayfrom.month, dayfrom.day, 10, 0, 0)) date_num.append(date_from) dayscount1 = datetime.timedelta(days=d.isoweekday()) onedays = datetime.timedelta(days=1) dayto1 = d - dayscount1 + onedays date_to1 = str(datetime.datetime(dayto1.year, dayto1.month, dayto1.day, 10, 0, 0)) date_num.append(date_to1) return date_num def month_get(d): if type(d).__name__ == "str": d = datetime.datetime.strptime(d, '%Y-%m-%d %H:%M:%S') dayscount = datetime.timedelta(days=d.day) dayto = d - dayscount date_from = datetime.datetime(dayto.year, dayto.month, 1, 0, 0, 0) date_to = datetime.datetime(dayto.year, dayto.month, dayto.day, 23, 59, 59) # print('---'.join([str(date_from), str(date_to)])) datelist = [[str(date_from)], [str(date_to)]] return datelist class op_date(object): def week_get(self, param): pass if __name__ == "__main__": op_date = op_date() # print(op_date.week_get("2023-06-09 23:00:00")[0]) print(op_date.week_get("2023-06-09 23:00:00")[1]) print(multi_week_get("2023-06-09 23:00:00", 4))
06-10

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值