(一)文件操作
文件操作步骤:
第一步: 打开文件
f = open(文件名, 操作模式, encoding=文件编码)
第二步: 读写文件
f.read()
f.write()
第三步: 关闭文件
f.close()

(二)文件夹操作
①创建文件夹
②获取当前目录
③获取目录列表
④删除文件夹


打开文件与读取文件

在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件
open(文件名,访问模式)

# encoding 常见的有两种: utf-8 什么都能支持 ,  gbk 中文编号
f = open('test.txt', 'r', encoding='utf-8')
data = f.read() # 默认把整个文件都读入进来
f.close() # 关闭文件
print(data)
#上面的代码是放在和py文件相同目录下时使用,如果文件路径不同的话用下面方式读取
f = open('D:/Users/mac/Downloads/calulation.py', 'r', encoding='utf-8')
data = f.read()
f.close()

$$ 文件指针
文件读写中有指针的概念存在, 打开文件时默认指针处于文件内容开头, 当读取文件全部内容后, 指针移动到文件末尾.

当文件处于指针末尾时, 是无法读取文件中的字符串的. 而这时如果写入字符串, 会写入到当前文件最后.

read方法默认会直接读取文件全部内容, 因为read方法运行一次后, 指针会处于文件末尾, 这时再次运行read, 无法读取内容.

read方法也可以通过参数空值向后读取几个字节

f.read(5)

$$ 移动指针seed方法

# 将指针移到开头位置
f.seek(0)

$$指针向后读取一段(readline)

data = f.readline()
data

$$一次性读取全部数据(readlines)
就像read没有参数时一样,readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素

f = open("test.txt", "r", encoding='utf-8')
data = f.readlines()
f.close()
data[0]

$$如担心忘记关闭文件, 也可是使用自动关闭文件的写法(with)

with open('test.txt','r',  encoding='utf-8') as f:# 你对文件操作的代码data = f.read()

可以用 f.closed() 来检查文件是否已关闭


打开文件与写入文件

写文件和读文件是两个相对应的过程, 基本使用方法和read没有太大区别

# 如果原文件已存在, 会清空
# 如果原文件不存在, 会新建
f = open('aaa.txt', 'w', encoding='utf-8')
content="君不见,黄河之水天上来,奔流到海不复回"
f.write(content)
f.close() # 关闭文件的时候, 内容才会真正被写入

可以多次写入, 最后关闭才会全部写入

$$ 将列表内容写入(writelines)

# 写文件中, 如果文件不存在, 则会新建文件, 如果文件已经存在, 则会清空原文件
f = open('test_write.txt', 'w', encoding='utf-8')
L = ['abc', 'mno', 'xyz']
f.writelines(L)
f.close()

$$ 追加模式
打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

# 追加模式中, 默认打开文件指针处于文件结尾
f = open('test_write.txt', 'a', encoding='utf-8')

二进制文件的读写

默认模式为t(text)文本操作模式, 如果要操作二进制文件(图片, 视频, 音频等), 需要使用二进制模式b(binary)

二进制文件读取

# 加上b就是二进制模式, 没有编码
f = open('图片.jpg', 'rb')
# 二进制
data = f.read()
f.close()

二进制文件写入

f = open('D:/Users/mac/Downloads/beautiful.jpg', 'wb')
f.write(data)
f.close()

二进制文件先读后写相当于把文件打开,然后有另存为一个新的地址.


文件夹操作

$$ 文件重命名
os模块中的rename()可以完成对文件的重命名操作
rename(需要修改的文件名, 新的文件名)

import os
os.rename('我有一个梦想.txt', 'Ihaveadream.txt')

$$ 删除文件
os模块中的remove()可以完成对文件的删除操作
remove(待删除的文件名)

import os
os.remove('Ihaveadream.txt')

$$ 创建文件夹

import os
os.mkdir('测试')

$$ 获取当前目录

import os
os.getcwd()

$$ 获取目录列表

import os
os.listdir('D:/Users/mac/Downloads')

$$ 删除文件

import os
os.rmdir('测试')

$$ os方法大全

import osprint(os.getcwd())        # 获得当前工作目录
print(os.chdir("dirname")) # 改变当前脚本的工作路径,相当于shell下的cd
print(os.curdir)            # 返回当前目录‘.'
print(os.pardir)            # 获取当前目录的父目录字符串名‘..'
print(os.makedirs('dirname1/dirname2'))     # 可生成多层递归目录
print(os.removedirs('dirname1/dirname2'))      # 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
print(os.mkdir('test4'))         # 生成单级目录;相当于shell中mkdir dirname
print(os.rmdir('test4'))        # 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
print(os.listdir('/pythonStudy/s12/test'))   # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
print(os.remove('log.log'))            # 删除一个指定的文件
print(os.rename("oldname","newname"))    # 重命名文件/目录)
print(os.stat('/pythonStudy/s12/test'))     # 获取文件/目录信息
print(os.pathsep)            # 输出用于分割文件路径的字符串';'
print(os.name)               # 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
print(os.system(command='bash'))   # 运行shell命令,直接显示
print(os.environ)                  # 获得系统的环境变量
print(os.path.abspath('/pythonStudy/s12/test'))   # 返回path规范化的绝对路径
print(os.path.split('/pythonStudy/s12/test'))     # 将path分割成目录和文件名二元组返回
print(os.path.dirname('/pythonStudy/s12/test'))    # 返回path的目录。其实就是os.path.split(path)的第一个元素
print(os.path.basename('/pythonStudy/s12/test'))   # 返回path最后的文件名。如果path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
print(os.path.exists('test'))                 # 判断path是否存在
print(os.path.isabs('/pythonStudy/s12/test'))    # 如果path是绝对路径,返回True
print(os.path.isfile('test'))                   # 如果path是一个存在的文件,返回True。否则返回False
print(os.path.isdir('/pythonStudy/s12/test'))    # 如果path是一个存在的目录,则返回True。否则返回False
print(os.path.getatime('/pythonStudy/s12/test'))   # 返回path所指向的文件或者目录的最后存取时间
print(os.path.getmtime('/pythonStudy/s12/test'))   # 返回path所指向的文件或者目录的最后修改时间

