一、文件操作

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Thu Apr 23 20:59:49 2020
  5.  
  6. @author: root
  7. """
  8.  
  9. import os
  10. import fnmatch
  11.  
  12. # example
  13. for f_name in os.listdir('/tmp/some_directory'):
  14. if fnmatch.fnmatch(f_name, '*.txt'):
  15. print (f_name)
  16.  
  17. # 例如,在UNIX shell中使用 mv *.py python_files 移动所有 .py 扩展名 的文件
  18. # 从当前目录到 python_files 。这 * 是一个通配符表示任意数量的字符,*.py
  19. # 是一个全模式。Windows操作系统中不提供此shell功能。
  20. # 但 glob 模块在Python中添加了此功能,使得Windows程序可以使用这个特性。
  21. # 这里有一个使用 glob 模块在当前目录下查询所有Python代码文
  22.  
  23. import glob
  24. print (glob.glob('*.py'))
  25.  
  26. for name in glob.glob('*[0-9]*.txt'):
  27. print (name)
  28.  
  29. import os
  30. # data_file = '/tmp/some_directory/demo1.txt'
  31. # if os.path.is_file(data_file):
  32. # os.remove(data_file)
  33. # else:
  34. # print (f'Error: {data_file} not a valid filename')
  35.  
  36. # f = open('/tmp/some_directory/demo1.txt','rb+')
  37. # print(f.read()) ##直接打印出来
  38. # print(f.readline()) ##打印第一行
  39. # print(f.readlines())
  40. # print(f.readline(),end='')
  41. # print(f.readlines(),end='')
  42. # print([line.strip() for line in f.readlines()])
  43. # f.write('python 8888888888')
  44. # f.close()
  45.  
  46. import string
  47. import random
  48. def create_mac():
  49. mac='01-AF-3B'
  50. for i in range(3):
  51. n=random.sample(string.hexdigits,2)
  52. sn='-'+''.join(n).upper()
  53. mac+=sn
  54. return mac
  55.  
  56. with open('\tmp\some_directory\demo9.txt','w+') as f:
  57. for i in range(100):
  58. mac=create_mac()
  59. print (mac)
  60. f.write(mac+'\n')
  61. f.close()
  62.  
  63. with open('\tmp\some_directory\demo9.txt') as f:
  64. #使用这种文件的打开方式更加简单了,同时可以避免忘记关闭文件的情况
  65. print('9999999999999999',f.read())

  1. 在现代Python版本中,可以使用 os.scandir() pathlib.Path 来替代 os.listdir()
  2.  
  3. os.scandir() Python 3.5 中被引用,其文档为 PEP 471
  4.  
  5. os.scandir() 调用时返回一个迭代器而不是一个列表。
  6.  
  7. import os
  8. entries = os.scandir('my_directory')
  9. print(entries)
  10.  
  11. ScandirIterator 指向了当前目录中的所有条目。你可以遍历迭代器的内容,并打印文件名。
  12.  
  13. import os
  14. with os.scandir('my_directory') as entries:
  15. for entry in entries:
  16. print(entry.name)

案例:

第一步:在本機的 /tmp/some_directory/  目錄下建 test1.txt  、 test2.txt

代碼:

  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Fri Apr 24 23:13:49 2020
  5.  
  6. @author: root
  7. 有两个文件,每个都有很多行ip地址,求出两个文件中相同的ip地址
  8. 要点就是:(1)用with (2)处理行末的'\n' (3)使用二分查找提高算法效率。(4)使用set快速去重。
  9. """
  10.  
  11. import bisect
  12. b= open('/tmp/some_directory/demo9.txt', 'w')
  13. with open('/tmp/some_directory/test1.txt','r') as f1:
  14. list1=f1.readlines()
  15. print (list1)
  16. for i in range(len(list1)):
  17. list1[i]=list1[i].strip('\n')
  18.  
  19. with open('/tmp/some_directory/test2.txt','r') as f2:
  20. list2=f2.readlines()
  21. print (list2)
  22. for i in range(len(list2)):
  23. list2[i]=list2[i].strip('\n')
  24.  
  25. list2.sort()
  26. l_2=len(list2)
  27. same_data=[]
  28. for i in list1:
  29. pos = bisect.bisect_left(list2, i)
  30. if pos<len(list2) and list2[pos]==i:
  31. same_data.append(i)
  32. b.write(i+'\n')
  33. same_data=list(set(same_data))
  34. print (same_data)

