python脚本的编写和需要的模块

来源:互联网 发布:经典av 知乎 编辑:程序博客网 时间:2024/06/05 23:46

       看Python已经有一个月了。

       近几天突发奇想,想使用Python来简单地设计一个文件拷贝管理脚本。这个脚本会读取一个指定目录下的所有文件,然后会把这些文件按照输入的参数重新命名为新的文件。目录和新文件的名字都是作为命令给定的。后面会再了解一下wxPython的东西,设计成一个具有良好GUI的软件。

        1、先说说命令行的情况。

        昨天查到像Linux下的命令行参数形式用Python实现起来很简单。首先使用“import sys”调用sys模块,在你的脚本中可以使用sys.argv这个变量可以直接得到输入的参数。sys.argv这个参数是一个列表,它会记录你在命令行中所有的参数。如一个python脚本command_line.py中的代码如下:

           #filename: command_line.py

           import sys

           print sys.argv           #返回一个输入的参数的列表

           print len(sys.argv)    #返回输入的参数的个数

      我们在shell中输入 : python  command_line.py  -h -i infile.txt

      这是打印出来的信息是  :['abc.py', '-h', '-i', 'infile.txt']

      其中,sys.argv[0]对应"abc.py",sys.argv[1]对应"-h",依次类推。是不是很简单呢?呵呵!

      想进一步的把脚本写的更实用一点呢,我们可以再调用Python中的一个模块getopt。改模块中的方法getopt可以带给我们更美妙的处理。在上面的脚本中添加一些新程序如下:

           #filename: command_line.py

           import sys

           print sys.argv           #返回一个输入的参数的列表

           print len(sys.argv)    #返回输入的参数的个数

                  #下面的代码是新添加的

           import getopt

           opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
           print "  The opts is:" 
           print opts                   #opts是一个列表,其中的元素为元祖
           print "  The args is:"
           print args                    #args也是一个列表,其中的元素为字符串

        此时我们运行程序:$python command_line.py -h -i input -o output abc

        程序的运行结果为(仅仅列出了打印opts和args的结果):

            The opts is:  
            [('-h', ''), ('-i', 'input'), ('-o', 'output')]
           The args is:
            ['abc']

      getopt.getopt根据后面括号中的参数返回两个东西,这里我们用两个变量(opts和args)来接受它们。其中getopt.getopt返回的第一个参数为带开关的参数。如 “-i input”会被记录成为一个元祖,即('-i', 'input')。有些命令开关后面不带参数,则记录的元祖中第二个参数就是空字符串,如"-h"被记录成('-h', '')。这些命令开关在getopt方法中必须得给出,括号中的"hi:o:"即我们给定的开关。没有在那个参数位置给出的开关如果被使用会出现错误,可以使用python中的error进行处理。给出第二个参数是记录没有开关的参数。如这里的abc会被记录成一个列表['abc']。

         2、在脚本中使用Linux的shell中的命令

         首先调用os模块。然后在脚本中使用os.system('shell中的命令')来使得shell中的命令可以直接在python脚本中运行。

            import os 

            os.system('ls -l')
            os.system("cp 321.py 1234567.py")

        不这样使用也行。因为在python中的os,os.path两个模块中有大量的方法可以实现如同shell中的各种命令。如os.listdir('home/')会列出home目录下所有的目录和文件,就像使用ls home/的效果一样。

        另外一个模块shutil中有很多方法可以实现对目录和文件的诸如复制、删除等等操作。

        有了这几个模块(sys、getopt、os、os.path、shutil),我的这个脚本的功能便可以很轻松地搞定。更进一步的是对wxPython学习来进行GUI的设计。

        

原创粉丝点击