python 学习记录-用python从硬盘中读写文件 Day21相关推荐

  1. [Python学习记录]——Hello Python

    一直以来主要使用Java语言进行编程,开始学习Python起源于2012年亚马逊双十一购书大优惠的活动中为了补齐优惠额度,正好亚马逊给推荐<Python入门基础>一书. 一年时间过去了,书 ...

  2. Python学习记录day3

    2019独角兽企业重金招聘Python工程师标准>>> Python学习记录 day3 今天是银角大王武sir讲课.先回顾了上节课所学,然后讲到了面向对象思想. set set是一个 ...

  3. 【Python学习记录】Numpy广播机制(broadcast)

    ✨ 博客主页:小小马车夫的主页 ✨ 所属专栏:Python学习记录 文章目录 一.什么是Numpy广播机制 二.Numpy广播应用 三.Numpy广播规则 一.什么是Numpy广播机制 在Numpy. ...

  4. python学习记录——容器篇

    容器 字符串 下标(索引) # 下表也称为是索引,是一个整型数字,可以是正数,也可以是负数 # 正数下标是从0开始的,表示第一个字符,-1表示最后一个字符 my_str = 'hello'h e l ...

  5. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

  6. Opencv+Python学习记录9:掩膜(掩码)的使用(内附详细代码)

    一,基本概念 OpenCV中的很多函数都会指定一个掩模,也被称为掩码,例如: 计算结果=cv2.add(参数1,参数2,掩模) 当使用掩模参数时,操作只会在掩模值为非空的像素点上执行,并将其他像素点的 ...

  7. Python学习记录(一)PIL库对于图像操作方法的简单整理

    Python学习记录(一)PIL库对于图像操作方法的简单整理 首先对PIL库进行一个简单的介绍:Python图像库PIL(Python Image Library)是python的第三方图像处理库,由 ...

  8. Python学习记录——英文名修改成标准格式

    Python学习记录--英文名修改成标准格式 功能需求 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字.输入:['adam', 'LISA', 'barT'],输出:['Adam', ...

  9. 蜗牛一步一步地往上爬的Python学习记录

    Python学习记录 前言 简介 基础知识 类型变量 高级特性 函数式编程 高阶函数 偏函数 装饰器decorator 匿名函数 前言 第一,绝对不断更: 第二,绝对认真写: 第三,绝对撰写的公正漂亮 ...

最新文章

  1. 李飞飞团队最新论文:如何对图像中的实体精准“配对”?
  2. 转 当当网资深DBA:DB运维四大现代化的实现
  3. android定时循环,Android AlarmManager实现定时循环后台任务
  4. mysql 查询 集合_MySQL使用集合函数进行查询操作实例详解
  5. 大学教授撰写诗歌引人思考:美好人生怎能终止在17岁?
  6. js实现关于分页的一种实现方式
  7. mysql双主+keepalived【转】
  8. Java生成验证码合集(一)简单版
  9. Appium下载和安装
  10. 测试用例管理系统 TestRail测试用例
  11. android视频 转 gif,手机视频转gif转换器 安卓手机怎样把视频转化成GIF图片,手机视频转GIF方法...
  12. 免费高清可商用图片素材站推荐
  13. 66个求职应聘技巧性问答(六)
  14. Lucene倒排索引简述 之倒排表
  15. 第一次学游泳技巧_初学者第一次下水需要注意哪些情况,新手学习游泳需要掌握什么技巧,适合的游泳装备有哪些...
  16. C语言——计算单词个数
  17. 各大工作室都在用的视觉特效软件,开启你的虚拟制作之旅
  18. elementui表格隔行换色
  19. ssh 远程脚本执行 java: command not found
  20. sat数学可以用计算机吗,SAT数学考试带计算机是否可以

热门文章

  1. 计算机活动图片,惟妙惟肖:20张电脑制作的“真实”图片
  2. 小圆象PDF转换器:Word转PDF转换软件有哪些?Word转PDF简单方法分享
  3. ERP的生产管理与MES管理系统有什么差别?
  4. 1024程序员节,琪琪酱来送祝福啦!!
  5. 致老婆酱的一份回忆录
  6. Spring Security继承AbstractAuthenticationProcessingFilter验证成功后自动跳转地址“/”
  7. csh shell_0614-同一OS用户并行Shell脚本中kinit不同的Principal串掉问题
  8. 驱动LSM6DS3TR-C实现高效运动检测与数据采集(2)----配置滤波器
  9. 深度网络架构的设计技巧<一>:Can CNNs Be More Robust Than Transformers?
  10. Centos和Window系统下Frp内网穿透