流暢的python學習-3的更多相关文章

  1. [Python學習筆記] 使用xlwings 插入註解 (forked 版本)

    到今天為止 xlwings 還沒有插入註解的功能 去原始開發者的 Github Pull Requests 他說之前有人有建議要加入這個功能 但他還沒更新~ 如果需要使用 Python 來插入註解的話 ...

  2. python 學習深淺拷貝、集合、、作用域、函數

    python 學習深淺拷貝.集合..作用域.函數 2020開年新冠肺炎流行大部分人員.工廠.單位無法復工生產,人員隔離每天外出都要戴口罩,在家隔離期間悶壞了感覺把半年的口糧都幹掉了,嚴重考察大家的資本 ...

  3. [Python學習筆記] 利用 Python在Excel 插入註解

    用Python 來處理excel 檔 用過了 openpyxl 還有 pyexcel目前覺得除了讀寫如果還要使用另外的功能 (像是讀取格子裡的公式)可以用 xlwings  他的首頁標題 " ...

  4. [Python學習筆記] 抓出msg信件檔裡的附件檔案

    想要把msg信件檔案的附件抓出來做處理,找到了這個Python 模組 msg-extractor 使用十分容易,但是這個模組是要在terminal裡執行,無法直接打在IDLE的編輯器上 所以稍微做了修 ...

  5. [Python學習筆記] 在Centos上安裝 Django

    曾在模擬器跟Digital Ocean上安裝成功,我在 Digital Ocean上的是CentOS 7 x64,模擬器的則是Centos 6.雖然Centos 本身已經裝好 Python 但是是2. ...

  6. [Python學習筆記] 使用 selenium 抓取網頁並且雙擊滑鼠 (double click)

    一開始使用的時候 看官方文件 以為使用 double_click()即可 但後來出現錯誤 AttributeError: 'WebElement' object has no attribute 'd ...

  7. 無心插柳的Linux學習者代言人——蔡德明

    誰是「蔡德明」恐怕沒有多少人知道,不過提到「鳥哥」這個稱號,在臺灣的Linux社群幾乎是無人不知無人不曉,蔡德明正是鳥哥的本名.鳥哥究竟多有名? 如果你是有意學習Linux的初學者,卻不知如何下手,1 ...

  8. RxSwift學習教程之基礎篇

    前言 我們在 iOS 開發過程中,幾乎無時無刻都要面對異步事件的處理.例如,按鍵點擊.數據保存..音頻後臺播放.交互動畫展示.這些事件並不具備特定時序性,甚至它們可能同時發生. 雖然 Apple 提供 ...

  9. 基於tiny4412的Linux內核移植--- 中斷和GPIO學習(3)

    作者 彭東林 pengdonglin137@163.com 平臺 tiny4412 ADK Linux-4.4.4 u-boot使用的U-Boot 2010.12,是友善自帶的,爲支持設備樹和uIma ...

随机推荐

  1. 『无为则无心』Python基础 — 3、搭建Python开发环境

    目录 1.Python开发环境介绍 2.Python解释器的分类 3.下载Python解释器 4.安装Python解释器 5.Python解释器验证 1.Python开发环境介绍 所谓"工欲 ...

  2. Manacher(马拉车)————O(n)回文子串

    Manacher 一.背景 1975年,Manacher发明了Manacher算法(中文名:马拉车算法),是一个可以在O(n)的复杂度中返回字符串s中最长回文子串长度的算法,十分巧妙. 让我们举个栗子 ...

  3. 【odoo14】【开发侧】权限配置

    欢迎转载,但需标注出处,谢谢! 说明: 本文面向开发人员,普通用户可参考[odoo14][用户侧]权限配置.文章结构与用户侧一致. 目录 一. odoo中的对象 二. 权限控制 2.1 实现原理 2. ...

  4. Jenkins 进阶篇 - 节点配置

    当我们使用 Jenkins 构建的项目达到一定规模后,一个 Jenkins 服务可能承受不了负载,会导致很多的构建任务堆积,严重的话还会拖垮这台服务器,导致上面的服务无法使用.例如我们公司目前在 Je ...

  5. 『无为则无心』Python基础 — 14、Python流程控制语句(while循环语句)

    目录 1.什么是循环结构 2.while循环 (1)while循环的语法 (2)while循环的应用 3.while语句的死循环 4.break和continue 5.while循环嵌套 (1)应用场 ...

  6. ASP.Net Core Configuration 理解与源码分析

    Configuration 在ASP.NET Core开发过程中起着很重要的作用,这篇博客主要是理解configuration的来源,以及各种不同类型的configuration source是如何被 ...

  7. linux设备驱动编写入门

    linux设备驱动是什么,我个人的理解是liunx有用户态和内核态,用户空间中是不能直接对设备的外设进行使用而内核态中却可以,这时我们需要在内核空间中将需要的外设驱动起来供用户空间使用.linux的驱 ...

  8. CRM系统个性化定制的对企业的优势作用

    伴随着科学技术的不断发展,企业信息化建设也在持续地开展.企业管理模式已经开始由传统模式向信息化转变,并且越来越多的企业开始使用互联网软件来进行辅助管理,这一趋势也让CRM客户管理系统得到快速的发展.市 ...

  9. Java核心基础第2篇-Java基本语法

    Java基本语法 本章一起来探讨下Java的基本语法.主要从以下几个方面展开: Java关键字 Java标识符 Java变量 Java数据类型 Java运算符 学完本章内容之后,我们对Java会有更深 ...

  10. VMware-克隆虚拟机(CentOS7)

    采用克隆完整克隆 修改系统参数,除了IP和主机名以外. 第一步 修改mac地址 在虚拟机还未启动之前,先修改该系统的mac地址,如下操作所示. 生成新的mac地址 修改主机名(reboot后生效) $ ...