精华内容
下载资源
问答
  • 应用 Python 解决一些实际问题

    千次阅读 2019-09-11 23:32:09
    原文:http://www.ibm.com/developerworks/cn/linux/tips/l-python/韦建明 (wei@uni-duisburg.de), 德国Duisburg-Essen大学 关于PythonPython 是一种简洁优美的编程语言,它具有面向对象的特...

    原文:http://www.ibm.com/developerworks/cn/linux/tips/l-python/ 
    韦建明 (wei@uni-duisburg.de), 德国Duisburg-Essen大学 

    关于Python 
    Python 是一种简洁优美的编程语言,它具有面向对象的特征,较好的粘合其他语言的能力及跨平台性。然而我认为同样重要的是, 它简单易学,书写代码简洁快速。此外,Python 提供了较多的模快,包含了相当多的功能,所以只要有一个可行的想法,那么用 Python 解决起来会是比较容易的。下面几个例子都源于我遇到的一些实际问题。借助于 Python,这些问题的解决都显得轻而易举。 

    自动删除某些文件 
    某些软件在工作时会自动生成一些备份文件。比如我用 Vim 做文本编辑,用 Autocad 绘图时,这些程序都会自动生成一些备份的文件。随着文件数量的增长,每隔一段时间就要清理一下。当然可以选择手工清理,不过考虑到这些文件是分散在不同的目录下,而且数量比较多,所以手工清理还是有些麻烦。于我写了一个简单的 Python 脚本来自动完成这一任务。下面这段代码扫描D盘下的所有目录,并删除目录下的有关备份文件: 
    from os.path import walk, join, normpath 
    from os import chdir, remove 
    def scan(arg, dirname, names) 
    for file in names: 
    1 if file[-1:]=="~" or file[-4:]==".bak": 
    2 files = normpath(join(dirname,file)) 
    3 chdir(dirname) 
    4 print "deleting", files 
    5 remove(file) 
    6 print "done!" 
    if __name__== "__main__":
    path = chdir('d:\\\\') 
    7 walk(path, scan, 0) 

    对以上代码的简单分析和解释: 
    基本的想法是利用脚本对各个目录进行扫描,对目录下每一个文件进行判断(1句),如果是某个程序生成的备份文件就删除掉(5句)。 
    备份文件的扩展名都有一定的特征,比如 Vim 备份文件的最后一个字符是波浪号~,而 Autocad 的备份则以 bak 结束。这些特征是判断一个文件是否应该被删除的依据。 
    7 句 walk(path, scan, 0) 是一个 Python 的内置函数。用来遍历目录 path。显而易见借助于 Python 提供的这个函数,扫描目录的工作比较轻松地完成了,从而使编程的难度降低许多。 
    最后要说明的一点是,删除某个文件时要知道它的绝对路径而且要在那个文件的所在目录下进行,否则 Python 会提示找不到要处理的文件。2 句得到了文件的绝对路径,3 句 chdir(dirname) 则把当前的目录变成要删除文件的所在目录。 
    回页首 
    提取嵌入在文档中的图像 
    这个问题的提出也是来自实际的需要。 我在阅读与课题有关的各种格式的电子文档时,有时发现包含在文档里面的图像很有用,因为这些图像可以在论文或报告中直接引用, 所以最好能把它们保存下来。 在 Linux 下工作时我用过 Pdfimages,那是一个从 PDF 文档中提取图像的工具。但我希望能找到一个工具可以同时快速处理不同格式的文档,而且能在 Windows 下工作。感 谢 Python,它使我能用比较简单的代码去实现这样一个工具。 
    基本的想法是先读取要处理的文档,然后在其中找到图像部分。因为各种图像在起始部分都包含了自己的标识。比如JPEG图像的标识是JFIF,PNG的是PNG。找到这些标识后读取包含这个图像的相应字节,再把它以二进制格式保存下来.根据这个想法,代码可以分为两部分:寻找图像和保存图像。下面的这两段代码用来从一个PowerPoint文档NORFA_COD.ppt中提取图像,其中第一部分的代码如下: 
    import sys 
    import os 
    import string 
    1 headers=[("JFIF", 6, "jpg"), ("GIF", 0, "gif"), ("PNG", 1, "png")] 
    2 marker=[] 
    3 filename = "d:\\\\article\\\\ppt\\\\NORFA_COD.ppt" 
    try: 
    4 fid = open(filename, 'rb') 
    except: 
    5 sys.exit(1) 
    6 numlin = len(fid.readlines()) 
    7 fid .seek(0) 
    8 i = 0; s = 0 
    9 curlin = fid.readline() 
    while i < numlin: 
    for flag, offset, ext in headers: 
    10 index = string.find(curlin, flag) 
    if index < 0: 
    11 continue 
    else: 
    12 pos = s + index -offset 
    13 marker.append((pos, ext)) 
    14 s = s + len(curlin) 
    15 curlin = fid.readline() 
    16 i += 1 

    以上代码首先把要处理的文件以二进制格式逐行读入(9句),然后在其中寻找有没有包含1句headers里的图像标识。如果没有找到,就读取下一行(11句)。如果发现的话,就把图像的起始位置和标识记录在一个字典marker里(12-13句)。在扫描完整个文档后,可以得到一个包含图像信息的字典marker。 
    有了marker里的信息,就可以进行图像的保存工作了。这部分的代码是: 
    17 fid.seek(0) 
    18 j = len(marker) 
    19 imgnum = 0 
    if j == 0: 
    20 print "No images included in the document" 
    21 sys.exit(1) 
    for i in range(0, j): 
    22 if i == j-1: 
    23 info = marker[i] 
    24 thispos = info[0] 
    25 thisext = info[1] 
    26 nextpos = s 
    27 gap = nextpos - thispos 
    28 fid.seek(thispos) 
    29 data = fid.read(gap) 
    30 imgname = "imgname%02d.%s" % (i, thisext) 
    31 fid1 = open(imgname, 'wb') 
    32 fid1.write(data) 
    33 fid1.close() 
    34 imgnum += 1 
    else: 
    35 info = marker[i] 
    36 thispos = info[0] 
    37 thisext = info[1] 
    38 nextinfo = marker[i+1] 
    39 nextpos = nextinfo[0] 
    40 gap = nextpos - thispos 
    41 fid.seek(thispos) 
    42 data = fid.read(gap) 
    43 imgname = "imgname%02d.%s" % (i, thisext) 
    44 fid1 = open(imgname, 'wb') 
    45 fid1.write(data) 
    46 fid1.close() 
    47 imgnum += 1 
    48 fid.close() 
    49 print "%02d imgaes have benn extracted" % imgnum 

    下面来说明一下如何存储图像。首先注意到虽然定位一个图像的起始位置比较容易,但要确定它的结束位置却比较困难。我用了一个间接的方法来解决这个问题,那就是先读取当前图像的起始位置,至于它的结束位置则取为下一个图像(如果有的话)的起点位置(35-41句); 如果当前的图像是文档中最后的一个,那么结束位置则取为文档的结束位置(23-28句)。这样做的好处是,由于存储的范围是从当前图像的起始位置到下一幅图像的起始位置,这就保证了当前图像可以被完整的保存下来,不用担心它被中途截断。缺点是保存的数据中不仅包括了当前的图像,还有一些其他的内容。也就是说图像中包含了一些冗余的数据,这样就造成了文件的尺寸比图像实际的尺寸要大。当然这不会影响它的浏览,因为图形软件在读取这些文件时会把冗余的部分给截断掉,不过如果想要在自己的论文或报告中引用这些图像的话,最好还是要给它们"�身"一下。方法也很简单,只要用图形软件把这些图像重新保存一遍就可以恢复原来的尺寸了。 
    此外,从上面的代码不难看出,要处理更多种类的图像,只要把有关图像的格式信息添加到headers就可以了. 而被处理的文档可以是任意的格式. 
    回页首 
    调用Matlab绘制保存数据 
    最近我做实验时需要把得到的数据用Matlab绘图并保存下来。一个小问题是原始的数据文件中不仅有数据还有一些注释的部分(注释部分在数据之前,每行以#开头)。直接用Matlab绘图比较麻烦,因为不能直接处理数据,所以或者要把数据单独提取出来,另存成一个文件。或者就要用Matlab写一个过滤文本的程序。不过Matlab处理文本并不是它的强项。 所以这两个办法我都不很满意。Python再次给我提供了解决的方案。一方面Python具有很强的文本处理能力,另一方面Python对Matlab这种交互式的程序提供了直接调用的的途径,所以写一个Python脚本来完成这一任务无疑是比较合适的。下面是实现的代码: 
    import os 
    import string 
    1 filepath = "d:\\\\exp\\\\chgeff_lar_1" 
    2 filename="chgeff_lar_1" 
    3 fid = open(filepath, 'r') 
    4 lines = fid.readlines() 
    5 fid.close() 
    6 x = []; y = [] 
    7 for line in lines: 
    8 if line[0]=="#" or len(line)==1: 
    9 continue 
    10 else: 
    11 xval, yval = string.split(line) 
    12 x.append(float(xval)) 
    13 y.append(float(yval)) 
    14 fid = open(filename+'.m', 'w') 
    15 fid.write(""" 
    16 x = %s 
    17 y = %s 
    18 plot(x, y) 
    19 xlabel('Particle diameter (nm)') 
    20 ylabel('Charging efficiency') 
    21 print -deps %s.eps 
    22 pause(10) 
    23 """ % (x, y, filename)) 
    24 fid.write("exit") 
    25 fid.close() 
    26 cmd = "d:\\\\matlab6p5\\\\bin\\\\win32\\\\matlab.exe -nodesktop -r " + filename 
    27 os.system(cmd) 

    以上6-13句实现两个功能,一是过滤文本(8-9句),通过检查每一行的第一个字符及行的长度,把注释行和空行给去掉。二是把读到的每一行数据自动分配到两个变量x,y中(10-13句)。然后Python把一组Matlab代码(16-24句)写到文件filename.m中。最后利用os模块的system函数调用Matlab绘图及保存(26-27句)。从这个例子也可以看出,Python和其他语言协同工作的能力是比较强的。 
    回页首 
    一些感受 
    Python是一种优美高效的脚本语言。它简单易学,代码的书写也很简洁明了。在完成某些任务时,使用Python可以使你专心于你的问题,而不需要把很多时间花在编程上。借助于Python的众多模块,编程的难度降低了许多, 时间也减少了。我想对于一个普通的用户(比如我)而言,学习一门语言的最终目的是用它来解决实际的问题,提高工作效率。从这个角度说,Python绝对是一个值得考虑的选择。


    转载于:https://my.oschina.net/u/3579120/blog/1508058

    展开全文
  • 巧用python解决实际问题

    千次阅读 2014-04-28 20:09:30
    自动删除某些垃圾文件 某些软件在工作时会自动生成一些备份...使用一个简单python 脚本来自动完成这一任务。下面这段代码扫描D盘下的所有目录,并删除目录下的有关备份文件: from os.path import walk, joi

    自动删除某些垃圾文件

    某些软件在工作时会自动生成一些备份文件。随着文件数量的增长,每隔一段时间就要清理一下。当然可以选择手工清理,不过考虑到这些文件是分散在不同的目录下,而且数量比较多,所以手工清理还是有些麻烦。使用一个简单的 python 脚本来自动完成这一任务。下面这段代码扫描D盘下的所有目录,并删除目录下的有关备份文件:

    from os.path import walk, join, normpath
    from os import chdir,remove

    def scan(arg, dirname, names)
        for file in names:
    1  if file[-1:]=="~" or file[-4:]==".bak":
    2      files = normpath(join(dirname,file))
    3            chdir(dirname)
    4            print "deleting", files
    5            remove(file)
    6            print "done!"

    if __name__== "__main__": 
        path = chdir('d:\')
    7  walk(path, scan, 0)
    对以上代码的简单分析和解释:

    基本的想法是利用脚本对各个目录进行扫描,对目录下每一个文件进行判断(1句),如果是某个程序生成的备份文件就删除掉(5句)。
    备份文件的扩展名都有一定的特征,比如 Vim 备份文件的最后一个字符是波浪号~,而 Autocad 的备份则以 bak 结束。这些特征是判断一个文件是否应该被删除的依据。
    7 句 walk(path, scan, 0) 是一个 python 的内置函数。用来遍历目录 path。显而易见借助于 python 提供的这个函数,扫描目录的工作比较轻松地完成了,从而使编程的难度降低许多。
    最后要说明的一点是,删除某个文件时要知道它的绝对路径而且要在那个文件的所在目录下进行,否则 python 会提示找不到要处理的文件。2 句得到了文件的绝对路径,3 句 chdir(dirname) 则把当前的目录变成要删除文件的所在目录。


    展开全文
  • python简单代码解决生活小问题

    千次阅读 2020-05-22 12:05:31
    主要用到 python 读写文件、.sort()进行排序,代码很简单,用于解决实际问题,代码写的粗糙,大佬们不必深究 out = [] #定义空列表 t = 1 for line in open("in.txt","r",encoding='gbk'): if t < 10: wen = ...

    python简单代码解决生活小问题①

    英文参考文献排序,避免手动太繁琐

    主要用到 python 读写文件、.sort()进行排序,代码很简单,用于解决实际问题,代码写的粗糙,大佬们不必深究

    out = []
    #定义空列表
    t = 1
    for line in open("in.txt","r",encoding='gbk'):
        if t < 10:
            wen = line[3:]
        else:
            wen = line[4:]
        #去除文献标号和空格,[]括号参数可改。建议直接用strip语句
        #wen.strip()
        t = t + 1
        out.append(wen)
        #列表添加元素
    out.sort()
    #默认升序,括号里可加“TRUE”“FALSE”进行调整
    t = 1
    ok = open("out.txt","w",encoding='gbk')
    for line in out:
        line = str(t) + '.\t' + line
        #排序好后再加上序号和空格
        ok.write(line)
        #循环里按行写入
        t = t + 1
    ok.close()
    #记得关闭文件
    

    效果如下,已按照字母升序排列,代替手动的繁琐慢慢弄。中文文献排序也可以参照这个思路,具体实现大家自己动手去解锁叭
    在这里插入图片描述在这里插入图片描述

    展开全文
  • python简单实际应用(一)

    千次阅读 2015-11-02 17:16:38
    python简单实际应用(一) 初步需求:将一整个文件夹各个子目录中所有目标文件的所有对应元素的相同属性名称的不同字段全部取出写到excel表格以供下一步使用。 整体思路:(1)递归出所有目标文件的地址  (2...
    python的简单实际应用(一)
    初步需求:将一整个文件夹各个子目录中所有目标文件的所有对应元素的相同属性名称的不同字段全部取出写到excel表格以供下一步使用。

    整体思路:(1)递归出所有目标文件的地址
                      (2)根据地址取出目标文件的内容
                      (3)匹配取出相同属性的各个字段
                      (4)将取出的内容放到列表中
                      (5)有序去重
                      (6)写到excel中

    遇到困难:(1)初步对python的使用新手,较多时间花费在有什么库可以引用解决上。
                      (2)直接使用easy_install install  xlwt,不能直接下载xlwt,必须先手动下载然后通过cmd快捷安装。
                      (3)pycharm有时反应还是有点慢,在成功安装了xlwt的情况下,一开始import xlwt还是报错,检测不到库,重新开启几次pycharm后报错消除。
                      (4)边写边重构内容,尽量简洁清晰思路。 
                      (5)一开始不会用try去过滤自己不想要的报错内容让他直接跳过,下一步来拿到自己想要的内容。

    代码分析:
     
    excel效果:
     

    部分源码:
    __author__ = 'chenguangwen'

    import os
    import xlwt
    LISTCONTAINER = []

    def main():


    def uniq():
    func = lambda x,y:x if in else x + [y]
    temp = reduce(func, [[], ] + LISTCONTAINER)
    list_content = list(temp)
    return list_content

    def get_text_content(path):
    file_object = open(path,'r+')
    text_content = file_object.readlines()
    for line_content in text_content:
    get_event_name(line_content)
    file_object.close()

    def write_eventname_in_excel(list_content):


    def get_event_name(line_content):
    startStr = 'Event ='
    endStr = 'What'
    try:
    startIndex = line_content.index(startStr)
    if startIndex>=0:
    startIndex += len(startStr)
    endIndex = line_content.index(endStr)
    event_name = line_content[startIndex:endIndex]
    if event_name !='null'and event_name !='':
    LISTCONTAINER.append(event_name.strip())
    except:
    pass

    if __name__ == "__main__" :
    main()





     
    展开全文
  • Python解决数据结构与算法问题(一):Python基础

    万次阅读 多人点赞 2019-09-29 09:51:44
    python学习之路 - 从入门到精通到大师 文章目录[python学习之路 - 从入门到精通到大师](https://blog.csdn.net/TeFuirnever/article/details/90017382)1.7.回顾Python基础1.8.数据入门1.8.1.内置的原子数据类型1.8.2...
  • python解决pip安装问题

    千次阅读 2018-07-20 15:51:30
    今天刚开始学习python,跟同事要了一个免安装的压缩包(实际是他把本地达成rar,直接解压使用了),我习惯使用dos窗口,故配置了环境变量,如何配置环境变量这里就不说了。配置好环境变量后pip命令用不了,提示如下 ...
  • 要本着应用到实际工作中目的去学时间序列分析,才能深入浅出的学会,不要纠结于理论,只听我的,我有信心说明白。 本章内容趋势分析序列分解序列预测序列分解统计学基础铺垫划分时间序列按照季节性划分: 季节性时间...
  • Python读取中文Excel问题解决

    千次阅读 2020-09-15 17:33:23
    Python读取中文Excel问题解决为什么读取中文Excel会出错两个难题试验结果 为什么读取中文Excel会出错 在计算机中,一个字节(byte)有8个比特,即可以表达2^8次方即256个字符,一个英文字母或符号占一个字节,即ASCII...
  • 看起来应该挺简单,直接在控制台下用pip install 模块的名字即可,但是实际上在做的时候,遇到了许多问题,在此列出我遇到的问题解决方案。  使用环境 Windows7+32位+Python2.7.9+开发工具Myeclipse.安装模块为...
  • python-sha1和base64加密实际问题解决

    千次阅读 2018-07-30 23:18:11
    今天笔者分享的是简单的加密破解的方法,主要分享怎样更加简单的查找... 主要需要解决问题如下图所示: 从圈出的可知,密码和作者编码都进行了加密,那么怎么分析这些加密并将其破解出来呢?笔者在这里分享一...
  • Python解决使用 plt.savefig 保存图片时一片空白

    万次阅读 多人点赞 2016-10-24 15:52:08
    问题当使用如下代码保存使用plt.savefig 保存生成的图片时,结果打开生成的...plt.savefig("filename.png")原因其实产生这个现象的原因很简单:在plt.show() 后调用了plt.savefig() ,在plt.show() 后实际上已经创建
  • 解决python的中文字符编码问题

    万次阅读 2018-07-15 17:00:23
    摘要:最近在做自然语言处理相关的项目,发现中文编码的问题实在需要好好学习下,我用python为例,简单介绍下python编程时如何处理好中文编码的问题
  • 问题一:python 2.7版本解决TypeError: ‘encoding’ is an invalid keyword argument for this function。 用Python2.7来打开一些文件的时候,经常出现以上的所表示的问题,如 data_file = open(&amp;amp;...
  • Python解决TSP问题(1)——贪心算法

    万次阅读 多人点赞 2018-06-25 20:27:28
    关于TSP问题网上有很多介绍,这里再简单描述一下。旅行商问题(TravelingSalesmanProblem,TSP)一个商品推销员要去若干个城市推销商品,该推销员从一个城市出发,需要遍历所有城市一次且只能一次,回到出发地。应如何...
  • 解决python print延迟问题

    千次阅读 2014-01-27 23:28:36
    最近写了几个python脚本,在用print输出的时候,都有一个很讨厌的问题,就是print的输出被延迟了,什么情况呢,类似这样 1 import os 2 print ‘first print 3 os.system('./second-print.sh') 在second-print....
  • 日常工作用Python解决哪些问题

    千次阅读 2019-09-27 10:55:12
    Python语言相关的岗位非常多,有运维,有自动化测试,有后端开发,有机器学习,如果想要快速上手,并且有不错的就业,那就推荐数据分析。用Python爬取了深圳不同行业数据...
  • Python 这么简单还用学吗?

    千次阅读 热门讨论 2019-05-30 14:11:10
    近几年,Python 成为编程市场上最流行的语言,学习 Python 的程序员越来越多了,许多人学习 Python 也是为了进入人工智能或者大数据等前沿领域发展。 很多对 Python 不熟悉的人,认为 Python 的兴起只是运气,看看近...
  • 1、环境说明 Windows7,Anconda+Python...安装成功,一切看起来很顺利,但实际上当你运行打包代码的时候,可能出现如下问题 pyinstaller -F test.py AttributeError: 'str' object has no attribute 'items'...
  • Python GIL锁问题探究及解决

    千次阅读 2019-12-18 10:23:58
    1. 什么是GIL? GIL即全局解释器(global interpreter lock)。...这样,在跑python多线程程序时,只有当一个线程获取到全局解释器锁GIL后才能运行,而GIL只有一个,因此即使python应用在多核的情况下也只能发挥...
  • 解决crontab python执行环境不一致问题

    千次阅读 2016-01-21 10:50:09
    遇到一个坑爹的问题,由于crontab python执行环境与普通用户的不一致,导致crontab 执行python总是提示没有缺少必要的包。 google以后发现,crontab ...所以,解决这个问题简单,只需要通过以下命令创建一个软连接
  • 九、Python编程解决组合问题(之二) ----From a high school student's view to learn Python   关键字: python 组合问题 编程 递归 函数 元组 堆栈 列表 combination function recursive tuple list stack...
  • Python里,简单的人脸识别有很多种方法可以实现,依赖于python胶水语言的特性,我们通过调用包可以快速准确的达成这一目的。这里介绍的是准确性比较高的一种。 欲直接下载源代码文件,关注微信公众号:Python联盟,...
  • Python图像识别参考:http://www.th7.cn/Program/Python/201602/768304.shtml ...运用到的模块:python图片识别、Python模拟键盘、Selenium鼠标事件   第一步:在C:\Python27\Lib\site-packages...
  • python生成动态条形图 文章目录 最简单方法!!用python生成动态条形图 1. 安装第三方包: bar_chart_race 2. 数据准备 3. 函数讲解 4. 详细举例(复制即可用) 4.1 基本条形图 4.2 柱状图 4.3 排序图 4.4 限制...
  • python学习之路 - 从入门到精通到大师 文章目录[python学习之路 - 从入门到精通到大师](https://blog.csdn.net/TeFuirnever/article/details/90017382)〇、写在...简单括号匹配3.7.符号匹配3.8.十进制转换成二进制...
  • 遗传算法解决旅行商问题Python版)

    千次阅读 多人点赞 2020-05-05 11:28:56
    遗传算法解决旅行商问题Python版) 一、问题描述 TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他...
  • 原标题:Python数据分析案例实战至今我们网站已经开设了多个数据分析系列的课程,大部分都是基于算法思路来开展的,课程中着重点在于算法的讲授、软件的使用,案例只是辅助学习。然而很多学员反映,希望可以在课程中...
  • 时间序列预测是指我们必须根据时间相关的输入来...特别地,作为RNN的变体的长期短期记忆网络(LSTM)当前正在各种领域中用于解决序列问题。 序列问题的类型 序列问题可以大致分为以下几类: 一对一:其中有一...
  • Python爬虫简单运用爬取代理IP

    万次阅读 2020-06-23 10:02:03
    环境:python3.8+pycharm 库:requests,lxml 浏览器:谷歌 IP地址:http://www.xiladaili.com/gaoni/ 分析网页源码: 选中div元素后右键找到Copy再深入子菜单找到Copy Xpath点击一下就复制到XPath 我们复制下来的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,486
精华内容 78,194
热门标签
关键字:

python解决简单实际问题

python 订阅