文件操作

2018-07-27  本文已影响0人  想旅游的程序员

文件的操作

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()添加每次要读取一定数量的数据

【扩展】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)



上一篇 下一篇

猜你喜欢

热点阅读