文件的操作
-
系统中的文件:
1.文本文件:记事本打开不会出现乱码的文件 2.二进制文件:记事本打开会乱码的文件!
python怎么操作系统文件?
直接操作文件(和操作系统交互),用到一个模块:os(Operation System)
【扩展:和程序命令交互{python解释器}用到一个模块:sys(system)】
-
数据的操作【文件也是一种数据】
操作实例:
1、创建文件夹、文件:创建文件夹(mkdir、makedirs)
mkdir:创建一个目录,可以是相对或者绝对路径。,如果目录有多级,则创建最后一级,如果最后一级目录的上级目录不存在,会抛出一个error
makedirs:递归创建目录。如果子目录创建失败或者已经存在,会抛出一个Error。
创建文件(open为独立的函数)
格式:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
========================================================================
Character Meaning
------------------------------------------------------------------------
'r' open for reading (default)
'w' open for writing, truncating the file first
'x' create a new file and open it for writing
'a' open for writing, appending to the end of the file if it exists
'b' binary mode
't' text mode (default)
'+' open a disk file for updating (reading and writing)
'U' universal newline mode (deprecated)
=======================================================================
r:打开和读取(默认)
w:向文件内写入,并覆盖原来的内容
x:创建新的文件和打开
a:向文件内追加内容
b:二进制格式
t:txt格式
+: 打开磁盘文件进行更新(读写)
U: 通用换行符模式(已弃用)
2、重命名文件夹:
rename(“源文件名称”,“要修改的名称”)
可以更改名称
renames(“源文件名称”,“要修改的名称”)
(rename的升级)既可以修改名称,还可以修改上一级文件夹的名称
3、删除文件或者文件夹:
remove 删除一个文件
removedirs 递归删除文件夹,如果你的最后一层文件夹为空,他会逐步删除每个空的父文件夹
rmdir() 方法用于删除指定路径的目录。仅当这文件夹是空的才可以
4、遍历某个文件夹(listdir):
import os
# 查看某个文件夹下所有文件
# f_list = os.listdir('D:/360驱动大师目录')
# print(f_list)
def chk_files(s_path):
if os.path.isfile(s_path):
print("这是一个文件:", s_path)
if os.path.isdir(s_path):
print("这是个一个文件夹", s_path)
f_list = os.listdir(s_path)
for file in f_list:
chk_files(s_path + "/" + file)
5.查看文件信息
getctime() #输出文件创建时间指的是
creat时间getatime() #输出最近访问时间指的是access访问时间
getmtime() #输出最近修改时间指的是modify时间
getsize() #输出文件大小(字节为单位)直接
操作二进制文件
和操作文本文件基本无错。将操作模式mode 后面加上"b"“例:“r”->“rb”,“w”->“wb”等
注意:如果要操作二进制文件,read()要慎重使用,不要直接read(),容易造成整个二进制文件被读入内存,造成内存溢出。操作时,要给read()添加每次要读取一定数量的数据
-
读取文件数据的步骤:
打开文件(open)->读取数据(read)->展示数据(print)->关闭文件(close)
-
向文件内写入数据的步骤:
打开文件(open)->定义数据->写入数据(write)->关闭文件
-
文件的拷贝:
分别打开源文件和目标文件(open)->读取源文件(read)写入目标文件(write)->分别关闭两个文件
【扩展】1.with语句操作文件:快捷处理方式(能够实现文件的自动关闭,简化对文件的操作步骤)
users = "hello world" #定义字符串(当users是字典的时候无法实现,要使用json和pickle)
with open ("one.txt","wb") as f:
f.write(users) #写入文件
【扩展】2.系统标准库json,可以对程序中的数据进行转换
user = {
admin:{
"username":"admin",
"password":"123",
"nickname":"五五开"
}
}
通过json进行转换
import json
#1.类型转换操作
#将一个字典数据->字符串数据【json字符串】
json_str = json.dumps(users)
print(type(json_str),json_str)
#将一个json字符串数据,转换成json对象【其他语言】(字典dict)
json_obj = json.loads(json_str)
print(type(json_obj),json_obj)
#2.类型转换的同时操作文件
#json的方式,将程序中的【变量、列表、集合、字典】写入到文件中
json.dump(users,open("d2.txt","w"))
#json的方式,将文件中的数读取到程序中
data = json.load(open("d2.txt"))
【扩展】3.pickle程序中的数据和文件之间的交互,一般通过二进制操作
import pickle
user = {
admin:{
"username":"admin",
"password":"123",
"nickname":"五五开"
}
}
#二进制操作方式,将数据存储到文件中
pickle.dump(users,open("d3.txt","wb"))
#二进制操作方式,读取数据文件
data.pickle.load(open("d3.txt","rb"))
print(data)
网友评论