GVKun编程网logo

Python模块结构与布局操作实例(模块 python)

16

本文将介绍Python模块结构与布局操作实例的详细情况,特别是关于模块python的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于css的结构与布局

本文将介绍Python模块结构与布局操作实例的详细情况,特别是关于模块 python的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于css的结构与布局、CSS结构与布局、Python json模块使用实例、Python 文件读写操作实例详解的知识。

本文目录一览:

Python模块结构与布局操作实例(模块 python)

Python模块结构与布局操作实例(模块 python)

#coding=utf8 
#起始行
#!/usr/bin/env python
#模块文档
''''''
合理的Module布局:
 (1) 起始行(Unix)
(2) 模块文档
(3) 模块导入
(4) 变量定义
(5) 类定义
(6) 函数定义
(7) 主程序
-----------------------------
(1) 起始行(Unix)
通常只有在类Unix环境下才使用起始行,有起始行可以输入脚本名来执行脚本。
(2) 模块文档
简要介绍模块功能及重要全局变量的含义,模块外可以通过module.__doc__访问这些内容。
(3) 模块导入
导入当前模块的代码需要的所有模块;每个模块仅导入一次;
函数内部的模块导入代码不会被执行,除非该函数正在执行。
(4) 变量定义
这里定义的变量为全局变量,本模块中的所有函数都可以直接使用。
尽量使用局部变量代替全局变量,这样不但容易维护,还可以提高性能并节省内存。
(5) 类定义
所有的类需要在这里定义。当模块被导入时class语句会被执行,类也会被定义。
类的文档变量是class.__doc__
(6) 函数定义
此处定义的函数可以通过module.function()在外部被访问到,当模块被导入时def语句会被执行,
函数也就会定义好,函数的文档变量是function.__doc__
(7) 主程序
无论这个模块使被别的模块导入还是作为脚本直接执行,都会执行这部分代码。
通常这里不会有太多功能性代码,而是根据执行的模式调用不同的函数。
''''''
#导入模块
import sys
import time
from scrapy.utils import job
#定义变量
flag=1
#类定影
class Person(object):
    ''''''
    Person class
    set person name、sex、age、job
    output the person information
    ''''''
    def __init__(self):
        self.name=''''
        self.sex=''''
        self.age=18
        self.job=''''
        
    def setName(self,name):
        self.name=name
        
    def setSex(self,sex):
        self.sex=sex
    
    def  setAge(self,age):
        self.age=age
    
    def setJob(self,job):
        self.job=job
    
    def outPut(self):
        print ''''''
        name:%s
        sex:%s
        age:%d
        job:%s
        ''''''  %(self.name,self.sex,self.age,self.job)
    
#函数定义
def test():
    ''''''
    test function
    ''''''
    if flag:
        print ''''''
        run test()
        ''''''
        person=Person()
        person.setName("ewang")
        person.setAge(25)
        person.setSex("famale")
        person.setJob("big data testing")
        person.outPut()
#主程序  
#如果模块使被导入,__name__的值为模块名字
#如果模块使被直接执行,__name__的值为''__main__''     
if __name__==''__main__'':
    test()

css的结构与布局

css的结构与布局

1.自适应内部元素

在css中,不给元素一个height值时,元素会自适应其内部的元素高度,有时我们想让元素的宽度也达到此效果,应用场景如下。

如下当前的这种布局,想要改成最外层的div的宽度由当前的图片撑开的效果,这时就要用到min-content这个属性值。

clipboard.png

css代码如下:

div {
    /*只需要给最层的div的宽度值设置成min-content即可 */
    width: min-content;
}

最终效果:

clipboard.png

min-content将解析这个容器内部最大的不可断行元素的宽度(即最宽的单词,图片或具有固定宽度的盒元素)

张鑫旭有一篇文章对这个属性做了详细的讲解,地址如下:
http://www.zhangxinxu.com/wor...

2.精确的控制表格的列宽

在使用表格布局时,当表格的内容不确定时,布局很难预测,因为表格的列宽是根据它的内容进行计算的,即使显示的设置了width,也不会生效,还是会根据它的内容生成宽度。会根据加载的内容不停的重绘,直到加载完。
平时生成的表格如下:

clipboard.png

为了让设置的宽度生效,并且能让过多的文字省略号显示,解决办法就是使用table-layout: fixed这个样式
代码如下:

table {
    table-layout: fixed;
    width: 100%; /*必须指定一个width,否则不生效*/
}

最终的效果如下:

clipboard.png

3.根据兄弟元素的数量设置样式

在一些应用场景中,我们可能需要根据元素的数量来设置样式,比如说列表越来越长的时候,我们可能需要调整间隔或者大小,来减少长度,提升用户的体验
例如当列表项中共有4项的时候,选中所有列表,可以通过使用scss这种预处理器,编写mixin
代码如下:

/*定义mixin*/
@mixin n-items($n) {
  &:first-child:nth-last-child(#{$n}),
  &:first-child:nth-last-child(#{$n}) ~ & {
    @content;
  }
}

/*调用方法*/
li {
/*当列表正好包含四项时 命中所有列表项*/
/*定义样式*/
  @include n-items(4) {
    width: 40px;
    height: 100px;
    background: red;
    float: left;
    margin: 10px;
  }
}

效果如下:

clipboard.png

4.根据兄弟元素的数量范围匹配元素

应该场景同上,解决办法也是编写mixin
例如,当列表的总数是4或者更多时,选中所有列表项
代码如下:

/*定义mixin*/
@mixin n-items($n) {
  /*当列表的总数是4或者更多时,选中所有列表项*/
  &:first-child:nth-last-child(#{$n + 4}),
  &:first-child:nth-last-child(#{$n + 4}) ~ & {
    @content;
  }
}

// 改写成 -n + 4 表示列表中有4个或者小于4时,选中所有

// 同理,如2 ~ 6时,设置 n + 2 ~ -n + 6
@mixin n-items($n) {
  &:first-child:nth-last-child(#{$n + 2}):nth-last-child(#{$ -n + 6}),
  &:first-child:nth-last-child(#{$n + 2}):nth-last-child(#{$ -n + 6}) ~ & {
    @content;
  }
}

5.满幅的背景,定宽的内容

页面上有很多布局是那种内容是固定宽的,背景是占满整个视口的宽的,比如下面这种布局:

clipboard.png
实现方式有很多种,一般我们实现的代码结构都是这种的:

<footer>
    <div>
    </div>
</footer>

/* css样式*/
footer {
    background: "#333";
}
.wrapper {
    max-width: 900px;
    margin: 1em auto;
}

其中margin: 1em auto;就是为了让内容div居中,我们有一种更好的方式,只用一层DOM结构实现上面的布局,就是使用calc这个属性。
实现代码如下:

<footer>
  /* 内容 */
</footer>

/* css样式*/
footer {
    background: "#333";
    /* 当浏览器不支持calc的时候回退一下*/
    padding: 1em;
    padding: 1em calc(50% - 450px);
}

原理:百分比是按照视口的宽度来解析的,所以即使里面的内容不设置宽,也会给里面的内容留出 450*2的空间,达到了之前设置 max-width: 900px;的效果。

6.垂直居中

在css中水平居中比较简单,对于行级元素,对它的父元素使用text-align: center;对于块级元素,就对它自身使用margin: auto;对于垂直居中比较难处理,目前的解决方法有:

1.基于绝对定位的方法

(1) 当元素是定宽高的时候:

div {
    width: 200px;
    height: 100px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -100px;
}

通过calc代码可以简化成下面这样:

div {
    width: 200px;
    height: 100px;
    position: absolute;
    top: calc(50% - 50px);
    left: calc(50% - 100px);
}

(2) 对于那些宽高不定的元素,实现方法如下:

div {
    position: absolute;
    top: 50%;
    left: 50%;
    transfrom: translate(-50%, -50%);
}

以上方案也有一个弊端就是必须是绝对定位的元素。

2.基于视口单位的方法

css3中定义了一些视口相关的单位:

  • vw 是与视口宽度相关的。1vw 实际上表示视口宽度的1%,而不是100%。
    „

  • 同样,1vh表示视口高度的 1%

  • 当视口宽度小于高度时,1vmin等于 1vw,否则等于 1vh。

  • 当视口宽度大于高度时,1vmax等于 1vw,否则等于 1vh。
    所以我们的垂直居中可以这样实现:

div {
    width: 200px;
    padding: 2px 4px;
    margin: 50vh auto 0;
    transform: translateY(-50%);
}
**注:这里不使用50%,而是视口单位的原因是,margin的百分比是以父元素的宽度作为解析基准的,不论是margin-top or margin-left**

这种的方法是有局限性的,只能用在视口中居中的场景。

3.基于flex的方法

这种应该算是最佳的解决办法:
实现方法:

body {
    display: flex;
}

div {
    margin: auto;
}

当使用flex布局时,使用margin: auto; 在水平和垂直方向都会居中。在不指定width的情况下,width: max-content;

flexbox还有一个公共就是可以将匿名的容器(就是那些没有被标签包住的文本节点)垂直居中:

<div>text</div>

div {
    width: 100px;
    height: 50px;
    display: flex;
    align-items: center;
    justify-content: center; 
}

7.紧贴底部的页脚

具有块级样式的页脚,当页面内容足够长的时候,页脚会紧贴视口的底部;但是当页面内容的长度 < 视口height - 页脚height的时候,页脚就会紧贴在内容的下面。一般的设计是给页脚一个固定的height,这种显然不健壮,在css3中有更好的解决方案。

(1) 最原始的固定高度的解决方案

html结构如下:

<header>
    <h1>hello</h1>
</header>
<main>
    <p>this is ...</p>
</main>
<footer>
    <p>Made in ...</p>
    <p>Made in ...</p>
</footer>

header {
    height: 10px
}
footer p {
    line-height: 1.5px;
    padding: 1px;
    margin: 1px;
}

假设当前的页脚文字永远不会折行,可以计算当前的页脚的高度是:2 * 行高 + 3 * 段落垂直外边距 + 页脚垂直内边距 = 2 * 1.5px + 3 * 1px + 1px = 7px;

main {
    min-height: calc(100vh - 7px - 10px);
    /* 避免内边距或外边距对高度记得算影响 */
    border-sizing: border-box;
}

当header和main放在一个div里时,css样式可以直接写成 div{min-height: calc(100vh - 7px)};
这种方法的局限性是不允许文字折行,并且布局是这种简单的布局,并且每当页脚的尺寸变化时,都需要跟着调整min-height的值。

(2)基于flex的解决方案

body {
    display: flex;
    flex-flow: columm;
    min-height: 100vh; /* 至少会占据整个视口的高度 */
}

main {
    flex: 1;
}

CSS结构与布局

CSS结构与布局


title: 结构与布局
date: 2016-12-11
tags: CSS Secrets


0x00 min-content 宽度自适应

CSS3 新增宽度属性值 width:min-content 可以将容器的宽度值设置为容器内最大的不可断行的宽度(最宽的单词,图片,或者具有固定宽度的盒元素)

figure{
    width:min-content;
    margin: auto;    
}

0x01 根据兄弟元素的数量来设置样式

我们知道伪元素选择器 :only-child,其实,它可以等效于:first-child:last-child,即是第一项的同时也是最后一项,所以从逻辑上来讲它是唯一的。而:last-child 也是:nth-last-child(1)的快捷写法。

那么接下来思考一个问题,li:first-chidl:nth-last-child(4) 代表什么?结果是 _一个正好有四个列表项的列表中的第一项_,ok,再结合兄弟选择符~来命中它之后的每一项,就可以达到这样一个目标在正好包含四个列表项的时候,命中它的每一项

li:first-child:nth-last-child(4),
li:first-child:nth-last-child(4) ~ li {
  
    background: red;
}

结合 SASS,将其简化复用

/*定义混合器*/
@mixin n-items($n){
    &:first-child:nth-last-child(#{$n}),
    &:first-child:nth-last-child(#{$n}) ~ &{
        @content;
    }
}

/*调用*/
li {
    @include n-items(4){
        /*属性与值写在这里*/
        background: red;
    }
}

:nth-child()

nth-child()的强大之处在于以接受an+b形式的表达式,那么自然便可以使用其变种 nth-child(n+4) 这种形式,它将会选择除了第1,2,3个子元素之外的所有子元素。

ul li:first-child:nth-last-child(n+4),
ul li:first-child:nth-last-child(n+4) ~ li{
    /*当列表中至少包含四项时,命中包括该项之后的所有列表项*/
}

当然,不止于此,:nth-child()的玩法完全取决于你的脑洞。


0x02 calc

有时,若需要去实现一个 背景宽度满屏,内容宽度固定 的布局,也许我们会去这样设计 DOM 结构

<footer>
    <div>        
    </div>
</footer>

CSS 样式:

footer{
    background: #333;
}

.wrapper{
    max-width: 900px;
    margin: 1em auto;
    height: 200px;
}

使用 calc() 方法以后,就不必如此麻烦了,我们只需三行代码即可实现:

footer{
  background:#333;
  padding:1em calc(50% - 50px);
 }

使用了 clac() 便可以在 CSS 中进行简单的算术运行,这使得 DOM 结构变得非常简洁,没有任何的冗余,当然,缺点也是显而易见的,这里的代码只会在 footer 元素的父级超过 900 px 才会看出效果。

calc() 中的百分比是基于其父级进行解析的

但,我们初次了解到了CSS3 中cacl() 这个魔法技巧。


0x03 垂直居中


基于绝对定位的解决方案

CSS 中有一个很常见的现象,真正的解决方法往往来自于我们最意想不到的地方。比如,可以结合 positon:absolutetransform:translate() 属性来实现垂直居中

因为 translate() 变形函数中的百分比是根据这个元素自身的宽度和高度为基准进行换算的,如此一来,便可以彻底解除对固定尺寸的依赖。

示例:DOM 结构

<body>
    <div>
        <h1>Am i center?</h1>
        <p>Center me ,please!</p>
    </div>
</body>

CSS代码:

.main{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

position-transform垂直居中

不过,该方法也是存在不足的:
1.在某些浏览器中,可能会导致模糊显示,因为元素有可能被放置在半个像素上。
2.在并不适合使用绝对定位的情况下。而且绝对定位对整个布局的影响也太过强烈。


基于 FlexBox 的解决方案

毫无疑问,这算是目前最佳的解决方案了。并且,现代浏览器对 FlexBox 的支持已经相当高了。

对基于 FlexBox 容器的 items 使用 margin:auto 不仅可以在水平方向方居中,垂直方向上亦是如此,即使不指定任何宽度,因为这个元素分配到的宽度等于 max-content.

FlexBox垂直居中,完美!

FlexBox 的另一个好处是可以文本也进行垂直居中, 只需对使用display:flex 的元素添加 align-items:centerjustify-content:center

.main{
    background: deeppink;
    width: 50%;
    height: 50%;
    margin: auto;
    display: flex;
    align-items: center;
    justify-content: center;
}

FlexBox文本居中


0x04 紧贴底部的页脚

有时,我们期望页头和页脚的高度由其内部因素来决定,而内容区块的高度可以自动收缩并占满所有可用的空间。同样,利用 FlexBox 这很容易。

body {
    min-height: 100vh;
    display:flex;
    flex-flow: column;

    header{
        /*heaer style*/
    }
    
    .main{
        flex:1;
    }

    footer{
        /*footer style*/
    }
}

我们给了 body 一个 min-height:100vh 的高度这样它至少会占据整个视口的高度,然后赋予 main 一个大于 0 的 flex 值就可以了。

问题:如果页脚是固定在屏幕的底部的呢?如何解决当页面滚动到最后的时候保证页脚不会覆盖内容区?

对于这个问题,纯属个人想法,可以在 footer 之后添加一个 div#_footer

此时的 DOM 结构如下:

<body>
    <header><header>
    <div></div>
    <footer></footer>
    <div id="_footer"></div>
</body>

而对于 div#_footer 而言,不需要为其中添加任何的内容和样式,只需要它的高度等于 footer 的高度就可以了,而对于这点,使用 jQuery 就可以轻松搞定。

$(''#_footer'').height($(''footer'').height())

如此,对于响应布局也可以不用担心了,虽然有点点hack,但也算完美的解决了,Bingo!

Python json模块使用实例

Python json模块使用实例

实际上json就是python字典的字符串表示,但是字典作为一个复杂对象是无法直接传递,所以需要将其转换成字符串形式.转换的过程也是一种序列化过程.

用json.dumps序列化为json字符串格式

>>> import json
>>> dic {&#39;Connection&#39;: [&#39;keep-alive&#39;], &#39;Host&#39;: [&#39;127.0.0.1:5000&#39;], &#39;Cache-Control&#39;: [&#39;max-age=0&#39;]}
>>> jdict = json.dumps({&#39;Connection&#39;: [&#39;keep-alive&#39;], &#39;Host&#39;: [&#39;127.0.0.1:5000&#39;], &#39;Cache-Control&#39;: [&#39;max-age=0&#39;]})
>>> print jdict
{"Connection": ["keep-alive"], "Host": ["127.0.0.1:5000"], "Cache-Control": ["max-age=0"]}
登录后复制

虽然dic和jdict打印的字符串是相同的,但是实际它们的类型是不一样的.dic是字典类型,jdict是字符串类型

<type &#39;dict&#39;>
>>> type(jdic)
>>> type(jdict)
<type &#39;str&#39;>
登录后复制

可以用json.dumps序列化列表为json字符串格式

>>> list = [1, 4, 3, 2, 5] 
>>> jlist = json.dumps(list)
>>> print jlist
[1, 4, 3, 2, 5]
登录后复制

list和jlist类型同样是不一样的

立即学习“Python免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

>>> type(list)
<type &#39;list&#39;>
>>> type(jlist)
<type &#39;str&#39;>
登录后复制

json.dumps有如下多种参数

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
登录后复制

key排序

>>> print json.dumps({1:&#39;a&#39;, 4:&#39;b&#39;, 3:&#39;c&#39;, 2:&#39;d&#39;, 5:&#39;f&#39;},sort_keys=True)
{"1": "a", "2": "d", "3": "c", "4": "b", "5": "f"}
登录后复制

格式对齐

>>> print json.dumps({&#39;4&#39;: 5, &#39;6&#39;: 7}, sort_keys=True, indent=4)
{
    "4": 5, 
    "6": 7
}
登录后复制

指定分隔符

>>> json.dumps([1,2,3,{&#39;4&#39;: 5, &#39;6&#39;: 7}], separators=(&#39;,&#39;,&#39;:&#39;))
&#39;[1,2,3,{"4":5,"6":7}]&#39;
登录后复制

用json.dump序列化到文件对象中

>>> json.dump({&#39;4&#39;: 5, &#39;6&#39;: 7}, open(&#39;savejson.txt&#39;, &#39;w&#39;))
>>> print open(&#39;savejson.txt&#39;).readlines()
[&#39;{"4": 5, "6": 7}&#39;]
登录后复制

json.dump参数和json.dumps类似

json.dump(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
登录后复制

json.loads把json字符串反序列化为python对象

函数签名为:

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
登录后复制

注意这里的”s”必须是字符串,反序列化后为unicode字符

>>> dobj = json.loads(&#39;{"name":"aaa", "age":18}&#39;)
>>> type(dobj)
<type &#39;dict&#39;>
>>> print dobj
{u&#39;age&#39;: 18, u&#39;name&#39;: u&#39;aaa&#39;}
登录后复制

json.load从文件中反序列化为python对象

签名为:

json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
登录后复制

实例:

>>> fobj = json.load(open(&#39;savejson.txt&#39;))
>>> print fobj
{u&#39;4&#39;: 5, u&#39;6&#39;: 7}
>>> type(fobj)
<type &#39;dict&#39;>
登录后复制

更多Python json模块使用实例相关文章请关注PHP中文网!

Python 文件读写操作实例详解

Python 文件读写操作实例详解

Python提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用file对象做大部分的文件操作

一、python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法。
1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
2.返回指定目录下的所有文件和目录名:os.listdir()
3.函数用来删除一个文件:os.remove()
4.删除多个目录:os.removedirs(r"c:\python")
5.检验给出的路径是否是一个文件:os.path.isfile()
6.检验给出的路径是否是一个目录:os.path.isdir()
7.判断是否是绝对路径:os.path.isabs()
8.检验给出的路径是否真地存:os.path.exists()
9.返回一个路径的目录名和文件名:os.path.split()     
例子:

复制代码代码如下:
os.path.split(''/home/swaroop/byte/code/poem.txt'') 结果:(''/home/swaroop/byte/code'', ''poem.txt'')


10.分离扩展名:os.path.splitext()
11.获取路径名:os.path.dirname()
12.获取文件名:os.path.basename()
13.运行shell命令: os.system()
14.读取和设置环境变量:os.getenv() 与os.putenv()
15.给出当前平台使用的行终止符:os.linesep    Windows使用''\r\n'',Linux使用''\n''而Mac使用''\r''
16.指示你正在使用的平台:os.name       对于Windows,它是''nt'',而对于Linux/Unix用户,它是''posix''
17.重命名:os.rename(old, new)
18.创建多级目录:os.makedirs(r"c:\python\test")
19.创建单个目录:os.mkdir("test")
20.获取文件属性:os.stat(file)
21.修改文件权限与时间戳:os.chmod(file)
22.终止当前进程:os.exit()
23.获取文件大小:os.path.getsize(filename)
二、文件操作方法大全
1.os.mknod("test.txt")        创建空文件
2.fp = open("test.txt",w)     直接打开一个文件,如果文件不存在则创建文件
3.关于open 模式:

复制代码代码如下:
w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )


fp.read([size])                     #size为读取的长度,以byte为单位
fp.readline([size])                 #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size])                #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.write(str)                       #把str写到文件中,write()并不会在str后加上一个换行符
fp.writelines(seq)                  #把seq的内容全部写到文件中(多行一次性写入)。这个函数也只是忠实地写入,不会在每行后面加上任何东西。
fp.close()                          #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。  如果一个文件在关闭后还对其进行操作会产生ValueError
fp.flush()                          #把缓冲区的内容写入硬盘
fp.fileno()                         #返回一个长整型的"文件标签"
fp.isatty()                         #文件是否是一个终端设备文件(unix系统中的)
fp.tell()                           #返回文件操作标记的当前位置,以文件的开头为原点
fp.next()                           #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的。
fp.seek(offset[,whence])            #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
fp.truncate([size])                 #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
三、目录操作方法大全
1.创建目录
os.mkdir("file")                   
2.复制文件:
shutil.copyfile("oldfile","newfile")        #oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile")            #oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
3.复制文件夹:
4.shutil.copytree("olddir","newdir")        #olddir和newdir都只能是目录,且newdir必须不存在
5.重命名文件(目录)
os.rename("oldname","newname")              #文件或目录都是使用这条命令
6.移动文件(目录)
shutil.move("oldpos","newpos")   
7.删除文件
os.remove("file")
8.删除目录
os.rmdir("dir")                             #只能删除空目录
shutil.rmtree("dir")                        #空目录、有内容的目录都可以删
9.转换目录
os.chdir("path")                            #换路径
四、文件综合操作实例
将文件夹下所有图片名称加上''_fc''
python代码:

复制代码代码如下:
# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字符串
#''连接符''.join(list) 将列表组成字符串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目录与文件
        lists = file_path[1].split(''.'') #分割出文件与文件扩展名
        file_ext = lists[-1] #取出后缀名(列表切片操作)
        img_ext = [''bmp'',''jpeg'',''gif'',''psd'',''png'',''jpg'']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+''/''+lists[0]+''_fc.''+file_ext)
            i+=1 #注意这里的i是一个陷阱
        #或者
        #img_ext = ''bmp|jpeg|gif|psd|png|jpg''
        #if file_ext in img_ext:
        #    print(''ok---''+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路径处理上很有用

 

img_dir = ''D:\\xx\\xx\\images''
img_dir = img_dir.replace(''\\'',''/'')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print(''程序运行耗时:%0.2f''%(c))
print(''总共处理了 %s 张图片''%(i))


输出结果:

复制代码代码如下:
程序运行耗时:0.11
总共处理了 109 张图片

今天的关于Python模块结构与布局操作实例模块 python的分享已经结束,谢谢您的关注,如果想了解更多关于css的结构与布局、CSS结构与布局、Python json模块使用实例、Python 文件读写操作实例详解的相关知识,请在本站进行查询。

本文标签: