Python文件操作
2021-01-23 14:15
标签:imp 内存 简单 iter 创建 简单操作 只读 固定 一级目录 1.读取文件 read 2.写文件 write rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于 非文本文件如图片等。 注意:二进制文件把内容表示为一个特殊的 bytes 字符串类型。 r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于 非文本文件如图片等。 w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑, 即原有内容会被删除。 如果该文件不存在,创建新文件。 wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开 头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于 非文本文件如图片等。 w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即 原有内容会被删除。如果该文件不存在,创建新文件。 wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头 开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非 文本文件如图片等。wb+ a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也 就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件 进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文 件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在, 创建新文件进行写入。 a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ 以二进制格式打开一个文件用于读写。如果该文件已存在,文件指针将会放在文 件的结尾。如果该文件不存在,创建新文件用于读写。 read() 调用 read()会一次性读取文件的全部内容,如果文件有 10G,内存就爆了,会导致程序卡死, 所以,要保险起见,可以反复调用 read(size)方法,每次最多读取 size 个字符的内容 readline() readline 每次读取一行,并且自带换行功能 每一行末尾会读到\n readlines() 一次性以行的形式读取文件的所有内容并返回一个 list,需要去遍历读出来 循环读取 file 句柄是一个可迭代的对象因此,可以循环读取文件中的内容,每次读一行 写入write和writelines(多条数据一次性写入) cvs 文件读写 写入cvs文件,必须创建 csv 模块中对应的 writer 对象,通过 writer 对象完成文件内容的写入操作 读取 csv 文件的操作,主要通过 csv 模块中的 reader 对象来完成,通过加载文件数据到 reader 对象中,文件中的数据就会按照固定的格式读取到程序中进行处理 爬取豆瓣电影写入csv文件 使用 wIth 方式操作文件,可以不用关闭文件,会自动关闭文件 乱码:Python 读写文件时,默认使用的编码为平台编码,也就是 gbk, 在 pycharm 中创建的文件默认使用的是 utf-8 编码 使用 os 模块对文件进行一些相关操作 重命名文件 os.rename(旧文件名,新文件名) 2.删除文件 os.remove(文件名) 3.创建单层目录 os.mkdir(目录名) 创建多级目录 os.makedirs(目录名) 4.删除单层目录 os.rmdir(目录名) 删除多级目录 os.removedirs(目录名) 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 如果上一层目录不为空则停止删除文件 5.获取当前所在目录 os.getcwd() 6.获取目录列表 os.listdir(path) 7.切换所在目录 os.chdir() 8.判断文件或文件夹是否存在 os.path.exists() 9.判断是否是文件 os.path.isfile() 10.判断是否是目录 os.path.isdir() 其他 文件定位 文件操作练习 Python文件操作 标签:imp 内存 简单 iter 创建 简单操作 只读 固定 一级目录 原文地址:https://www.cnblogs.com/markshui/p/12883053.html一、关于文件
二、读写文件简单操作
#打开文件
file = open("demo_02/1.txt",mode="r")
#读取文件
ret = file.read()
print(ret)
#关闭文件
file.close()
# file叫做文件句柄(变量),用来操作文件
#第一个参数是文件的路径
#第二个参数 mode=访问文件的模型,r表示读,默认是r模式
#文件找不到会报错
# 2.写文件 write
file = open("demo_02/2.txt",mode="w")
file.write("python")
file.close()
#文件不存在,会自动创建文件(不会创建目录)
三、文件权限
# file = open("demo/1.png","rb")
file = open("demo_02/1.txt","rb")
ret = file.read()
print(ret)
# r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
file = open("demo_02/1.txt","r+")
file.write("zhang wei qiang")
file.close()
#写入一张图片
from demo.img import img2
file = open("demo_02/1.jpg","wb")
file.write(img2)
file.close()
file = open("demo_02/1.txt","w+")
ret = file.read()
print(ret)
file.close()
file = open("demo_02/2.txt","a")
file.write("python")
file.close()
file = open("demo_02/2.txt","a+")
ret = file.read()
print(ret)
file.close()
文件操作
file = open("demo_02/2.txt","r")
print(file.read(5))
print(file.read(5))
print(file.read(5))
file.close()
#可以指定每行读取的字符长度,下一次读取会从此位置开始
file = open("demo_02/1.txt","r")
print(file.readline())
print(file.readline())
print(file.readline())
file.close()
file = open("demo_02/1.txt","r")
ret = file.readlines()
# print(ret)
for i in ret:
print(i,end=‘‘)
file.close()
file = open("demo_02/1.txt","r")
for i in file:
print(i,end=‘‘)
file.close()
file = open("demo_02/3.txt",‘w‘)
# file.write("zhangweiqiang")
lst = ["hello","world","zs","ls"]
for i in lst:
file.write(i)
# file.writelines(lst)
file.close()
file = open("demo_02/movie.csv","w",newline="")
writer = csv.writer(file)
writer.writerow(["电影名称","评分","演员","网址"])
writer.writerows([["战狼"," 9.0","吴京","www.zhanlang.com"],
["战狼2"," 9.2","吴京","www.zhanlang2.com"]])
file.close()
file = open("demo_02/movie.csv","r",newline="")
reader = csv.reader(file)
# print(reader) #<_csv.reader object at>
for i in reader:
print(i)
file.close()
import csv
file = open("demo_02/movie2.csv","w",newline="")
writer = csv.writer(file)
writer.writerow(["电影名称","评分","演员","网址"])
for i in movie_dict2["data"]:
# print(i["title"],i["rate"],i["casts"],i["url"])
movie_name = i["title"]
rate = i["rate"]
casts = i["casts"]
url = i["url"]
writer.writerow([movie_name,rate,casts,url])
file.close()
# with open("demo_02/1.txt","r") as file:
# print(file.read())
#with 内部实现了__enter__和__exit__方法,会自动关闭文件
class Foo:
def __init__(self):
print("--init--")
def test(self):
print("--test--")
def __enter__(self):
print("enter")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("with执行完毕,调用exit")
with Foo() as f:
f.test()
print("最后一行代码")
os 模块
import os
# os.rename("demo_02/1.txt","demo_02/111.txt")
os.rename("demo_02/2.txt","222.txt")
#删除demo_02/3.txt
os.remove("demo_02/3.txt")
#创建test1目录
os.mkdir("test1")
os.makedirs("a/b/c/d")
os.rmdir("test1") #只能删除空目录
os.removedirs("a/b/c/d")
print(os.getcwd())
print(os.listdir("E:\python0421\day13\code"))
# print(os.getcwd())
os.chdir("a/b")
# print(os.getcwd())
with open("222.txt","w")as file:
file.write("hello world")
# print(os.path.exists("222.txt"))
print(os.path.exists("a"))
print(os.path.isfile("222.txt"))
print(os.path.isfile("a"))
print(os.path.isdir("222.txt"))
print(os.path.isdir("a"))
#获取绝对路径 os.path.abspath()
print(os.path.abspath("222.txt"))
# 获取路径中的最后部分
print(os.path.basename("222.txt"))
print(os.path.basename(r"E:\python0421\day13\code\222.txt"))
#判断是否是绝对路径 os.path.isabs()
print(os.path.isabs("222.txt"))
print(os.path.isabs(r"E:\python0421\day13\code\222.txt"))
#获取文件所在目录,os.path.dirname
print(os.getcwd())
print(os.path.dirname(r"E:\python0421\day13\code\a\b\11.txt"))
print(os.path.dirname(r"E:\python0421\day13\code\a\b"))
#tell()查看文件定位
# with open("222.txt","r") as f:
# with open("222.txt","a") as f:
# print(f.tell())
#seek(offset,whence) offset偏移量,whence定位(0文件开头,1定位不变,2文件结尾)
with open("222.txt","r") as f:
print(f.tell())
f.seek(2,0)
print(f.tell())
print(f.read())
1.封装函数,可以实现文件复制(先读取目标文件,再写入新文件)
如:将111.txt复制一份,文件名为222.txt
2.封装函数,可以实现文件备份(先读取目标文件,再写入新文件)
如:将111.txt复制一份,文件名为111_副本.txt
3.封装函数,打印某个文件内的所有的文件名
上一篇:Java_网络