一、文件操作

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 23 20:59:49 2020 @author: root
""" import os
import fnmatch # example
for f_name in os.listdir('/tmp/some_directory'):
if fnmatch.fnmatch(f_name, '*.txt'):
print (f_name) # 例如,在UNIX shell中使用 mv *.py python_files 移动所有 .py 扩展名 的文件
# 从当前目录到 python_files 。这 * 是一个通配符表示任意数量的字符,*.py
# 是一个全模式。Windows操作系统中不提供此shell功能。
# 但 glob 模块在Python中添加了此功能,使得Windows程序可以使用这个特性。
# 这里有一个使用 glob 模块在当前目录下查询所有Python代码文 import glob
print (glob.glob('*.py')) for name in glob.glob('*[0-9]*.txt'):
print (name) import os
# data_file = '/tmp/some_directory/demo1.txt'
# if os.path.is_file(data_file):
# os.remove(data_file)
# else:
# print (f'Error: {data_file} not a valid filename') # f = open('/tmp/some_directory/demo1.txt','rb+')
# print(f.read()) ##直接打印出来
# print(f.readline()) ##打印第一行
# print(f.readlines())
# print(f.readline(),end='')
# print(f.readlines(),end='')
# print([line.strip() for line in f.readlines()])
# f.write('python 8888888888')
# f.close() import string
import random
def create_mac():
mac='01-AF-3B'
for i in range(3):
n=random.sample(string.hexdigits,2)
sn='-'+''.join(n).upper()
mac+=sn
return mac with open('\tmp\some_directory\demo9.txt','w+') as f:
for i in range(100):
mac=create_mac()
print (mac)
f.write(mac+'\n')
f.close() with open('\tmp\some_directory\demo9.txt') as f:
#使用这种文件的打开方式更加简单了,同时可以避免忘记关闭文件的情况
print('9999999999999999',f.read())

在现代Python版本中,可以使用 os.scandir() 和 pathlib.Path 来替代 os.listdir() 。

os.scandir() 在Python 3.5 中被引用,其文档为 PEP 471 。

os.scandir() 调用时返回一个迭代器而不是一个列表。

import os
entries = os.scandir('my_directory')
print(entries) ScandirIterator 指向了当前目录中的所有条目。你可以遍历迭代器的内容,并打印文件名。 import os
with os.scandir('my_directory') as entries:
for entry in entries:
print(entry.name)

案例:

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

代碼:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 24 23:13:49 2020 @author: root
有两个文件,每个都有很多行ip地址,求出两个文件中相同的ip地址
要点就是:(1)用with (2)处理行末的'\n' (3)使用二分查找提高算法效率。(4)使用set快速去重。
""" import bisect
b= open('/tmp/some_directory/demo9.txt', 'w')
with open('/tmp/some_directory/test1.txt','r') as f1:
list1=f1.readlines()
print (list1)
for i in range(len(list1)):
list1[i]=list1[i].strip('\n') with open('/tmp/some_directory/test2.txt','r') as f2:
list2=f2.readlines()
print (list2)
for i in range(len(list2)):
list2[i]=list2[i].strip('\n') list2.sort()
l_2=len(list2)
same_data=[]
for i in list1:
pos = bisect.bisect_left(list2, i)
if pos<len(list2) and list2[pos]==i:
same_data.append(i)
b.write(i+'\n')
same_data=list(set(same_data))
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. 微信小程序 -- 基于 movable-view 实现拖拽排序

    微信小程序 -- 基于 movable-view 实现拖拽排序 项目基于colorui样式组件 ColorUI组件库 (color-ui.com) 1.实现效果 2. 设计思路 movable-vie ...

  2. 【逆向&渗透实战】Dump内存中的Dex_我是如何脱壳某公司加固过的Apk并利用其API渗透对方数据库

    /作者:Kali_MG1937 QQ:3496925334 CNBLOG博客号:ALDYS4/ 某天午睡,朦朦胧胧梦到给学校提供建站模板的公司有个注射点 梦醒后,我凭借着零散的记忆日进了对面的数据库, ...

  3. 【NX二次开发】Block UI 选择节点

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...

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

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

  5. 散列数据结构以及在HashMap中的应用

    1. 为什么需要散列表? 对于线性表和链表而言,访问表中的元素,时间复杂度均为O(n).即便是通过树结构存储数据,时间复杂度也为O(logn).那么有没有一种方式可以将这个时间复杂度降为O(1)呢?当 ...

  6. [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark

    [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (10) --- run on spark ...

  7. 【问答分享第一弹】MySQL锁总结:MySQL行锁、表锁、排他锁、共享锁的特点

    大家好,我是小于哥哈.前几天能分享了第一期面试题,MySQL 中有哪几种锁 和 这些锁各有哪些特点 ,这道面试题是经常会被问到的一个面试题,大家反馈的都挺不错的.今天特此来总结一下. 首发于公众号[终 ...

  8. CRM的职能和主要构成模块探索

    CRM客户管理系统是随着互联网的快速发展和信息技术的进步而发展起来的,是企业管理客户关系.优化业务流程的首选.客户关系管理可以存储企业获得的客户信息,方便业务人员随时查看和了解客户需求:客户关系管理可 ...

  9. 深入理解 SynchronizationContext

    深入理解 SynchronizationContext 目录 深入理解 SynchronizationContext SynchronizationContext(后续以SC简称) 是什么? 1.1 ...

  10. spring data jpa执行update和delete语句时报错处理

    之前项目中使用spring data jpa时,遇到删除记录的需求时,主要利用spring data中自带的delete()方法处理,最近在dao层使用delete sql语句时报错,代码如下: @Q ...