2020-12-06

Python文件操作
一、基本文件操作
1.1创建和打开文件
1.2关闭文件
1.3打开文件时使用with语句
1.4写入文件内容
1.5读取文件
二、目录操作
2.1os与os.path模块
2.2路径
2.3判断目录是否存在
2.4创建目录
2.5删除目录
2.6遍历目录
三、高级文件操作
3.1删除文件
3.2重命名文件和目录
3.3获取文件基本信息
1.1 创建和打开文件

open()函数基本语法:
file=open(filename[,mode[,buffering]])
参数解释:
filename:要创建或打开的文件名称;
mode:可选参数,指定文件的打开模式,默认为只读(r)
buffering:可选参数,指定文件的缓冲模式,0表示表达式不缓存,1表示表达式缓存,
默认为缓存模式;

open()经常实现以下功能:
1 打开一个不存在的文件时先创建该文件
创建新文件时,可用mode参数:w,w+,a,a+
new_wd=open(r’C:\Users\Desktop\kobe.xls’,mode=‘w+’)
new_wd.close()
2 以二进制形式打开非文本文件,如:图片、音频、视频

le = open(r’C:\Users\open_mode参数.png’,‘rb’)
print(le)

3 打开文件时指定编码方式 默认采用GBK编码

1.2 关闭文件
file.close()

1.3 打开文件时使用with语句
背景:open()打开文件后,一定要记得close()关闭文件,但是很多时候容易忘记,可能带来一 些意想不到的问题。

优势: with语句在处理文件时,无论是否抛出异常,都能保证with语句执行完毕后关闭已经打开的文件。

语法格式:
with expression as target:
with-body
参数说明:

expression:指定一个表达式,可以是打开文件的open()函数
target:用于一个变量,且将expression的结果保存到该变量中
with-body:指定with语句体,可以是执行with语句后相关的一些操作语句,也可用pass语句代替。

1.4 写入文件内容
input:
#新建文件test.txt
with open(r’C:\Users\Desktop\test.txt’,‘w’,encoding=‘utf-8’) as file:
file.write(‘撒拉黑哟’)
print(file)
kb=open(r’C:\Users\Desktop\test.txt’,‘r’,encoding=‘utf-8’)
print(kb.read())
kb.close()
output:
<_io.TextIOWrapper name=‘C:\Users\Desktop\test.txt’ mode=‘w’ encoding=‘cp936’>
撒拉黑哟
1.5 读取文件
1.5.1 读取指定字符
语法格式:
file.read([size])

参数解释:
file:文件对象
size:可选参数,指定要读取的字符个数,省略默认全部读取。

input:
with open(r’C:\Users\11602\Desktop\test.txt’,‘r’,encoding=‘utf-8’) as file:
a=file.read()
print(a)
output:
爱你
若要读取部分内容,可以先使用文件对象的seek()方法将文件的指针移动到指定的位置。
file.seek(offset[,whence])
参数解释:
file:已经打开的文件内容
offset:用于指定移动的字符个数,其具体位置与whence有关
whence:用于指定从什么位置开始计算.值0表示从文件开始位置计算,1表示当前位置开始计算,
2表示从文件尾部开始计算,默认为0

input:
with open(r’C:\Users\Desktop\test.txt’,‘r’,encoding=‘utf-8’) as file:
file.seek(3)
a=file.read()
print(a)
output:
爱你
注:使用该方法时,offset的值是按一个汉字占两个(gbk编码)或者三个(utf-8)字符,其他类型字符 占1个

1.5.2 读取一行
方法: file.readline()

注:使用该方法时,需要指定打开文件的模式为r或者r+;

1.5.3 读取全部行
方法: file.readlines()

注:与1.5.2相同

二、目录操作(文件夹操作)
2.1 os与os.path模块

#导入os模块
import os
#os.path为os模块的子模块
os模块常用函数

os.path内置函数

2.2 路径

2.2.1 相对路径

input:
#获取当前路径
print(os.getcwd())
output:
C:\Users\PycharmProjects
2.2.2 绝对路径
语法格式:os.path.abspath(path)
path:要获取绝对路径的相对路径

input:
os.path.abspath(r’projects\1.txt’)
output:
‘C:\Users\projects\1.txt’
2.3 判断目录是否存在

基本语法格式:

os.path.exists(path)

注:若输入的路径存在,返回True,否则返回False;

2.4 创建目录

2.4.1 创建一级目录

基本语法:
os.mkdir(path[,mode])

2.4.2 创建多级目录

基本语法:
os.makedirs(path,[mode,[exist_ok]])

创建多级目录

os.makedirs(‘11/22/33’)
2.5 删除目录

通过rmdir()删除目录时,只有当要删除的目录为{空}时才起作用;
基本语法:
os.rmdir(path)

排除异常

if os.path.exists(path):
os.rmdir(path)
print(‘删除目录成功’)
else:
print(‘目录不存在’)
注:rmdir()只能删除空目录;删除非空目录时调用shutil模块的rmtree()函数实现

import shutil
shutil.rmtree(‘二十’)
2.6 遍历目录

基本语法:

walk(top[,topdown[,onerror][,followlinks]])
参数说明:
top:用于指定要遍历的根目录
topdown:可选参数,指定遍历目录的顺序,如果值为true,自上而下,false,自下而上;
onerror:可选参数,指定错误处理方式,默认为忽略
followlinks:可选参数,默认为true,指定在支持的系统上访问由符号链接指向的目录

input:
f=os.walk(r’D:\我的学习\Hadoop视频\1.笔记’)
for i in f:
print(i,’\t’)
output:
(‘D:\我的学习\Hadoop视频\1.笔记\1.笔记’, [], [’~大数据技术之Hadoop(HDFS文件系统).doc’, ‘~大数据技术之Hadoop(入门).docx’, ‘大数据技术之Hadoop.xmind’, ‘大数据技术之Hadoop(HDFS).docx’, ‘大数据技术之Hadoop(MapReduce).docx’, ‘大数据技术之Hadoop(入门).docx’])

三、高级文件操作

3.1 删除文件
基本语法:
os.remove(path)

#新建文件1.txt
new=open(‘1.txt’,‘w’)
new.close()
#删除文件1.txt
os.remove(‘1.txt’)

排除异常

path=‘a.txt’
if os.path.exists(path):
os.remove(path)
print(‘删除成功’)
else:
print(‘删除失败’)

3.2 重命名文件和目录
基本语法:

os.rename(src,dst)

import os # 导入os模块
src = “d” # 要重命名的目录当前目录下的d
dst = “test” # 重命名后的目录重命名为test
if os.path.exists(src): # 判断目录是否存在
os.rename(src,dst) # 重命名目录
print(“目录重命名完毕!”)
else:
print(“目录不存在!”)

3.3 获取文件基本信息
基本语法:

os.stat(path)

input:
print(os.stat(r’C:\Users\Desktop\test.txt’))
for i in os.stat(r’C:\Users\Desktop\test.txt’):
print(i,’\n’)
output:
os.stat_result(st_mode=33206, st_ino=17169973579403364, st_dev=2015818331, st_nlink=1, st_uid=0, st_gid=0, st_size=45, st_atime=1580356660, st_mtime=1580356660, st_ctime=1580353782)
各参数说明:

将时间戳转化为正常时间格式

timeStamp=os.stat(r’C:\Users\11602\Desktop\test.txt’).st_atime

方法一:

import time
import datetime as dt
dateArray = dt.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y-%m-%d %H:%M:%S")
print(otherStyleTime)

方法2:

timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
print(otherStyleTime)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值