zoukankan      html  css  js  c++  java
  • 爱上python(几个小例子)

    1、任务:简单测试局域网中的网络是否连接,ip范围:192.168.2.101到192.168.2.200。

    python 实现代码:

    import subprocess
    cmd="cmd.exe"
    begin=101
    end=200
    while begin<end:
        p=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)
        p.stdin.write("ping 192.168.2."+str(begin)+"
    ")
        p.stdin.close()
        p.wait()
        print "excution result:
    "
        print "%s
    "%p.stdout.read()
        begin=begin+1

    import subprocess 是引进subprocess包,其作用主要是执行外部的命令和程序;
    child.stdin,child.stdout,child.stderr分别是标准输入流,标准输出流,标准错误流;
    在输入流中输入ping ip 回车即是在dos命令符下查看两个计算机之间是否有网络连接的操作,利用stdin.write()实现;
    p.stdin.close()关闭输入流,p.wait()等待子进程p进行完;
    print出运行结果,即p.stdout.read();%在python中有格式化输出的作用,比如:a = 'test'    print 'it is a %s' %(a)    打印结果 it is a test
    begin+1循环。

    简单有效的python就实现了该任务。

    2、删除某个文件夹(删除没有子文件夹的文件,就相当于树的叶子结点)

    1 # -*- coding: utf-8 -*-
    2 import os
    3 ipath='C:\Users\hzj\Desktop\haha'
    4 filepath=unicode(ipath,'utf8')
    5 os.remove(filepath)

    代码很简单,但是删除的时候遇到含中文路径的文件夹就出错,后来加了# -*- coding: utf-8 -*-,即把文件编码类型改为UTF-8的类型,输入这个代码就可以让.py源文件里面有中文了,用unicode()转换一下就好用了,不过这种方法不能删除空的文件夹,下面的方法可以把一个文件夹及其包含的所有子文件夹删除:(删除一个文件,包含子文件的,相当于树的根)

    1 # -*- coding: utf-8 -*-
    2 import shutil
    3 ipath=('c:\Users\hzj\Desktop\删除file')
    4 filepath=unicode(ipath,'utf8')
    5 shutil.rmtree(filepath)

    用shutil.rmtree()方法就能全部删除。而且,用python删除的文件都不会进入回收站。

    清空某个文件夹:(最后只剩下一个空文件夹,树的根)

    1 # -*- coding: utf-8 -*-
    2 import os
    3 ipath="c:\Users\hzj\Desktop\emptyFile"
    4 filepath=unicode(ipath,'utf8')
    5 for root,dirnames,filenames in os.walk(filepath,topdown=False):
    6     for name in filenames:
    7         os.remove(os.path.join(root,name))
    8     for name in dirnames:
    9         os.rmdir(os.path.join(root,name))

    os.walk()函数可以得到三个参数,路径、路径下的文件夹(有子文件的)、路径下的文件,这样循环递归就可以把一个文件清空了,注意os.rmdir()函数只能删除空的文件夹,所以os.walk()函数里面的参数topdown设为False,即由下到上顺序删除文件。先删除子文件,再删除空文件夹。最后只剩下空的主文件夹。

    3、修改文件名称:

    1 # -*- coding: utf-8 -*-
    2 import os,sys
    3 path="c:\Users\hzj\Desktop\file"
    4 newName=unicode('楠楠.txt','utf8')
    5 ipath=unicode(path,'utf8')
    6 files=os.listdir(ipath)
    7 if 'nannan.txt' in files:
    8     os.rename(os.path.join(ipath,'nannan.txt'),os.path.join(ipath,newName))

      1、如果path指定的文件夹不是这个程序所在的目录,rename函数里面的路径就必须是绝对路径,否则就会报“WindowsError: [Error 2]”错误;
      2、os.listdir()函数获取当前文件夹下面的子文件夹名称列表。

    4、修改文件后缀:

     1 # -*- coding: utf-8 -*-
     2 import os,sys
     3 path="c:\Users\hzj\Desktop\file"
     4 ipath=unicode(path,'utf8')
     5 files=os.listdir(ipath)
     6 for name in files:
     7     pos=name.find(".")
     8     if pos>=0:
     9         if name[pos+1:]=="html":
    10             os.rename(os.path.join(ipath,name),os.path.join(ipath,name[:pos+1]+"txt"))

      pos=name.find("."),就是找到字符串name中的"."的位置,比如nannan.txt,pos就是6,和数组一样,下表从0开始,这样name[pos+1:]就是name[7:],就是"txt",name[:pos+1]就是"nannan.",name[1:5]就是"anna",其它同理。
      find()函数如果找不到指定的字符串的话就会返回 ‘-1' 。

    还有一种方式可以同时实现上面的功能,代码如下:

    1 # -*- coding: utf-8 -*-
    2 import os,sys
    3 path="c:\Users\hzj\Desktop\file"
    4 ipath=unicode(path,'utf8')
    5 files=os.listdir(ipath)
    6 for name in files:
    7     li=os.path.splitext(name)
    8     if li[1]==".txt":
    9         os.rename(os.path.join(ipath,name),os.path.join(ipath,li[0]+".html"))

      用到了os.path.splitext()函数,它可以把一个文件名分割成两部分,比如nannan.txt,分割后得到li,li[0]="nannan",li[1]=".txt",所以得到该方法。

    未完待续。。。

  • 相关阅读:
    LLVM生成中间码以及汇编代码
    汇编知识
    delphi 连接 c++ builder 32 生成obj文件
    新知识
    Java的Guid生成
    sql:一对多【转载】
    关于使用js完成购物车计算时的一些问题。
    mysql多条件查询,当某个条件为空时忽略该条件,所有条件为空时查询全部
    转载:获取用户的真实ip地址
    ssh 报错hibernate java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to XXX
  • 原文地址:https://www.cnblogs.com/nannanITeye/p/3188477.html
Copyright © 2011-2022 走看看