python 文件

06 文件

open()函数

open(‘文件’,open状态参数)

  1. r 只读模式
#打开一个文件,默认r,表示只读状态
open('a.txt','r',encoding = 'utf8') #声明编码格式 

  1. w 写入模式 (清空写入)
  2. a 写入模式 (追加写入)
  3. +模式 可读可写 不能单独使用(r+ 写入时会替换前面的内容 a+ 用的最多 w+)
  4. b 二进制模式 不能单独使用(图片 视频 音频)
f = open('c.txt','ab+')
f.write(b'hello') #以二进制写入
f.flush()
f.seek(0)
print(f.read())
f.close()

文件方法

  1. open() 打开一个文件
  2. write() 写入
  3. writelines() 写入多行
  4. flush() 保存
  5. read() 读取全部
  6. readlines() 读取全部,以列表形式返回
f = open('d.txt','r')
print(f.read())
print(f.readlines())
  1. close() 保存并关闭文件
  2. closed 检查文件是否被关闭
# w 写入模式,先清空再写入,当文件不存在时,则会创建一个文件
f = open('b.txt','w') # f 表示当前文件
f.write('hello') #写入
f.writelines('/npython','abc','hello')
f.close()
print(f.closed) #关闭返回True,未关闭返回False
  1. tell() 查看光标位置
  2. seek() 调整光标位置
f = open('b.txt','w+') 
f.write('hello') 
f.flush()
print(f.tell())
f.seek(0)
print(readlines())

  1. with open() 自带关闭
  2. as 取别名
with open('c.txt','a+') as f:
	f.write(' hello') #注意缩进

路径

  1. 相对路径
    上一级(. ./) 同层级(文件名 或者. / )下一级( / )
#打开同层级text中的d.txt文件
open('./text/d.txt','r')
  1. 绝对路径
    从磁盘开始的所有路径
    绝对路径前要加r’ ',取消转义

文件流

在内存当中创建一个临时的假文件(运行速度快)
getvalue() 读取内容 不用调整光标位置

import io #导入io模块,用于创建临时假文件
string = io.StringIO() #io创建临时假文件
string.write('你好') #假文件可以直接写入
#假文件不用保存
print(string.getvalue()) #直接读取内容

字节流 (读二进制,写二进制)

import io
bytess = io.BytesIO()
bytess.write(b'hello')
print(bytess.getvalue())

文件目录操作

import os #关于文件的模块
os.mkdir('test') #创建文件夹
os.rmdir('test') #删除文件夹
#创建多层文件夹
os.makedirs('test/abc/def')
#删除多层文件夹
os.removedirs('test/abc/def')
#文件重命名
os.rename('test','文件') #第一个文件名 第二个新文件名 
#path.join 第一个参数指定的路径 第二个参数要拼接的路径
print(os.path.join('abc/def','hij')) #abc/def/hij
#调用系统命令
os.system('cmd') #打开cmd
os.system('python') #打开python
#删除指定文件
os.remove('c.txt')
#打印文件路径
print(os.getcwd()) #打印当前文件路径
print(os.listdir(r'C:Users\Administrator\Desktop\test')) #打印指定文件路径
#wake 打印文件里面的全部文件路径
print(list(os.walk('test'))) #以列表形式查看

模块和包

模块的本质是py文件

#从datetime包里导入datetime模块
from datetime import datetime
datetime.now()
#若只导入datetime包不导入模块
import datetime
datetime.datetime.now() #使用datetime包里的datetime模块里的now()方法
#可用as给模块取别名
from datetime import datetime as da
da.now()
#查找可以导入的模块路径
import sys
print(sys.path)
#添加导入模块的路径
sys.path.append('C:\\User\\Administrator\\Desktop\test')

datetime模块

import datetime
start = datetime.datetime(2021,3,1)
end = datetime.datetime(2021,3,31)
#strftime 设置指定的时间格式
print(start.strftime('%Y-%m-%d'))
print((end-start).days+1) #默认月是30天,这里是3月份要加1
#timedelta 表示时间间隔 days 表示间隔天数 是datetime包里面的方法 不在datetime模块里面
start = datetime.timedelta(days = 1)

魔法方法 name

#__name__代表当前模块的名字
if __name__ == '__main__' : #判断它是否是当前文件或者有没有被导入
	print('这是当前文件')
else:
	print(' TRUE')

练习

  1. 利用datetime模块,批量生成4月份每天的txt文件
import datetime
import os
start = datetime.datetime(2021,4,1)
end = datetime.datetime(2021,4,30)
day = (end-start).days+1
dirname = '4月份'
os.mkdir(dirname)
for i in range(day):
	doc = start.strftime('%Y-%m-%d')+'.txt'
	open(f'{dirname}/{doc}','w')
	start += datetime.timedelta(days = 1)
  1. 生成上面的文件之后,再一次在每个文件中写入文件名
import datetime
start = datetime.datetime(2021,4,1)
end = datetime.datetime(2021,4,30)
day = (end-start).days+1
dirname = '4月份'
for i in range(day):
	doc = start.strftime('%Y-%m-%d')+'.txt'
	f = open(f'{dirname}/{doc}','w')
	f.write(doc)
	start += datetime.timedelta(days = 1)
	f.close()
  1. 将上面生成的所有文件名之后加上‘_NEW’
import datetime
import os
start = datetime.datetime(2021,4,1)
end = datetime.datetime(2021,4,30)
day = (end-start).days+1
dirname = '4月份'
for i in range(day):
	doc = start.strftime('%Y-%m-%d')+'.txt'
	os.rename(f'{dirname}/{doc}'+'.txt', f'{dirname}/{doc}'+'_NEW.txt')
	start += datetime.timedelta(days = 1)
  1. 假设有一个英文文本文件,编写一个程序读取其内容,并将里面的大写字母变成小写字母,小写字母变成大写字母
f = open('a.txt','r+')
st = f.read()
f.seek(0)
f.write(st.swapcase())
f.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值