2018年7月23日python系统模块os和文件io

今天遇到的新单词:
attrubute:    n属性
cwd全称:     Current Working Directory当前工作目录
argument:     n参数
binary        n二进制
paste         v粘贴
destination   n目标       


计算机方面的学习可以到菜鸟教程RUNOOB网站查看资料

以后记得学习网络安全

要在stack overflow网站注册账号

1秒(s)=1000毫秒(ms),计算机系统的计时是从1970年1月1日的00:00:00开始的,单位
为ms

***********************************
python如果直接操作系统文件,需要用到一个模块:os(Operation System)模块,系统文件
又分为文本文件和二进制文件,能用记事本打开的是文本文件,用记事本打开乱码的是二进制文件

遍历一个盘里面的文件夹用的python命令是:
import os

os.listdir("f:")

创建一个文件夹用的命令是:
 os.makedirs("f:/oswork")      #或者不要斜杠也可以
文件夹里面再创建文件夹用的是makedirs(),也可以只创建一个文件夹
只创建一个文件夹用mkdir()

创建一个文件的命令是:
先切换到相应的盘符才能创建文件:os.chdir("f:")
然后再建立文件:open("f:/oswork/test.txt","x")?x的由来

重命名文件夹:
os.rename("f:/oswork","shide") 

删除文件夹:
 os.removedirs("f:/oswork")
 os.rmdir("f;/oswork")两个都可以

删除文件:
 os.remove("f:/oswork/test.txt")

os.getcwd()     获取当前路径,不要参数

os.chdir("d:") 切换盘符,括号中填写要切换的盘符

os.path.dirname("") 获取一个文件前面的路径,括号中要添件文件整个的路径
>>> os.path.dirname("f:/oswork")
    'f:/'

pycharm中按着ctrl再点击方法名能查看它的使用方法

直接带盘符的是绝对路径c:

window中切换到指定的路径与字符的大小写无关,其他系统大小写必须要写对

EOF : end of file文件的结尾

dat文件在python中一般存储二进制数据,因为文本文件容易被修改,存储为二进制文件防止被篡改
dll文件:
DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,
是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,
它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我
们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,
一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

文本文件是字符组成的,二进制文件是字节组成的

 提示1:dir(os)      # 系统操作模块
 提示2:dir(os.path) # 系统文件路径操作模块
 提示3:灵活使用help()

 扩展:dir(sys) # 和解释器交互的模块

********************************
python操作操作系统中的文本文件:
文本文件的内容:文件内容
写入文件——写入指定内容
是否追加[不追加~每次写入数据时覆盖原有数据]
读取文件——读取文件中的内容
python提供了打开文件的函数:open()

>>>>> open(file, mode='r', buffering=-1, encoding=None,
    errors=None, newline=None, closefd=True, opener=None)
参数列表:
    file: 要操作的文件对象、或者文件名称[路径(相对路径|绝对路径)]
    mode: 操作方式
    t: text,默认操作;文本文件
    b: binary,操作二进制文件
    a: append 追加操作文件
mode操作方式:
    w:write:向文件中写入内容   写的时候只写一个w或r就行,默认后边会加一个t->wt/rt
    r:read:从文件中读取内容
    +:打开一个文件既可以写入数据也可以读取数据

>> f = open("随堂笔记.txt")  f变量~文件对象
>>> dir(f)
[ 'buffer缓存', 'close关闭', 'closed关了吗?', 'detach',
'encoding编码', 'errors错误', 'fileno', 'flush刷新',
'isatty', 'line_buffering', 'mode模式', 'name名称',
 'newlines一行', 'read读取', 'readable可以读取吗?', 'readline读取一行',
  'readlines全部读取每一行作为一个元素的列表',
  'seek跳转指定位置|偏移', 'seekable可以偏移吗?', 'tell',
  'truncate', 'writable可以写入吗?', 'write写数据', 'writelines'写一个列表进入]

案例开发:opend1.py:读取文本文件数据
          opend2.py:向文本文件中写入数据
          opend3.py:拷贝文件底层代码
          系统中的文件:文本文件|二进制文件
          拷贝二进制文件:可能出现问题导致文件损坏!

*********************************
操作系统中的二进制文件:

和文本文件的操作基本没有区别,唯一的区别就是将操作模式mode=r->mode=rb/wb

操作模式b->binary->二进制
    open(file, mode='rb/wb')
    rb:二进制读取文件
    wb:二进制写入文件

注意问题:
如果要操作二进制文件,read()方法使用要慎重
不要直接read()->会造成整个二进制文件会被一次加载到系统内存中
容易造成内存溢出
操作时《需要给read()函数添加一个每次读取数据的缓存每次读取一定的数据

扩展:文件操作:快捷处理方式:with语句,使用with语句不用再手写关闭,它运行完会自动关闭

**********************************
程序中的数据存储:
有独立的数据类型,不能直接按照二进制的方式进行操作
    data_serializer/ds01.py
    TypeError
解决方案:有两种
    1. 通过python提供的标准库,将程序中的数据转换成字符串~进行操作
    2. 通过python提供的标准库,将程序中的数据转换成字节~进行操作


(5)操作程序中的字符串数据[特殊:JSON]
json模块[python提供的标准库]

(6)操作程序中的对象数据[序列化:反序列化]
pickle模块[python提供的标准库]

************************************
os模块和io模块的总结:
总结:文件IO操作

1. 文件操作
    和操作系统交互,python标准库:os、os.path
    提示:dir(os);结合help()完成对os模块中常见函数的熟悉
        dir(os.path) 熟悉os.path模块下常见的函数

    创建文件open、创建一级文件夹mkdir、创建多级文件夹makedirs
    删除文件remove\rmdir\removedirs
    重命名文件:rename
    查看文件信息:getctime()/getatime()/getmtime()/getsize()
                 create     access      modify
    遍历文件:isfile()/isdir()/listdir()/scandir()

2. 文件内容操作
    文本文件内容
        f = open(filename, mode="rt/wt")
        f.write(str)/writelines(list)
        f.read()/readline()/readlines()

    二进制文件内容
        f = open(filename, mode="rb/wb")
        f.write(bytes/bytearray)
        f.read()

    快捷操作:with语句:自动打开和关闭文件
        with open(file, mode="..") as f:
            f.write()/read()

    程序数据内容
        文本文件操作:json:数据类型的转换
            将一个程序中的数据,写入到文本文件中
            json.dump(dict, open(file, mode="r"))
            从文本文件中读取数据到程序中~直接转换成对应的类型
            data = json.load(open(file, mode="w"))

        二进制文件操作:pickle:数据的文件操作
            将程序中的数据,写入到二进制文件中
            pickle.dump(dict, open(file, mode="wb"))
            从二进制文件中读取数据到程序中
            data = pickle.load(open(file, mode="rb"))
***************************************

对比java:jvm虚拟机->jvm屏蔽了系统安全操作,用java并不能直接对系统文件进行操作
但是python是运维出身,Python的解释器->允许Python对系统文件执行危险操作!
所以python对于系统文件的操作权限远远大于java

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值