(一)文件操作
文件操作步骤:
第一步: 打开文件
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 os
print(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所指向的文件或者目录的最后修改时间