Python

Python中os和shutil模块
csv文件和ini文件简介

OS模块

  • os.name #windows返回结果是nt,Linux是posix。
  • os.uname() #linux支持显示
  • sys.platform #windows显示win32,linux显示linux
  • os.listdir() #返回目录内容列表
  • os也有open、read、write等方法,但是建议使用内建函数
  • os.stat(path,*,dir_fd=None,follow_symlinks=True)#调用linux系统的stat
    • path:路径的string或者bytes,或者fd
    • follow_symlink=True返回文件本身信息,False且如果是软连接则显示软连接本身
  • 改变文件的属主、属组,但需要足够的权限
    • os.chmod(path,mode,*,dir_fd=None,follow_symlinks=True)
    • os.chown(path,uid,gid)

shutil模块

python中提供的高级文件操作的库shutil

  • copyfileobj(fsrc,fdst[,length])文件对象复制,fsrc和fdst是open打开的文件对象,复制内容。fdst要求可写。length表示buffere的大小
  • copyfile(src,dst,*,follow_symlinks=True)复制文件内容,不包含元数据。src,dst为文件的路径字符串。然而本质上调用就是copyfileobj,所以不带元数据二进制内容复制
  • copymode(src,dst,*,follow_symlinks=True)仅仅复制权限
  • copystat(src,dst,*,follow_symlinks=True)复制元数据,stat包含权限
  • copy(src,dst,*,follow_symlinks=True)复制文件内容、权限和部分元数据,不包括创建时间和修改时间。本质上调用copyfile和copymode
  • copy2比copy多复制了元数据,但需要平台支持。本质调用copyfile和copystat
  • copytree(src,dst,symlinks=False,ignore=None,copy_functions=copy2,ignore_dangling_symlinks=False)递归复制目录。默认使用copy2,也就是带更多的元数据复制。
    • src、dst必须是目录,src必须存在,dst必须不存在
    • ignore=func,提供一个callable(src,names)->ignored_names。提供一个函数,他会被调用。src是源目录,那么谁是os.listdir(src)的结果,就是列出src中的文件名,返回值是要被过滤的文件名的set类型数据。
  • rm删除
    • shutil.rmtree(path,ignore_errors=False,onerror=None)递归删除。如同rm -rf一样危险,慎用。它不是原子操作,有可能删除错误就会中断,已经删除的就删除了。ignore_errors=True,忽略错误;当等于False或者omitted时onerror生效。onerror=callable,接受函数function、path和execinfo。
  • move移动
    • move(src,dst,copy_function=copy2)递归移动文件、目录到目标,返回目标。本身使用的是os.rename方法。如果不支持rename,是目录则像copytree再删除src目录
  • shutil还有打包功能,生成tar并压缩。支持zip、gz、bz、xz。

csv文件

Csv文件简介:全称Comma-Separated Values(逗号分隔值),也叫字符分隔值。它是一个被行分隔符、列分隔符划分成行和列的文本文件,没有指定字符编码。http://www.itef.org/rfc/rfc4180.txt

  • 基本格式
    1. 行分隔符为\r\n,最后一行可以没有分隔符
    2. 列分隔符通常为都好或者制表符
    3. 每一行称为一条记录(record)
    4. 字段可以使用双引号括起来,也可不用。如果字段中出现了双引号、逗号、换行符必须使用双引号括起来。如果字段的值是双引号,使用两个双引号表示一个转义
    5. 表头可以写也可不写,和字段列对齐就行
  • csv模块
    • reader(csvfile,dialect=’excel’,**fmtparams)返回DictReader的实例,是个行迭代器。dellimiter列分隔符”,”逗号;lineterminator行分隔符”\r\n”;quotechar字段的引用符号,缺省为‘”’双引号
      树荫好的处理:
      doublequote双引号的处理,默认为True。如果和quotechar为同一个,True则使用两个双引号表示;False表示使用转义字符将作为双引号的前缀。escapechar一个转义字符,默认为None。quoting制动双引号的规则。QUOTE_ALL所有字段;QUOTE_MINIMAL特殊字符字段;QUOTE_NONNUMRIC非数字字段;QUOte_NONE都不使用引号
    • write(csvfile,dialect=’excel’,**fmtparams)返回DictWriter的实例。主要方法有writerow、writerows。

ini文件处理

作为配置文件,ini文件格式的很流行。

  • 中括号里面的部分称为section。
  • 每一个section内,都是key=value形成的键值对,key称为option选项。
[DEFAULT]
a=test

[mysql]
default-character-set=utf8

[mysqld]
datadir = /dbserver/data
port = 3306
character-set-server = utf8
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

ConfigParser

configparser模块的ConfigParser类就是用来操作ini文件的

  • read(filenames,encoding=None)读取ini文件,可以是单个文件,也可以是文件列表。可以指定文件编码。
  • sections()返回section列表。缺省section不包括在内。
  • add_section(section_name)增加一个section
  • has_section(section_name)判断section是否存在
  • options(section)返回section的所有option
  • has_option(section)判断section是否存在这个option
  • get(section,option,*,raw=False,vars=None[,fallback])从指定的段的选项上去之,如果找到返回,如果没有找到就去default段查看有没有
  • getint(section,option,*,raw=False,vars=None[,fallback])和get方法一样返回指定类型数据。
  • getfloat(section,option,*,raw=False,vars=None[,fallback])和get方法一样返回指定类型数据。
  • getboolean(section,option,*,raw=False,vars=None[,fallback])和get方法一样返回指定类型数据。
  • items(raw=False,vars=None)返回所有section名字及其对象
  • items(section,raw=False,vars=None)返回这个section的键值对组成二元组。
  • set(section,option,value)section存在的情况系啊,写入option=value,要求option、value必须是字符串。
  • remove_section(section)移除section及其所有option
  • remove_option(section,option)移除section下的option
  • write(fileobj,sace_around_delimiters=True)将当前config的所有内容写入fileobj中,一般open函数使用w模式

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/88165

(0)
上一篇 2017-10-30 11:35
下一篇 2017-10-30 20:02

相关推荐

  • 马哥教育网络班21期-第四周课程练习

    Do one thing at a time,and do well. 小僧近期忙的去尿尿的时间都要挤出来…..! 无人能理解 zZzz 复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 编辑/etc/group文件,添加组hadoop。 手动编辑/etc/pass…

    Linux干货 2016-07-29
  • 马哥教育网络第21期-第十二周课程练习

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;并发访问响应模型(Web I/O): //服务器接受客户端的请求 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应; //一个进程只有一个…

    Linux干货 2016-12-26
  • centos启动流程

    1、加电自检(power on system test POST) 加电,就是按下电源键使电脑主机通电,在诸多硬件设备中有一个被称为CMOS设备在计算机启动的过程中起到了至关重要的作用,CMOS在加电之后会启动保存在它上面的BIOS程序,即基本输入输出系统(Basic Input Output System)。自检,主要是检测各…

    Linux干货 2016-09-11
  • Hadoop Hive与Hbase整合+thrift

    1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive与HBas…

    Linux干货 2015-04-13
  • Linux常见发行版本以及Linux哲学思想

    什么是Linux?  Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。  Linux操作系…

    Linux干货 2016-08-15
  • linux发展史

    Linux 发展史 说明 此前对linux认识模糊一知半解,近期通过学习将自己对于linux的发展总结一下方便大家日后的学习。那Linux是目前一款非常火热的开源操作系统,可是linux是什么时候出现的,又是因为什么样的原因被开发出来的呢。以下将对linux的发展历程进行详细的讲解。    目录 一、Linux发展背景 二、UINIX的诞…

    Linux干货 2016-10-14